Linux 文件与目录属性管理总结
Linux 文件与目录属性管理
一、查看文件属性
使用ls -l
命令可查看文件 / 目录的详细属性,例如:
drwxr-xr-x. 3 root root 16 May 28 09:28 home
各字段含义:
d
:文件类型(d = 目录,-= 普通文件,l = 链接等)rwxr-xr-x
:权限位(分 3 组,分别对应所有者、所属组、其他用户)3
:引用计数(被引用的次数)root
:所有者(文件归属的用户)root
:所属组(文件归属的用户组)16
:大小(单位:字节 B)May 28 09:28
:创建 / 修改时间home
:文件名 / 目录名
二、文件权限基础
权限分为读(r)、写(w)、执行(x),对应字符与数字表示:
权限 | 字符表示 | 数字表示 | 含义(文件) | 含义(目录) |
---|---|---|---|---|
读 | r | 4 | 查看文件内容 | 列出目录内容 |
写 | w | 2 | 修改文件内容 | 创建 / 删除目录内文件 |
执行 | x | 1 | 运行文件(脚本 / 程序) | 进入目录(cd) |
权限组合示例:
rwx
(4+2+1=7):读写执行权限rw-
(4+2=6):读写权限r-x
(4+1=5):读和执行权限
三、修改文件权限(chmod 命令)
用于修改所有者、所属组或其他用户的权限,支持两种方式:
1. 数值方式
格式:chmod [数值] 文件名
数值由 3 位组成(分别对应所有者、所属组、其他用户),每一位为权限数字之和
示例:
chmod 777 test1
:所有者、所属组、其他用户均获读写执行权限(7=4+2+1)chmod 640 test2
:所有者读写(6),所属组读(4),其他用户无权限(0)
2. 字母方式
格式:chmod [用户类型][操作][权限] 文件名
- 用户型:
a
(所有用户)、u
(所有者)、g
(所属组)、o
(其他用户) - 操作:
+
(增加权限)、-
(移除权限)、=
(设置唯一权限)
示例:
chmod g+w test3
:给所属组增加写权限chmod o-rwx test4
:移除其他用户的所有权限chmod u+x test5
:给所有者增加执行权限chmod a+rw test6
:所有用户增加读写权限chmod ug=r test7
:所有者和所属组仅保留读权限
3. 递归修改目录权限
加-R
参数可对目录及其子目录 / 文件批量修改权限:
chmod -R g+w /home/testdir/
:给/home/testdir/
目录下所有内容的所属组增加写权限
四、修改所有者 / 所属组(chown、chgrp)
- chown:修改所有者(可同时修改所属组)
- chgrp:仅修改所属组
- 加
-R
参数递归修改目录内容
常用命令:
chown 用户名 文件名
:修改所有者
例:chown linux /home/test6
(将 test6 的所有者改为 linux)chown 用户名:组名 文件名
:同时修改所有者和所属组
例:chown linux:linux /home/test7
(所有者和所属组均改为 linux)chgrp 组名 文件名
:修改所属组
例:chgrp linux /home/test8
(将 test8 的所属组改为 linux)- 递归修改:
chgrp -R linux /home/test9/
(递归修改 test9 目录下所有内容的所属组为 linux)
五、特殊权限(suid、sgid、sticky)
特殊权限在普通权限位前增加一位,用于特殊场景:
1. suid(u+s,数值 4)
- 作用:应用于二进制文件,执行该文件时以文件所有者身份运行(而非执行者身份)
- 设置:
chmod u+s /usr/bin/mkdir
或chmod 4755 /usr/bin/mkdir
2. sgid(g+s,数值 2)
- 作用:
- 对二进制文件:执行时以所属组身份运行
- 对目录:目录内新建的文件 / 目录自动继承该目录的所属组
- 设置:
chmod g+s /tmp/test
或chmod 2755 /tmp/test
3. sticky(o+t,数值 1)
- 作用:应用于目录,拥有写入权限的用户(root 除外)仅能删除自己创建的文件 / 目录
- 设置:
chmod o+t /tmp/test
或chmod 1777 /tmp/test
六、默认权限与 umask
新建文件 / 目录的默认权限由umask
(权限掩码)决定,规则:
- 目录最大默认权限为 777,文件为 666(默认无执行权限)
- 实际权限 = 最大权限 - umask 值
不同用户的默认 umask:
- root 用户:umask=0022
- 新建目录:777 - 022 = 755
- 新建文件:666 - 022 = 644
- 普通用户:umask=0002
- 新建目录:777 - 002 = 775
- 新建文件:666 - 002 = 664
七、ACL 权限(访问控制列表)
用于给特定用户 / 组赋予特定权限(突破所有者 / 所属组 / 其他用户的三类限制),通过setfacl
命令管理
常用操作:
- 给特定用户设置权限:
setfacl -m u:用户名:权限 文件/目录
例:setfacl -m u:admin:rw a
(允许 admin 用户读写文件 a) - 给特定组设置权限:
setfacl -m g:组名:权限 文件/目录
例:setfacl -m g:lisi:rw a
(允许 lisi 组读写文件 a) - 目录权限及继承(新建文件 / 目录自动继承权限):
- 给目录设置权限:
setfacl -m u:admin:rwx b/
- 设置继承:
setfacl -m d:u:admin:rwx b/
(d 表示 default,默认继承)
- 给目录设置权限:
- 移除权限:
- 删除目录的默认继承权限:
setfacl -k b/
- 删除文件的所有 ACL 权限:
setfacl -b a
- 删除目录的默认继承权限: