文件权限
权限作用
1.允许指定的用户进行文件访问
2.允许创建用户组属于该组的成员可以访问
3.允许系统中的任意用户可以进行访问
权限说明
对于文件
r是只允许读取数据 例如:cat
w只允许读取数据 例如:vim echo
x允许执行 执行的命令 或者脚本
对于目录
r查看目录下的子目录或者文件 例如:ls
w对文件夹创建或者删除新的文件或者目录 例如:mkdir touch mv rm cp
x进入目录 例如:cd
文件拥有者
UGO:所属用户---所属组---其余用户
所属用户
属于创建该文件的用户 该用户对于该文件拥有一切权限 所有者可以允许其所属组的的其余用户访问所有者的文件
所属组
所属组是一组具有相同属性或者权限的逻辑集合 例如:我们想允许100个用户拥有修改a.txt这个文件的权限 可以逐个赋予改100个用户权限 但是显然用户数量过多修改繁琐 我们可以通过创建一个组 该组拥有修改a.txt的权限 在将这100个用户加入该组 于是该100个用户拥有修改a.txt这个文件的权限
其余用户
系统内其他的所有者用户就是other类
常见文件权限组成
rwx --- ---:
文件所有者拥有读写执行的权限 所属组与其他成员无任何权限
rwx r-- r--:
文件所有者具有读写执行的权限 所属组与其余用户拥有读取的权限
drwx--x—x
目彔所有者具有读写不迚入目彔的权限,其他用户近能迚入该目彔,却无法读取任何数据
drwx------:
除了目彔所有者具有完整的权限之外,其他用户对该目彔完全没有任何权限。
特点
你以什么用户登录创建文件 则该用户会自动成为文件的所有者
文件属主与属组修改
chown
改变文件或者目录的属主
chown 用户 文件名 比如: chown admin a.txt 把文件的属主和属组改为 admin
chown :组名 文件名 比如: chown :admin a.txt
chown 用户名 :组名 文件名 比如:chown root root a.txt
chgrp
修改文件默认的默认属组
修改权限
chmod
作用
修改文件或者目录的权限
u:对文件的所有者进行操作
g:对用户所属组进行操作
O:对于其余用户进行操作
操作符
+:对文件添加权限
-:减少权限
=:直接设定某个权限
使用八进制操作权限
作用
通过数字进行修改权限
表示方法
r=4 w=2 x=1
rw- 的值是多少 答: 4+2=6
rwx r-x r-x 的值是多少 答: rwx=4+2+1=7 ; r-x=4+1=5 rwx r-x r-x=755
文件的特殊权限
SUID
作用
程序执行时候从程序的执行者拥有程序拥有者的权限
限定
其只能设置在二进制可执行的程序上面 对目录无效果
SUID设置
u+s 或者u=4
临时权限
SUID一般作用在可执行文件上 当执行文件的时候会临时拥有文件所有者的权限
在上图中普通用户并没有对密码进行修改的权限 那么当用户进行修改的时候 如何修改成功的呢
上图对用户SR进行密码修改
SGID
作用
在设置了 SGID 权限的目彔下建立文件时,新创建的文件的所属组会继承上级目彔的权限
限定
可以给可执行的程序设置 也可以给目录设置
[root@SR ~]mkdir test
[root@SR ~]ll -d test
drwxr-xr-x 2 root root 4096 Jan 24 20:14 test
[root@SR ~] chmod g+s test
[root@SR ~] !ll
ll -d test
drwxr-sr-x 2 root root 4096 Jan 24 20:14 test
测试: sgid 效果
[root@SR ~]chown :bin test/
[root@SR ~] touch test/a.txt
[root@SR ~] ll !$
ll test/a.txt
-rw-r--r-- 1 root bin 0 Jan 24 20:15 test/a.txt
Stickybit
作用
目录下创建的文件 只有root 文件拥有者 目录所有者才能删除
限定
只能作用于目录
例: 系统中的 tmp 目彔就是这样
[root@SR ~]# ll -d /tmp/
drwxrwxrwt. 11 root root 4096 Jan 24 19:41 /tmp/
用法:
chmod o+t /tmp/test
文件扩展权限ACl
作用
可以单独为某个用户再次进行额外权限的添加
例 2: 给目彔加扩展权限
[root@SR ~]# mkdir /tmp/test
#setfacl -m d:u:user1:rwx /tmp/test #d 默认在就是有这个权限
例 3:给目彔下所有文件都加扩展权限
[root@SR ~]# setfacl -R -m u:lee:rw- testdirectory/ #-R 一定要在-m 前面,表示
目彔下所有文件
[root@SR ~]# setfacl -x u:user1 /tmp/a.txt # 去掉单个权限
[root@SR ~]# setfacl -b /tmp/a.txt # 去掉所有 acl 权限
创建一个不允许被删除的文件
创建一个不能被删除的文件
[root@SR ~]# touch ./test/a.txt
[root@SR ~]# chattr +i ./test/a.txt
[root@SR ~]# rm -fr ./test/a.txt
rm: 无法删除'./test/a.txt': 不允许的操作
从 REHL6 开始,新增加文件系统扩展属性:
命令: chattr
参数: a 只能追加内容 ; i 丌能被修改
+a: 只能追加内容 如: echo aaa >> hack.sh
+i:即 Immutable,系统丌允许对这个文件迚行任何的修改。如果目彔具有这个属性,那举任何的
迚程只能修改目彔之下的文件,丌允许建立和删除文件。
注: immutable [ɪˈmju:təbl] 丌可改变的 ; Append [əˈpend] 追加
-i :移除 i 参数。 -a :移除 a 参数
解决:
[root@SR ~]# lsattr hack.sh
----i----------- hack.sh
[root@SR ~]# chattr -i hack.sh
[root@SR ~]# echo aa >> hack.sh
[root@SR ~]# lsattr hack.sh #查看扩展属性
---------------- hack.sh
[root@SR ~]# chat
chat chattr
[root@SR ~]# chattr +a hack.sh
[root@SR ~]# rm -rf hack.sh
rm: 无法删除"hack.sh": 丌允许的操作
[root@SR ~]# echo aaa >> hack.sh