目录

(图像由AI生成)
在前面的章节中,我们介绍了Linux的一些基本指令和操作。这一节我们将深入探讨Linux系统中的权限管理,这是保障系统安全和正常运行的关键环节。通过对权限管理的理解和掌握,可以有效地保护系统文件和数据,避免不必要的安全风险。
在Linux中,Shell是用户与操作系统之间的重要桥梁。虽然我们无法直接与Linux内核(kernel)交互,但可以通过Shell与其进行沟通。Shell的主要功能是解释用户输入的命令并将其传递给内核,执行相应的操作。
Shell的工作原理可以简单归纳为以下几点:
与Windows的图形用户界面(GUI)不同,Linux通过命令行界面(CLI)与用户进行交互,这使得操作更加灵活和强大。用户可以通过输入命令来执行各种任务,例如文件管理、系统监控和网络配置等。
Shell在Linux中的作用主要体现在以下方面:
在Linux系统中,权限管理是保证系统安全和稳定运行的重要机制。权限控制决定了谁可以访问、修改或执行文件和目录。
用户分类
Linux中的用户分为三类:
权限类型
每个文件和目录都具有三种基本权限:
通过理解这些基本概念和权限类型,用户可以更有效地管理和保护Linux系统中的资源。
示例命令
su命令,并输入root用户的密码。这使得用户可以临时获得超级用户权限,执行需要更高权限的操作。在Linux系统中,文件和目录的访问者被分类为三种类型:
例如,在下图中:

可以看到每个文件和目录的权限设置,包括所有者、所属组以及其他用户的权限。
Linux系统中的文件类型主要包括:
如3.1中截图所示,不同的文件类型(具体为每行的第一个字符)在权限显示中有不同的表示方式。如install.sh为“-”,表示普通文件;linux_learning为“d”,表示目录(文件夹)。
每个文件和目录都有三种基本权限:
在3.1的示例截图中:(注:每行第2-4字符为“所有者”权限,5-7为“所属组”权限,8-10为“其他用户”权限)
-rw-rw-r--表示普通文件install.sh的权限,其中所有者和所属组都有读写权限,而其他用户只有读权限。drwxrwxr-x表示目录linux_learning的权限,其中所有者和所属组都有读写执行权限,而其他用户只有读和执行权限。文件权限可以通过字符来表示,每个权限用三个字符表示,分别对应读(r)、写(w)、和执行(x)。以下是不同权限组合的字符表示方法:
| Linux表示 | 说明 | Linux表示 | 说明 |
|---|---|---|---|
| r-- | 只读 | -w- | 仅可写 |
| --x | 仅可执行 | rw- | 可读可写 |
| -wx | 可写和可执行 | r-x | 可读可执行 |
| rwx | 可读可写可执行 | --- | 无权限 |
文件权限也可以用八进制和二进制数字来表示。以下是不同权限符号对应的八进制和二进制表示方法:
| 权限符号 (读写执行) | 八进制 | 二进制 |
|---|---|---|
| r | 4 | 100 |
| w | 2 | 010 |
| x | 1 | 001 |
| rw | 6 | 110 |
| rx | 5 | 101 |
| wx | 3 | 011 |
| rwx | 7 | 111 |
| --- | 0 | 000 |
通过以上两种表示方法,可以清晰地理解和设置Linux系统中文件的访问权限。字符表示法直观易懂,而八进制/二进制表示法则在权限设置命令中更加简洁和高效。
在Linux系统中,文件和目录的访问权限可以通过多种命令进行设置。以下是常用的命令和其使用方法。
chmod命令用于设置文件的访问权限。其基本格式为:
chmod [参数] 权限 文件名
常用选项:
-R:递归修改目录及其文件的权限。说明:只有文件的所有者和root用户才可以改变文件的权限。
使用符号表示法,可以通过以下符号来设置权限:
+:向权限范围增加权限代号所表示的权限。-:向权限范围取消权限代号所表示的权限。=:向权限范围赋予权限代号所表示的权限。用户符号:
u:所有者g:所有者同组用户o:其他用户a:所有用户实例:
/home/abc.txt的所有者增加写权限: chmod u+w /home/abc.txt /home/abc.txt对其他用户的执行权限: chmod o-x /home/abc.txt 使用八进制数字表示法,可以一次性设置所有权限。(如忘记,可返回阅读3.3.2八进制/二进制数字表示)注意:第一、二、三个八进制数字分别代表所有者、所属组和其他用户的权限。
实例:
/home/abc.txt的权限为所有者读写,组用户和其他用户只读: chmod 644 /home/abc.txt /home/abc.txt的权限为所有者读写,组用户只读,其他用户无权限: chmod 640 /home/abc.txt chown命令用于修改文件的所有者。其基本格式为:
chown [参数] 用户名 文件名
实例:
f1的所有者改为用户user1: chown user1 f1 filegroup1及其文件的所有者为用户user1: chown -R user1 filegroup1 chgrp命令用于修改文件或目录的所属组。其基本格式为:
chgrp [参数] 用户组名 文件名
常用选项:
-R:递归修改文件或目录的所属组。实例:
f1的所属组改为组group1: chgrp group1 f1 filegroup1及其文件的所属组为组group1: chgrp -R group1 filegroup1 umask命令用于查看或修改文件权限掩码(umask)。创建新文件或目录时,系统默认权限会受到umask值的影响。
新建文件的默认权限是0666(即所有用户都有读写权限),新建目录的默认权限是0777(即所有用户都有读写和执行权限)。然而,实际创建的文件和目录的权限往往不是这些默认值,这是因为它们受到了umask的影响。
假设默认权限是mask,实际创建的文件权限是:mask & ~umask。
格式:
umask 权限值
说明: 将现有的权限值减去权限掩码值后,即可产生建立文件时的预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
实例:
查看当前umask值:
umask 设置umask值为755:
umask 755 通过设置umask值,可以控制新建文件和目录的默认权限,从而提高系统的安全性和管理的灵活性。例如,设置umask值为0022,意味着新建文件的默认权限将从0666变为0644(即所有者有读写权限,组和其他用户只有读权限),新建目录的默认权限将从0777变为0755(即所有者有读写执行权限,组和其他用户有读执行权限)。
这对于系统管理员和开发者来说,是一种有效的权限管理方式,可以确保新建文件和目录的安全性,同时减少不必要的权限设置操作。
file命令用于识别文件类型,它通过检查文件的头部信息和内容来确定文件的具体类型。该命令在文件管理和系统维护中非常有用。
功能:辨识文件类型。
语法:
file [选项] 文件或目录...
常用选项:
-c:详细显示指令执行过程,便于排错或分析程序执行的情况。-z:尝试去解读压缩文件的内容。示例:
file /etc/passwd
这条命令将输出文件/etc/passwd的类型,例如“ASCII text”。
sudo命令允许系统管理员将权限授予普通用户,从而让他们能够执行特定的系统命令。下面介绍如何配置和使用sudo命令。
/etc/sudoers 文件分配权限要配置sudo权限,需要编辑/etc/sudoers文件。建议使用visudo命令进行编辑,以避免语法错误。
步骤:
/etc/sudoers文件权限,使其只有所有者可读写: chmod 740 /etc/sudoers visudo命令编辑/etc/sudoers文件: vi /etc/sudoers 在/etc/sudoers文件中,可以添加如下行来授予用户特定权限:
username ALL=(ALL) ALL
这样配置后,用户username将拥有执行所有命令的权限。
sudo 调用授权的命令配置完成后,用户可以使用sudo命令来执行需要权限的操作。
语法:
sudo -u 用户名 命令
示例:
root用户权限添加用户u2: sudo -u root /usr/sbin/useradd u2 通过使用sudo命令,系统管理员可以有效地控制用户权限,确保系统的安全性和稳定性。
目录在Linux系统中不仅仅是存放文件的地方,它们也有自己的权限设置。理解目录权限对于有效管理系统资源和保证安全至关重要。
目录的权限和文件类似,分为读(r)、写(w)和执行(x)三种,但它们的作用有所不同:
cd命令进入该目录。ls命令查看目录中的文件内容。举个例子:
粘滞位(Sticky Bit)是目录权限的一种特殊设置,它限制了目录中文件的删除权限。通常,任何用户如果对某个目录具有写权限,都可以删除该目录中的文件。然而,启用了粘滞位的目录中,只有文件的所有者、目录的所有者或超级用户才能删除文件。
设置粘滞位的命令是chmod +t。例如:
chmod +t /home
设置粘滞位后,可以使用ls -ld命令查看目录权限:
ls -ld /home
输出结果将显示粘滞位设置,如下所示:
drwxrwxrwt 3 root root 4096 9月 19 16:00 /home/
下面是一个示例,展示了粘滞位的作用:
给目录/home添加粘滞位:
chmod +t /home 查看目录权限:
ls -ld /home 尝试删除其他用户的文件:
su - litao rm /home/abc.c 如果文件不是当前用户创建的,将会出现以下提示,无法删除:
rm: 无法删除“/home/abc.c”:不允许的操作
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由以下三种情况之一删除:
通过以上设置和管理,可以有效防止用户意外删除其他用户的重要文件,保证系统的安全和稳定。
通过本篇博客,我们深入了解了Linux权限管理的各个方面,从基本的权限概念到具体的命令操作,再到特殊的粘滞位设置。这些知识不仅帮助我们有效管理系统文件和目录,确保系统安全和稳定运行,也为我们的日常操作提供了有力支持。希望这些内容能为你在实际工作中带来帮助,让你在Linux系统管理中更加得心应手。