Linux 权限与所有者管理完全指南


Linux 权限与所有者管理完全指南

基础介绍

权限 (Permissions)

在Linux系统中,权限控制决定了用户和进程能够访问、修改和执行哪些文件和目录。每个文件和目录都关联着一组权限,分别对应于文件所有者 (Owner)、所属用户组 (Group) 和其他用户 (Others)。

工作原理简图:

1
2
文件/目录  -->  [所有者权限 | 所属组权限 | 其他用户权限]
例如: [rwx | r-x | r-- ]
  • r (read): 读权限,允许查看文件内容或列出目录内容。
  • w (write): 写权限,允许修改文件内容或在目录中创建、删除文件。
  • x (execute): 执行权限,允许运行程序或进入目录。

权限在Linux系统中的作用至关重要,它能确保:

  • 数据安全: 防止未授权访问敏感信息。
  • 系统稳定: 阻止恶意程序破坏系统。
  • 多用户协作: 提供细粒度的访问控制,允许多用户安全地共享资源。

所有者 (Owner) 和 所属组 (Group)

每个文件或目录都有一个所有者和一个所属组:

  • 所有者 (Owner): 通常是创建文件的用户,拥有最高的权限。
  • 所属组 (Group): 一组用户的集合,组内成员共享相同的权限。

通过合理设置所有者和所属组,可以方便地管理用户对文件和目录的访问权限。

常用命令

命令 参数 说明 使用频率
chmod [ugoa][+-=][rwx][0-7]{3} 修改文件或目录的权限。u (user), g (group), o (others), a (all)。+ 添加权限, - 删除权限, = 设置权限。数字表示法直接设定权限。 ★★★★
chown user[:group] file 更改文件或目录的所有者和/或所属组。 ★★★☆
chgrp group file 更改文件或目录的所属组。 ★★☆☆
ls -l 以长格式显示文件和目录的详细信息,包括权限、所有者、所属组等。 ★★★★
umask [000-777] 设置创建文件和目录时的默认权限掩码。 ★★☆☆

⚠️ 高危操作警告: 使用 chmod -R 777chown -R user:group / 可能导致系统安全问题,请谨慎操作!

示例代码

示例 1: 修改文件权限

假设我们有一个名为 data.txt 的文件,当前权限如下:

1
2
ls -l data.txt
# 输出: -rw-r--r-- 1 user group 1024 Oct 26 10:00 data.txt

现在,我们想给所有者添加执行权限,给所属组添加写权限,可以使用 chmod 命令:

1
chmod u+x,g+w data.txt

或者使用数字表示法:

1
chmod 764 data.txt  # 7 (rwx) for owner, 6 (rw-) for group, 4 (r--) for others

验证权限是否已修改:

1
2
ls -l data.txt
# 输出: -rwxrwxr-- 1 user group 1024 Oct 26 10:00 data.txt

示例 2: 更改文件所有者和所属组

假设我们要将 data.txt 的所有者改为 newuser,所属组改为 newgroup

1
chown newuser:newgroup data.txt

验证所有者和所属组是否已修改:

1
2
ls -l data.txt
# 输出: -rwxrwxr-- 1 newuser newgroup 1024 Oct 26 10:00 data.txt

如果只想更改所有者,可以省略组:

1
chown newuser data.txt

如果只想更改所属组:

1
chgrp newgroup data.txt

示例 3: 使用 umask 设置默认权限

umask 命令用于设置创建文件和目录时的权限掩码。权限掩码是一个三位八进制数,用于从默认权限中移除相应的权限。

例如,默认情况下,新创建的文件权限为 666 (rw-rw-rw-),新创建的目录权限为 777 (rwxrwxrwx)。

如果 umask 设置为 022,则:

  • 文件权限 = 666 - 022 = 644 (rw-r–r–)
  • 目录权限 = 777 - 022 = 755 (rwxr-xr-x)

查看当前的 umask 值:

1
2
umask
# 输出: 0022

临时修改 umask 值:

1
2
umask 077
# 之后创建的文件和目录的权限将受到影响

⚠️ 注意: umask 的更改只对当前会话有效。要永久修改,需要修改 shell 配置文件(如 .bashrc.zshrc)。

Metadata

  • Tags: Linux, 权限管理, 所有者, 用户组, chmod, chown, chgrp, umask
  • Categories: 系统管理, 权限控制, 用户管理

文章作者: 达朵
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 达朵 !
  目录