Linux文件服務器權限:基本權限、特殊權限、隱藏權限、高級權限,這裏先說前三者權限
基本權限
[root@desktop0 ~]# ll
-rw-------. 1 root root 8619 May 7 2014 anaconda-ks.cfg
第一個字符表示文件類型,後面的字符以三三分,分別表示所有者的權限,所屬組的權限,其他用戶的權限
第一個字符:1文件類型 - 普通文件 d 目錄 l 鏈接 b 塊設備 c 字符設備
後面三三分類的每一個佔位符分別爲read(r),write(w),execute(e)
修改文件所有者和所在組
chown student anaconda-ks.cfg 將anaconda-ks.cfg修改爲student用戶
修改所在組
chgrp student anaconda-ks.cfg
chown :root anaconda-ks.cfg
同時修改所屬者和所在組
chown student:student anaconda-ks.cfg
修改某個目錄下的所有文件或目錄的所有者
chown -R root /etc -r:recursive 遞歸
使用戶不屬於某個組
gpasswd -d 用戶名 組名
修改文件權限:
字母方式:
如:chmod u=rwx,go=rw anaconda-ks.cfg 將anaconda-ks.cfg文件的所有者權限修改爲rwx,將所屬組和其他用戶修改爲rw權限
如:chmod u+x anaconda-ks.cfg 將anaconda-ks.cfg文件的所有者權限添加執行權限
如:chmod a-x anaconda-ks.cfg 所有用戶對anaconda-ks.cfg都將沒有執行權限
如:chmod a=rwx anaconda-ks.cfg 所有用戶對anaconda-ks.cfg都擁有rwx權限
數字方式:
r == 4 w == 2 r == 1
chmod 644 anaconda-ks.cfg 將anaconda-ks.cfg的所有者修改爲rw權限,將所屬組和其他用戶修改爲r權限
權限優先順序:
如果UID匹配,就應用用戶(user)權限,如果GID匹配,就應用所在組(group)權限,否則就應用(other)權限
默認情況下,root用戶創建一個文件的默認權限爲644(滿權限666-022),創建一個目錄的權限爲755(滿權限777-022);
普通用戶創建一個文件的權限爲664(滿權限666-002),創建一個目錄的權限爲775(滿權限777-002),
可以分別用root用戶和普通用戶使用umask命令查看一個值:root用戶爲0022,普通用戶爲0002
022轉換爲二進制是 000 010 010 取反後是 111 101 101 ,文件的滿權限是666,二進制是110 110 110,兩者相與結果爲:110 100 100 轉換爲十進制爲644
特殊權限:
setuid = u+s
針對文件,必須是應用程序,且有x權限,以擁有者決定
[root@desktop0 ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jan 30 2014 /usr/bin/passwd
可以看到root用戶有一個s權限
[root@desktop0 ~]# ll /etc/shadow
----------. 1 root root 1148 Jan 7 2015 /etc/shadow
我們修改student用戶密碼需要修改/etc/shadow文件,但是查看該文件任何用戶都沒用任何權限,之所以student用戶能修改密碼,是因爲修改該文件走的是所有者的權限,即root用戶權限,即使沒用基本權限,對root來說一樣可以修改。這就是student用戶的特殊權限
再舉一個例子:當student用戶cat /etc/shadow時沒有任何權限(因爲/etc/shadow本來對用戶就沒有任何權限),這時我們切換到root用戶,使用命令chmod u+s /usr/bin/cat,再切換回student用戶,就可以cat出shadow中的內容
find / -perm -4000 -ls 查找系統中所有u+s的程序
setgid = g+s
針對文件,必須是應用程序,且有x權限,以所屬組決定
針對目錄,必須對用戶有wx權限,內部新文件所屬組將和目錄所屬組一樣
舉例:假設student用戶屬於manager組,現在用student用戶創建一個public文件夾,使用test用戶(屬於test組)在public中創建一個文件test.txt,可以看到test.txt所屬組是test組,然後切換到root用戶,使用chmod g+s /public/ 將public所屬組添加特殊權限,然後切換到test用戶,在public下創建student.txt文件,ll查看該文件,結果該文件的所屬組繼承了student所屬組,所屬組爲manager,而不是test組
舉例:ll /usr/bin/touch,可以看到所屬組是root,當我們使用chmod g+s /usr/bin/touch後,其他用戶使用touch創建的文件的所屬組也是root(該特殊權限就是將文件交給了root來創建)
sticky bit = 0+t:爲了解決不合理的現象,如:chmod 777 /public,如:任何用戶可以刪除任何用戶創建的文件
針對目錄,且他人必須有wx權限,只有root和擁有者才能刪除文件
基本權限對於超級用戶來說是沒用的,即使沒用基本權限,也可以操作
隱藏權限:爲了提高系統的安全性,不是所有的目錄都能使用chattr,如:./dev /tmp /var
文件系統級的權限
修改文件系統級屬性命令:chattr
主要參數:
+ 激活某個屬性
- 失效某個屬性
= 指定某個屬性
a 表示append only,追加,對文件使用該屬性表示只允許在該文件中增加數據而不允許刪除數據
i 表示immutable,不可改變,激活了該屬性的文件不能修改,更不能刪除,即使root用戶強制操作也不行 如:chattr +i /etc/hosts
S 表示Sync,一旦修改了該文件,系統立即把修改的文件存盤
可以使用lsattr 文件名 查看擁有的屬性