2015年9月23日 星期三

Linux 第六章

Linux 系統權限的程序控制

Linux系統檔案權限

權限                 對檔案的影響                         對目錄的影響

r(read)              可以讀取檔案的內容             可以列出目錄裡檔案的名稱

w(write)           可以改變檔案的內容             可以對目錄裡所有的檔案進行新增或刪除

x(execute)        可以藉由命令執行檔案         可以訪問目錄下的內容

命令系統檔案權限的管理

更改 當案/目錄 權限

方法象徵性的關鍵字:
#cmd whowhatwhich file|directory
who is     u,g,o,a (for user, group, other, all)
what is    +, -, = (for add, remove, set exactly)
which is  r, w, x (for read, write, executable)          
p.s,  如果r改成R並且是對目錄的話,將會對整個目錄包括裡面的目錄數進行權限更改
p.s.  如果x改成X將會對只個目錄,以及底下的檔案進行權限更改


#chmod

數字的方法:
#chmod ### file|directry
每個#符號代表一個訪問權限等級:user, group, other.
# is sum of  r = 4, w = 2, x = 1.

範例:
#chmod go-rw file1    //把file1的group and other的r(read) and w(write)權限都去掉
#chmod a+x file2        //把file2 的全部使等級的使用者都增加x(execute)
#chmod 750 sampledir //把sampledir的 user權限w,r,x都開啟,group權限只開啟r,x在other的部分都不開

#chown

ex. #chown student foofile    //將foofile的擁有者改變成student
ex. #chown - R student foodir  //將foodir包括裡面所有的檔案及目錄登更改成student使用者的
ex. #chown :admins foodir    //將foodir的群組權限改為admins
ex. #chown visitor:guests foodir  //將foodir的擁有者以及群組權限分別改為visitor and guests

p.s.只有root可以改變所有的使用權限,非root只可以改變屬於自己群組的權限

特殊檔案權限

特殊檔案權限    

u+s (suid)  
set user id
僅對檔案的影響>>  SUID 權限僅對二進位程式(binary program)有效;
                                  執行者對於該程式需要具有 x 的可執行權限;                                                                                      本權限僅在執行該程式的過程中有效 (run-time);                               
                                  執行者將具有該程式擁有者 (owner) 的權限;


g+s (sgid)                  
set group id    
  針對目錄時>>      使用者若對於此目錄具有 r 與 x 的權限時,該使用者能夠進入此目錄;
                                 使用者在此目錄下的有效群組(effective group)將會變成該目錄的群組;
                                 用途:若使用者在此目錄下具有 w 的權限(可以新建檔案),則使用者所建                                    立的新檔案,該新檔案的群組與此目錄的群組相同
針對檔案時>>         SGID 對二進位程式有用;
                                 程式執行者對於該程式來說,需具備 x 的權限;
                                 執行者在執行的過程中將會獲得該程式群組的支援;

o+t (sticky)
僅針對目錄>>         當使用者對於此目錄具有 w, x 權限,亦即具有寫入的權限時;
                                  當使用者在該目錄下建立檔案或目錄時,僅有自己與 root 才有權力刪除該                                   檔案
ex.當甲這個使用者於 A 目錄是具有群組或其他人的身份,並且擁有該目錄 w 的權限, 這表示『甲使用者對該目錄內任何人建立的目錄或檔案均可進行 "刪除/更名/搬移" 等動作。』 不過,如果將 A 目錄加上了 SBIT 的權限項目時, 則甲只能夠針對自己建立的檔案或目錄進行刪除/更名/移動等動作,而無法刪除他人的檔案。



  • SUID/SGID/SBIT 權限設定
前面介紹過 SUID 與 SGID 的功能,那麼如何設定檔案使成為具有 SUID 與 SGID 的權限呢? 這就需要第五章的數字更改權限的方法了! 現在你應該已經知道數字型態更改權限的方式為『三個數字』的組合, 那麼如果在這三個數字之前再加上一個數字的話,最前面的那個數字就代表這幾個權限了!
  • 4 為 SUID
  • 2 為 SGID
  • 1 為 SBIT

假設要將一個檔案權限改為『-rwsr-xr-x』時,由於 s 在使用者權限中,所以是 SUID ,因此, 在原先的 755 之前還要加上 4 ,也就是:『 chmod 4755 filename 』來設定!此外,還有大 S 與大 T 的產生喔!

[root@study ~]# cd /tmp
[root@study tmp]# touch test                  <==建立一個測試用空檔
[root@study tmp]# chmod 4755 test; ls -l test <==加入具有 SUID 的權限
-rwsr-xr-x 1 root root 0 Jun 16 02:53 test
[root@study tmp]# chmod 6755 test; ls -l test <==加入具有 SUID/SGID 的權限
-rwsr-sr-x 1 root root 0 Jun 16 02:53 test
[root@study tmp]# chmod 1755 test; ls -l test <==加入 SBIT 的功能!
-rwxr-xr-t 1 root root 0 Jun 16 02:53 test
[root@study tmp]# chmod 7666 test; ls -l test <==具有空的 SUID/SGID 權限
-rwSrwSrwT 1 root root 0 Jun 16 02:53 test

因為 s 與 t 都是取代 x 這個權限的,但是你有沒有發現阿,我們是下達 7666 喔!也就是說, user, group 以及 others 都沒有 x 這個可執行的標誌( 因為 666 嘛 ),所以,這個 S, T 代表的就是『空的』啦!怎麼說? SUID 是表示『該檔案在執行的時候,具有檔案擁有者的權限』,但是檔案 擁有者都無法執行了,哪裡來的權限給其他人使用?當然就是空的啦! ^_^


預設權限

當我們mkdir 的時候就會給予預設的權限,如何查看預設的權限呢?
就要使用
[root@study ~]# umask
0022             <==與一般權限有關的是後面三個數字!
[root@study ~]# umask -S
u=rwx,g=rx,o=rx

為什麼會顯示0022四個權限,是因為第一個是特殊權限,像是目錄的話,權限的前面會顯示d

因為 umask 為 022 ,所以 user 並沒有被拿掉任何權限,不過 group 與 others 的權限被拿掉了 2 (也就是 w 這個權限),那麼當使用者:
  • 建立檔案時:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
  • 建立目錄時:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
不相信嗎?我們就來測試看看吧!
[root@study ~]# umask
0022
[root@study ~]# touch test1
[root@study ~]# mkdir test2
[root@study ~]# ll -d test*
-rw-r--r--. 1 root root 0  6月 16 01:11 test1
drwxr-xr-x. 2 root root 6  6月 16 01:11 test2

可以用# umask 後面加002把權限w遮掉(暫時),也可以進到/etc/bashrc的.bashrc檔案,將預設權限遮罩改掉

2015年9月6日 星期日

Linux 第五章

管理Linux本地的使用者與群組

使用者與群組

#id  //可以顯示當下的使用者資訊
#ls -l /tmp //顯示檔案或目錄 與關聯的使用者資訊
#ps au //顯示shell當下執行的程序的使用者
#su <username>//可以切換使用者
#su - <username> //切換使用者,連同環境參數
#sudo //可以暫時得到root的特權,不過所有的動作被記錄在/var/log/secure,可以使用sudo的user是有被限定的,他的名單在/etc/sudoers

使用者id的資料會被記錄在/etc/passwd,格式如下
username:  password:  uid:  gid:  gecos:  /home/dir:  shell


使用者得密碼則會被記錄在/etc/shadow
群組的資訊會被記錄在/etc/group

使用者的新增,修改,刪除

#useradd
#userdel
#usermod

uid 0             一定是superuser,但是不一定是root
uid 1~200     由redhat自訂
uid 201~999 若使用者有系統帳號需求時,可以使用的帳號 UID
uid 1000+     給一般使用者用的


群組的新增,修改,刪除

#groupadd //-r option 會自動加上gid
#groupmod
#groupdel

Shadow 密碼以及密碼策略

如果打開shadow會看到一串看起來像亂碼的東西
他們是用:來分開的,欄位分別是
1.name  2.password  3.lastchange  4.minage  5.maxage  6.waring  7.inactive  8.expire  9.blank
1.帳號名稱 2.密碼 3.最近更動密碼的日期 4.密碼不可被更動的日期 5.密碼需要被更動的日期
6.密碼需被變更期限前的警告天數 7.密碼過期後的寬限天數 8.帳號失效日期 9.保留


可以用#chage 來更改 

-d = 更改最近更動密碼的日期,如果輸入0,那使用者將會在下次登入時強制要求變更密碼
-m = 更改密碼不可被更動的日期
-M = 更改密碼需要被更動的日期
-W = 更改密碼需被變更期限前的警告天數
-I= 更改密碼過期後的寬限天數
-E = 指定帳到的失效日期 YYYY-MM-DD
-l = 列出使用者的當下設定