一,管理目录和文件属性
1、查看文件属性 ls -l
例:drwxr-xr-x. 3 root root 16 May 28 09:28 home
d:文件类型
rwx:所有者的权限
r-x:所属组的权限
r-x:其他用户的权限3:引用计数
root:所有者
root:所属组
16:大小,单位为字节B
May 28 09:28 创建时间
home 目录或者文件名
2、文件权限
读 写 执行
字符表示 r w x
数字表示 4 2 1
3、设置修改文件权限
chmod命令
格式:
chmod [对象][操作][权限] 文件名
或chmod 数字 文件名
。# 符号方式:给所有者添加执行权限,移除其他人的写权限 chmod u+x,o-w file.txt # 数字方式:设置权限为rwxr-xr--(所有者7,组5,其他人4) chmod 754 file.txt # 对目录递归设置权限(所有子文件/目录继承) chmod -R 750 /data
3.1 使用数值改变文件的权限
chmod 777 test1 ---给test1文件的所有者、所属组、其他用户全部给与读写执行的权限。
3.2 使用字母来改变文件的权限
-----参数设置
a 所有用户
u 创建者
g 同组用户
o 除去创建者和同组用户之外的用户
+ 增加权限
- 清除权限
= 设置唯一权限
-----常用设置
g+w -- 增加组用户的写权限
o-rwx -- 清除其他用户的全部访问权限
u+x -- 允许文件属主执行文件
a+rw -- 允许所有用户读和写文件
ug+r -- 允许文件属主和属组用户读文件
g=rx -- 设置属组用户只能读和执行文件(不可写)
通过增加 -R 参数,可以改变整个目录树的权限。
chmod o+w test2 ---给test2文件的其他用户添加写的权限
chmod go-rw test3 ---给test3文件的所属组和其他用户移除读写权限
chmod a-rw test4 ---给test4文件所有的用户移除读写权限
chmod -R g+w /home/test5/
给home目录下面的test5目录下所有的文件和目录的所属组添加写的权限
4、修改目录或文件的所有者或者所属组
chown 设置文件或者目录的所有者
chgrp 设置文件或者目录的所属组
-R:递归
chown 【所有者】 【文件】
chown 【所有者】:【所属组】 【文件】
例子:chown linux /home/test6
chown linux:linux /home/test7
chgrp linux /home/test8
chgrp -R linux /home/test9/
5. 特殊权限
1.suid(u+s) 应用于二进制文件,调用二进制文件的所有者的身份来执行
原理:当一个可执行文件设置 SUID 后,普通用户执行该文件时,会临时获得文件所有者的权限(而非执行者自身权限)。
典型场景:
passwd
命令(路径/usr/bin/passwd
),其所有者是 root,且设置了 SUID。普通用户执行passwd
时,会临时获得 root 权限,从而修改/etc/passwd
(仅 root 可写的文件)。# 符号方式:给文件添加SUID chmod u+s /usr/bin/myprogram # 数字方式:SUID对应数字4,权限格式为4位(4xxx) chmod 4755 /usr/bin/myprogram # 4(SUID)+ 755(基础权限)
注意:
- 仅对可执行文件有效(对目录无效)。
- 危险操作:避免对
rm
、bash
等命令设置 SUID,可能导致权限滥用。2. SGID(Set Group ID,
g+s
)
原理:
- 对可执行文件:执行时临时获得文件所属组的权限。
- 对目录:在该目录下新创建的文件 / 目录,会继承目录的所属组(而非创建者的主组),适合团队共享目录(确保组内成员可访问新文件)。
典型场景:团队共享目录
/project
,设置 SGID 后,无论谁在该目录创建文件,所属组都是project_team
,避免组权限混乱。配置方法:
# 符号方式:给目录添加SGID chmod g+s /project # 数字方式:SGID对应数字2,权限格式为4位(2xxx) chmod 2775 /project # 2(SGID)+ 775(基础权限)
3. Sticky Bit(
o+t
)
原理:仅对目录有效,设置后,目录中的文件仅能被所有者或root删除,其他用户即使有写权限也无法删除不属于自己的文件。
典型场景:公共临时目录
/tmp
,所有用户可读写,但不能删除他人文件(默认已设置 Sticky Bit)。配置方法:
# 符号方式:给目录添加Sticky Bit chmod o+t /public # 数字方式:Sticky Bit对应数字1,权限格式为4位(1xxx) chmod 1777 /public # 1(Sticky)+ 777(基础权限)
特殊权限的查看
在
ls -l
的权限字符串中,特殊权限显示在基础权限的对应位置:
- SUID:所有者的执行位显示
s
(若原无 x 权限则显示S
)。- SGID:组的执行位显示
s
(若原无 x 权限则显示S
)。- Sticky Bit:其他人的执行位显示
t
(若原无 x 权限则显示T
)。示例:
rwsr-xr-x
:文件设置了 SUID(所有者执行位为s
)。rwxr-sr-x
:目录设置了 SGID(组执行位为s
)。rwxrwxrwt
:目录设置了 Sticky Bit(其他人执行位为t
)默认情况下,root用户新建一个新的目录,该目录默认的访问权限为755
root用户新建一个文件,该文件默认的访问权限为644普通用户新建一个新的目录,该目录默认的访问权限为775
普通用户新建一个文件,该文件默认的访问权限为664
root用户的默认umask值为0022
普通用户默认的umask值为0002
ACL权限
给特定的用户或组对特定的文件或者目录赋予特定的权限只允许admin用户对文件a有读写权限
setfacl -m u:admin:rw a只允许lisi组对文件a有读写权限
setfacl -m g:lisi:rw a只允许admin用户对目录b/有读写权限
setfacl -m u:admin:rwx b/只允许lisi组队目录b/有读写权限
setfacl -m g:lisi:rwx b/只允许admin用户对目录b/有读写权限,且在目录b/下新建的文件或目录
继承目录b/的权限
setfacl -m u:admin:rwx b/
setfacl -m d:u:admin:rwx b/删除目录b/的default权限(删除继承)
setfacl -k b/删除文件a的acl权限
setfacl -b a