CodeGym /课程 /Docker SELF /访问权限基础:chmod, chown, umask

访问权限基础:chmod, chown, umask

Docker SELF
第 2 级 , 课程 0
可用

访问权限基础:chmod, chown, umask

1. 访问权限的概念

当你在 Linux 中处理文件或目录时,可能需要管理它们的访问权限。想象一下,你把自己的袜子放在大家都能看到的地方,现在家里的每个人都可以用它们!Linux 中的访问权限可以防止“未经授权使用袜子”(或者更重要的东西,比如你的脚本)。让我们开始了解吧。

Linux 中的每个文件(和目录)都有三组访问权限,它们决定了谁可以读取、写入或执行这些文件:

  1. 读取 (r): 允许查看文件内容或目录中的文件列表。
  2. 写入 (w): 允许修改文件内容或在目录中新建/删除文件。
  3. 执行 (x): 允许将文件作为程序执行(或进入某个目录)。

三层模型

每个权限适用于三组用户:

  • 所有者 (owner): 创建文件的人。
  • 组 (group): 被分配到文件的组中的用户。
  • 其他人 (others): 系统中剩余的所有用户。

文件的访问权限示例:

-rwxr-xr--

解析如下:

  • 第一个字符 - 表示这是一个文件(目录的话是 d)。
  • 前三个字符 rwx — 所有者的权限(读取、写入、执行)。
  • 接下来的三个字符 r-x — 组的权限(读取、执行)。
  • 最后三个字符 r-- — 其他人的权限(只读)。

2. 命令 chmod:管理访问权限

符号格式表示法

命令chmod修改文件和目录的访问权限。符号格式表示法如下:

chmod [谁][操作][权限] 文件名
  • 谁: u (拥有者), g (组), o (其他人), a (所有人)。
  • 操作: + (增加权限), - (移除权限), = (精确设置权限)。
  • 权限: r (读取), w (写入), x (执行)。

例子:


# 给所有人设置执行权限
chmod a+x script.sh

# 只给组添加写入权限
chmod g+w file.txt

# 移除其他人的读取权限
chmod o-r document.txt

八进制格式表示法

八进制格式(或称数字格式)更紧凑,但需要理解“数字魔法”。在这种格式中,每种权限组合表示为一个数字:

  • r = 4
  • w = 2
  • x = 1

权限叠加计算:

  • rwx = 7 (4 + 2 + 1)
  • rw- = 6 (4 + 2)
  • r-- = 4

格式书写方式:

chmod [数字][数字][数字] 文件名

例子:


# 设置拥有者rwx权限,组r-x权限,其他人r--权限
chmod 754 file.sh

3. 更改文件所有者:命令 chown

如果你需要将文件交给其他用户(或组),chown 命令可以帮上忙。

格式:

chown [用户]:[组] 文件名

示例:


# 转让所有权给用户 user1
chown user1 myfile.txt

# 转让所有者和组
chown user1:group1 myfile.txt

# 仅更改组
chown :group2 myfile.txt

4. 默认掩码: umask

当你创建一个文件时,它的访问权限是由系统决定的。例如,权限可能是rw-r--r--。但这些权限从哪来的呢?答案是: 来自命令umask

什么是umask

umask定义了哪些权限不会被设置给新创建的文件。

例如:

  • 文件的基本权限: 666 (无执行权限)。
  • 掩码: 022
  • 最终权限: 644 (666 - 022)。

命令:

  • 查看当前掩码: umask
  • 设置新掩码: umask 0022

示例:


# 设置掩码,使新文件具有 rw-rw-r--
umask 0002

5. 管理员权限和 sudo

什么是 sudo

sudo"superuser do" 的缩写)是 Linux 和类似 Unix 系统中的一个命令,允许用户以 超级用户(root)或具有更高权限的用户身份执行命令。

sudo 系统提供了一个临时访问管理员功能的方式,无需一直以 root 账户工作,从而降低了意外或恶意更改系统的风险。

重要!

简单来说,sudo 就是写在需要用管理员权限执行的命令前面。

sudo 是如何工作的?

执行命令:

当你输入带 sudo 的命令时,系统会检查你的用户是否有使用高权限执行命令的权利。

例如:

sudo apt update

认证:

在当前会话中首次使用 sudo 时,系统会要求输入当前用户的密码(不是 root 的密码)。

成功输入密码后,系统会在短时间内(通常是 5-15 分钟)记住认证状态,避免每次都需要输入密码。

执行命令:

如果用户拥有配置文件 sudo 中指定的权限,该命令将以超级用户的权限执行。

sudo 的主要功能和命令

以权限运行命令:

sudo <命令>

例如:

sudo apt install nginx

以其他用户身份运行命令: 使用标志 -u

sudo -u <用户名> <命令>

例如:

sudo -u user1 ls /home/user1

获取管理员终端: 启动 root 权限的 shell:

sudo -i

或者:

sudo su

查看 sudo 配置:

sudo -l

显示当前用户可以执行的命令。

编辑 sudo 配置:

sudo visudo

此命令会打开 /etc/sudoers 配置文件,提供一个安全的编辑环境。

6. 示例

来试着在实践中应用我们的知识。

任务 1: 使用 chmod 管理权限

  1. 创建一个文件:

    touch myfile.txt
    
  2. 为拥有者设置读取、写入和执行权限:

    chmod u+rwx myfile.txt
    
  3. 为其他人仅添加读取权限:

    chmod o+r myfile.txt
    
  4. 检查权限:

    ls -l myfile.txt
    

任务 2: 使用 chown 更改文件拥有者

  1. 创建一个文件:

    touch ownedfile.txt
    
  2. 将拥有者更改为用户 user1(需要管理员权限):

    sudo chown user1 ownedfile.txt
    
  3. 检查更改:

    ls -l ownedfile.txt
    

任务 3: 使用 umask 的实验

  1. 检查当前的掩码:

    umask
    
  2. 设置掩码为 027

    umask 027
    
  3. 创建一个新文件:

    touch newfile.txt
    
  4. 检查新文件的权限:

    ls -l newfile.txt
    

7. 常见错误和特点

  1. 忘记在更改所有者时使用 sudo 只有管理员可以更改文件的所有者。如果你收到 "Operation not permitted" 错误,试试加上 sudo
  2. chmod 命令顺序错误: 改了错误的对象权限。确保你选择了正确的文件或目录。
  3. umask 只影响新文件: 如果你试图用 umask 更改已有文件的权限,是行不通的。请用 chmod

你知道吗,Linux 中的权限非常灵活,你甚至可以创建一个文件,只有全宇宙中唯一一个人可以看到它?俗话说,权利越大,责任越大!现在,掌握了 chmod, chownumask,你已经准备好让你的 Linux 系统不仅方便,还超级安全啦。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION