权限

chmod

权限常用人群代替字母
u 用户
g 组内其他用户
o 其他用户
a 所有人群

单独指定某一类用户权限例如

chmod u+x,o+x file1 给用户添加执行权限,给用户同组用户添加执行权限
+x表示添加执行权限
-x表示删除执行权限
a+x 表示 u g o 都添加执行权限

r: 4
w: 2
x: 1
chmod rwxrwxrwx file2 = chmod 777 file3 给所有人设置777权限
推荐前面的方式,不用算数字避免出错

acl权限


1.设置权限
  setfacl -m u:user1:rwx feil1
  给用户--user1分配读写执行权限
  setfacl -m o:user1:rwx file1
  给user1组成员设置rwx权限
实际的一个例子
Setfacl –m u:mysql:rwx –R /usr/local/mysql 
Setfacl –m d:u:mysql:rwx –R /usr/local/mysql
用acl来让mysql用户对/usr/local/mysql目录具有所有权限
因为mysql目录是数据库来操作只需要让这个目录的执行者具有权限即可
2.获得指定文件权限
  getfacl -e file 或者(getfacl 文件名/目录名)
3.删除某一个acl权限
  setfacl -x u:user1 file1--对user1用户删除当前目录下file1文件的权限
4.删除所有acl权限
  setfacl -b file
5.设置acl的默认权限
  setfacl -m d:u:user1:rwx test
  #当前目录的子目录会集成目录的acl权限

特殊权限

前面我们学习过linux的基本权限,但如果只有基本权限,可能无法满足各式各样的要求

例如:建立一个公共目录 任何人都可以在目录里建立自己的文件,但只能删除自己的文件,此时基本权限就无能为力了.

如果你想要完成这种需求就必须要借助linux的特殊权限;

这类特殊权限共有三种; suid=4 sgid=2 sticky=1

suid sgid sticky 模式值
on on on 7
on on off 6
on off on 5
on off off 4
off on on 3
off on off 2
off off on 1
off off off 0

设置方法

chmod u+s filename # 对应suid

chmod g+s filename # 对应sgid

chmod o+t filename # 对应sticky

chmod 4755 filename 其中第一位的4 作用和 chmod u+s 一样





那现在来看下第一个特殊权限 SUID=4
         限定:只能设置在二进制可执行程序上,对目录无效和文本无效
         功能:不管谁来执行程序,linux都以程序的拥有者身份进入权限获取流程中从而决定存取权限,相当于权限下发
         特征:在uesr位的x显示为S或s,s代表包含了x权限,S代表未包含x权限
试验演示:
         试验一: 用户修改密码借助root身份
  # ll /usr/bin/passwd
             -rwsr-xr-x 1 root root  /usr/bin/passwd
         # chmod u-s /usr/bin/passwd
         # ll /usr/bin/passwd
             -rwxr-xr-x 1 root root  /usr/bin/passwd
         # su - aming
         $ passwd
             Changing password for user seker.
             Changing password for seker
             (current) UNIX password:
             passwd: Authentication token manipulation error
         $
         试验二:用户无法读取/etc/shadow,借用root身份使用cat命令则可
         # ll /etc/shadow
          ---------- 1 root root  /etc/shadow
         # su - aming
         $ cat /etc/shadow
             cat: /etc/shadow: 权限不够
         $ exit
             logout
         # chmod u+s /bin/cat
         # su - aming
         $ cat /etc/shadow
             root:$1$EV/a2BnK$pRN0qjwqLf8zvpK8w1MFT.:14360:0:99999:7:::
了解了SUID,我们再来看看SGID=2
         限定:SGID既可以作用于二进制文件又可以作用于目录,但两者的意义却截然不同
         功能:
         先说在二进制文件上,与前面讲的SUID类似:不管是谁来执行,都以文件的所属组身份来决定权限
         大家自己测试,跟suid一样
         再说作用于目录上:默认情况下用户建立文件时,文件的所属组是用户的主组,如果在设置了SGID目录下建立文件,则文件的所属组是继承目录的属组,并且新建立的目录也继承g+s权限
         特征:在group位的x显示为S或s,s代表包含了x权限,S代表未包含x权
         试验一:
         # mkdir /public
         # chmod 777 /public
         # chmod g+s /public
         # su - lishiming
         $ cd /public
         $ mkdir lishiming
         $ ls -l lishiming -d
             -rwxr-xr-x 1 lishiming root lishiming
         $ touch sgid_yes
         $ ll sgid_yes
             -rw-rw-r-- 1 lishiming root sgid_yes

sticky 冒险位(黏贴位)=1
         限定:只作用于目录
         功能:任何人都可以在一个目录下建立文件,却只有root和建立者本人才可以删除文件
         特征:在other位的x显示为T或t,t代表包含了x权限,T代表未包含x权限
         
         # chmod o+t /public
              drwxrwxrwt 5 root root /public
         # su - lishiming
         $ cd /public
              -rw-r--r-- 1 leiqin leiqin test-file
         $ rm -rf test-file
              rm: 无法删除 “test-file”: 不允许的操作 (充分说明lishiming这个账户在/public目录下无法删除leiqin这个用户的文件,虽然/public的目录权限是777)
      试验一: 请童鞋们自己去创建一个目录/opt/public,让任何人都能在这个目录下创建文件和目录,但只有创建者本人和root可以删除,其他人没有权限

设定方法:
         chmod u+s file
         chmod g+s dir/file
         chmod o+t dir
修改文件的特殊属性 
命令 : chattr

语法: chattr  [+-=][ASaci [文件或者目录名]

‘+-=’ : 分别为增加、减少、设定

‘A’ : 增加该属性后,文件或目录的atime将不可被修改;

‘S’ : 增加该属性后,会将数据同步写入磁盘中;

‘a’ : 增加该属性后,只能追加不能删除,非root用户不能设定该属性;

‘c’ : 自动压缩该文件,读取时会自动解压;

‘i’ : 增加后,使文件不能被删除、重命名、设定链接接、写入、新增数据;

lsattr
该命令用来读取文件或者目录的特殊权限,语法为 lsattr  [-aR] [文件/目录名]

‘-a’ : 类似与ls 的-a 选项,即连同隐藏文件一同列出;

‘-R’ : 连同子目录的数据一同列出

[root@localhost ~]# lsattr test2
-----a-------e- test2/test1
----i--------e- test2/test3
-------------e- test2/test4
[root@localhost ~]# lsattr -aR test2
----i--------e- test2/.
-----a-------e- test2/test1
-------------e- test2/..
----i--------e- test2/test3
-------------e- test2/test4