在linux的多用戶環境中,爲保證不同用戶的文件/目錄不被管理員以外的用戶刪除,從而影響工作效率,因而
不同用戶對不同文件有着不同權限。
文件所有者owner:
文件擁有者所屬組:團隊協作的項目,對某些文件,組成員必然擁有特殊的權限
其他人:
下面是管理員家目錄下的文件
[root@localhost cc]# ls -Al
總計 48
drwxr-xr-x 3 root root 4096 01-21 13:06 fetion_spring
-rw-r--r-- 1 root root 59 01-21 12:56 fetion_spring.exe
drwxr-xr-x 3 root root 4096 01-21 12:30 fetion_summer
-rw-r--r-- 1 root root 62 01-21 12:47 fetion_summer.exe
-rw-r--r-- 1 root root 259 01-21 12:48 f_spring-summer.exe.patch
-rw-r--r-- 1 root root 1498 01-21 12:37 f_spring-summer.patch
權限 屬主 屬組 文件大小 修改時間 文件名
大家仔細觀察fetion_spring的權限是drwxr-xr-x
文件類型 文件屬主權限 文件屬組權限 其他人權限
d r w x r - x r - x
目錄 讀 寫 執行 讀 不可寫 執行 讀 不可寫 執行
[root@localhost cc]# ll test //查看test權限
-rw-r--r-- 1 root root 0 01-22 10:48 test
[root@localhost cc]# chmod u+x test//給屬主user增加執行權限
[root@localhost cc]# ll test
-rwxr--r-- 1 root root 0 01-22 10:48 test//屬主有讀寫執行權限
[root@localhost cc]# ll test
-rwxr--r-- 1 root root 0 01-22 10:48 test
[root@localhost cc]# chmod g+w test//給屬組增加寫的權限
[root@localhost cc]# ll test
-rwxrw-r-- 1 root root 0 01-22 10:48 test
[root@localhost cc]# ll test
-rwxrw-r-- 1 root root 0 01-22 10:48 test
[root@localhost cc]# chmod o+w test//給其他人增加寫的權限
[root@localhost cc]# ll test
-rwxrw-rw- 1 root root 0 01-22 10:48 test
[root@localhost cc]# chmod a-w test//給所有的all 屬主 屬組 其他人 去除寫的權限
[root@localhost cc]# ll test
-r-xr--r-- 1 root root 0 01-22 10:48 test
可以用等號對相應的權限進行賦值
[root@localhost cc]# ll test
-r-xr--r-- 1 root root 0 01-22 10:48 test
[root@localhost cc]# chmod u=rw,g=r,o=r test
[root@localhost cc]# ll test
-rw-r--r-- 1 root root 0 01-22 10:48 test
我們可以用數字表示權限 有權限相應位表示爲1 沒有的話相應位表示爲0
如果一個文件的屬主的權限是rwx則表示爲111=7,類似的rw-表示爲110=6
[root@localhost cc]# chmod 777 test//改變權限
[root@localhost cc]# ll test
-rwxrwxrwx 1 root root 0 01-22 10:48 test
改變屬主是其他人
[root@localhost cc]# ll test
-rwxrwxrwx 1 root root 0 01-22 10:48 test
[root@localhost cc]# chown lover test
[root@localhost cc]# ll test
-rwxrwxrwx 1 lover root 0 01-22 10:48 test
如果是改變目錄需加上參數-R
改變屬主是其他組
[root@localhost cc]# chgrp wife test
[root@localhost cc]# ll test
-rwxrwxrwx 1 lover wife 0 01-22 10:48 test
可以使用chown同時改文件的用戶和屬組
[root@localhost cc]# chown root:root test用戶和組中間使用冒號隔開
[root@localhost cc]# ll test
-rwxrwxrwx 1 root root 0 01-22 10:48 test
[root@localhost cc]# chown lover.girls test用戶和組中間使用"."隔開
[root@localhost cc]# ll test
-rwxrwxrwx 1 lover girls 0 01-22 10:48 test
也可以使用chown改變文件的屬組
[root@localhost cc]# chown .root test
[root@localhost cc]# ll test
-rwxrwxrwx 1 lover root 0 01-22 10:48 test
[root@localhost cc]# chown .girls test
[root@localhost cc]# ll test
-rwxrwxrwx 1 lover girls 0 01-22 10:48 test
默認權限
當我們新建一個文件或者目錄時 會賦於其一個默認權限
[root@localhost cc]# mkdir abc
[root@localhost cc]# ll -d abc
drwxr-xr-x 2 root root 4096 01-22 11:16 abc
易知 當前權限是755
[root@localhost cc]# umask
0022
易知 文件默認權限是777-022
有些文件有特殊的屬性
例如:a 表示增加屬性後,表示只能增加數據,不能刪除數據,只有root才能設置這個屬性
i 增加這個屬性後,表示不能對文件或目錄刪除,修改、重命名。相當於寫保護。只有root 才能設置這個屬性
[root@localhost cc]# touch test
[root@localhost cc]# chattr +a test 增加a屬性
[root@localhost cc]# lsattr test 查看a屬性
-----a------- test
[root@localhost cc]# rm -f test
rm: 無法刪除 “test”: 不允許的操作 無法刪除
[root@localhost cc]# chattr -a test
[root@localhost cc]# lsattr test
------------- test
[root@localhost cc]# rm -f test //可以刪除文件
[root@localhost cc]# ls
abc fetion_summer f_spring-summer.patch
fetion_spring fetion_summer.exe
fetion_spring.exe f_spring-summer.exe.patch
可以增加內容到文件
[root@localhost cc]# which passwd
/usr/bin/passwd
[root@localhost cc]# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 22960 2006-07-17 /usr/bin/passwd
大家看到屬性屬主的權限中的x變爲s
說明文件被setuid了,意思是,其他用戶使用這條命令時 被賦予use[root@localhost cc]# setfacl -m u:lover:rw,g:wife:rwx a
[root@localhost cc]# getfacl a
# file: a
# owner: root
# group: root
user::rw-
user:lover:rw-
group::r--
group:wife:rwx
mask::rwx
other::r--
r的權限
setuid存在如下要求:
該文件是二進制可執行文件
user對文件有x權限
同理對於setgid文件。
用戶在執行該命令時,獲得用戶組的支持
[root@localhost cc]# touch love
[root@localhost cc]# chmod +s love
[root@localhost cc]# ll love
-rwSr-Sr-- 1 root root 0 01-22 11:52 love
[root@localhost cc]# chmod -s love
[root@localhost cc]# ll love
-rw-r--r-- 1 root root 0 01-22 11:52 love
[root@localhost cc]# chmod u+s love
[root@localhost cc]# ll love
-rwSr--r-- 1 root root 0 01-22 11:52 love
[root@localhost cc]# ll -d /tmp
drwxrwxrwt 12 root root 4096 01-22 08:03 /tmp
其他用戶的執行權限的x變成t sbit
意思是除了root和user本身或本組 其他人不得刪除
Suid sgid sbit 組成111
如果只有suid權限則爲100=4
如果有suid sgid 則爲110=6
[root@localhost cc]# ll /bin/mkdir
-rwxr-xr-x 1 root root 29852 2009-07-13 /bin/mkdir
[root@localhost cc]# chmod 7755 /bin/mkdir
[root@localhost cc]# ll /bin/mkdir
-rwsr-sr-t 1 root root 29852 2009-07-13 /bin/mkdir
[root@localhost cc]# chmod 755 /bin/mkdir
[root@localhost cc]# ll /bin/mkdir
-rwxr-xr-x 1 root root 29852 2009-07-13 /bin/mkdir
file access control lists
詳細規定了不同文件不同用戶的權限
setfacl
-m 新增規則
-x 刪除規則
[root@localhost cc]# setfacl -m u:lover:rw,g:wife:rwx a用逗號隔開
[root@localhost cc]# getfacl a
# file: a
# owner: root
# group: root
user::rw-//對於user的權限
user:lover:rw-
group::r--//對於屬組的權限
group:wife:rwx
mask::rwx
other::r--
[root@localhost cc]# setfacl -m m:r a
[root@localhost cc]# getfacl a
# file: a
# owner: root
# group: root
user::rw-
user:lover:rw- #effective:r--
group::r--
group:wife:rwx #effective:r--
mask::r--
other::r--