Linux文件权限管理:chmod修改权限 与 chown修改所有者
1、chmod
命令
chmod
(Change Mode)用于修改文件或目录的权限,控制“谁能做什么”。
1.1、涉及的概念
3+1种用户角色
角色 | 符号 | 描述 |
---|---|---|
所有者 | u | 文件的创建者或指定用户 |
所属组 | g | 文件关联的用户组 |
其他用户 | o | 系统中除所有者和所属组外的用户 |
所有用户 | a | 上述三者的合集(u+g+o ) |
3种权限
权限 | 符号 | 对文件的作用 | 对目录的作用 |
---|---|---|---|
读 | r | 查看文件内容 | 列出目录下的文件和子目录 |
写 | w | 修改文件内容 | 创建、删除、重命名目录内的文件 |
执行 | x | 运行可执行文件 | 进入目录(如 cd dir ) |
1.2、基本语法
支持两种配置模式:符号模式(直观易读,灵活增减权限)和八进制模式(高效快捷,快速设置权限 )。
1.2.1、符号模式
chmod [选项] 权限模式 文件名/目录名
选项:
-R
选项,递归修改目录下所有文件和子目录。
权限模式:
+
增加权限:如给所有者添加写权限u+w
-
移除权限:如给其他用户移除执行权限o-x
=
精确设置权限:如将所属组权限设为读+执行g=rx
示例:
- 给文件
data.txt
的所有者添加写权限:chmod u+w data.txt
- 给目录
project
的所有用户添加执行权限:chmod a+x project
- 将文件
script.sh
的所属组权限设为读+写,其他用户仅读:chmod g=rw,o=r script.sh
1.2.2、八进制模式
chmod [选项] 八进制权限 文件名/目录名
权限模式:
每个用户的权限组合可转换为三位八进制数。
读r=4
、写w=2
、执行x=1
,累加起来就是这个用户角色的权限。
- 所有者权限:读+写+执行 = 4+2+1 →
7
- 所属组权限:读+执行 = 4+1 →
5
- 其他用户权限:读 = 4 →
4
- 组合后的权限:
754
(对应u=rwx
,g=rx
,o=r
)。
示例:
- 设置目录
public
的权限为755
(所有者可读写执行,其他用户可读执行):chmod 755 public
- 递归修改目录
app
及其所有子文件/目录的权限为644
(文件可读可写,目录可读):chmod -R 644 app
1.3、注意
-
目录的执行权限:若目录无执行权限(
x
),用户无法进入目录(如cd dir
会报错),但仍可通过绝对路径访问目录内的文件(需文件本身有读权限)。 -
文件的执行权限:只有给文件添加
x
权限后,才能通过./file
运行脚本或二进制文件。 -
文件权限建议:
普通文件建议设置为644
(所有者可读写,其他用户可读)
可执行文件设置为755
-
目录权限建议:
公共目录建议设置为755
(所有者可读写执行,其他用户可读执行)
私人目录设置为700
(仅所有者可操作)。 -
避免使用
777
:
该权限允许所有用户读写执行,存在极大安全风险,仅在临时测试时使用。
2、chown
命令
chown
(Change Owner)用于更改文件或目录的所有者和所属组,控制“谁拥有文件”。
2.1、基本语法
chown [选项] 新所有者:新所属组 文件名/目录名
-R
选项,递归修改目录下所有文件和子目录
- 仅修改所有者:
chown new_user file.txt
- 同时修改所有者和所属组:
chown new_user:new_group dir/
- 仅修改所属组:
chown :new_group file
3、查看当前所有者和权限
通过 ls -l
命令查看文件、目录的详细信息。
示例:
查看code
目录的详细信息。
-
drwxr-xr-x
:d
,代表这是个目录rwx
,所有者的权限是“读、写、执行”r-x
:所属组的权限是“读、执行”r-x
:其他用户的权限是“读、执行”
-
ly:ly
:- 冒号前
ly
:用户名 - 冒号后
ly
:所属组
- 冒号前