权限
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