在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--