linux查看文件权限一般使用ls -l 命令
第一个字符代表的是文件,连接或目录:
- 代表是文件
l 代表的是链接文件
d 代表的是目录
接下来的字符中每三个为一组,基本格式为 r w x 缺少那一项权限哪一项权限就为 -
第一组为文件所有者(user)第二组为文件所属组(group)第三组为其他用户(other)
权限项 | 可读 | 可写 | 可执行 | 可读 | 可写 | 可执行 | 可读 | 可写 | 可执行 |
字符表示 | r | w | x | r | w | x | r | w | x |
数字表示 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
权限分配 | 文件所有者 | 文件所有者 | 文件所有者 | 文件所属组 | 文件所属组 | 文件所属组 | 其他用户 | 其他用户 | 其他用户 |
使用 ll -d firename 查看目录权限 目录的权限一般为755 (rwx=7 r-x=5 r-x=5)
文件的权限一般为644 (rw=6 w=4 w=4)
chown
chown (change owner)是用来修改属主或属组,使用格式一般为
chown 属主 文件名 用来修改属主
chpwn :属组 文件名 用来修改属组
chown 属主:属组 文件名 用来修改属主和属组
chmod
chmod(change mode)用来改变用户的权限,一般格式为
chmod | u | +(添加) | r w x | 文件或目录 |
chmod | g | - (减去) | r w x | 文件或目录 |
chmod | o | =(等于) | r w x | 文件或目录 |
a |
例如当前文件夹ap,权限为755。
给它加满权限可以这样使用命令:
属组和其他组缺少w权限,只需要分别加上w权限,就可以实现满权限了。
或者直接设置目录权限为777就可以实现满权限
特殊权限
1.setUID权限
setUID权限仅适用于可执行文件,只要用户对设有suid的文件有执行权限,就能够使用户临时拥有所有者的权限。例如所有用户可以执行passwd来修改自己的用户密码,而用户密码保存在/etc/shadow文件中,它默认权限是000,就是说除了root用户之外,所有用户都没有查看或编辑的权限。但是在passwd加上suid权限,就可以让普通用户获得所有者身份,把密码写到shadow中。
如果对passwd取消UID权限,那么用户更改密码将修改不成功,因为没有权限把密码 写入到/etc/sahdow中。
2.setGID权限
setUID赋予用户的是文件所有者的权限,setGID赋予用户所属组权限。
setGID有两种应用场景:当对二进制程序进行设置时,能够让执行者临时获取文件所属组的权限;当对目录进行设置时,则是让目录内新建的文件自动继承该目录原有的用户组名称。
下面是对目录设置属组s权限演示:
[root@localhost tmp]# cd /tmp/
[root@localhost tmp]# mkdir rwx #创建测试文件夹
[root@localhost tmp]# chmod g+s rwx #给目录属组加上s权限
[root@localhost tmp]# ll -d rwx/
drwxr-sr-x. 2 root root 6 Sep 14 20:43 rwx/ #可以看到属组已经加上s了
[root@localhost tmp]# chmod 777 rwx/ #给目录权限设置为777,其他用户就可以修改文件了
[root@localhost tmp]# su - liu #切换其他用户
Last login: Thu Sep 14 20:44:04 PDT 2023 on pts/0
[liu@localhost ~]$ cd /tmp/rwx/ #切换到文件夹下
[liu@localhost rwx]$ touch 1.txt #创建文件
[liu@localhost rwx]$ ll
total 0
-rw-rw-r--. 1 liu root 0 Sep 14 20:49 1.txt #创建的文件属组为root,与目录/rwx属组一至
3.SBIT
SBIT权限称之为特殊权限位之粘滞位,只作用于目录,SBIT权限可以确保用户只能删除自己的文件,而不能删除其他用户的文件。只有root用户,目录创建者,目录所有者才能删除。
用法:
chmod o+t firename
4.setfacl
acl权限提供的是所有者,所有组,其他人的读\写\执行权限之外的特殊权限控制。使用setfacl命令可以对单一用户或者用户组,单一文件或目录来进行读\写\执行权限控制。
常用的使用方法:
getfacl filename/dirname #查看文件/目录的acl设置
setfacl -m u:username :rwx firename #针对用户给文件设置acl
setfacl -m g:grupname :rw firename #针对一个组给文件设置acl
setfacl -x u:username firename #取消用户的acl设置