零基础Linux入门教程:Linux 权限管理
文章目录
一、Linux 权限概念
1. 用户分类
-
超级用户(
root
)- 拥有系统中的最高权限,可以执行任何操作,例如删除系统文件、修改权限、安装软件等。
- 命令行提示符为
#
,通常以root
用户身份登录需谨慎操作,避免误删或破坏系统文件。 - 使用超级用户身份的切换:
su # 切换到 root 用户(需输入 root 密码) sudo su # 使用当前用户的 sudo 权限切换到 root(需当前用户有 sudo 权限)
注意:
sudo
的安全性更高,推荐优先使用。 -
普通用户
- 权限受限,无法执行涉及系统安全或重要设置的操作(如安装系统级软件、操作系统目录
/etc
等)。 - 命令行提示符为
$
,适用于日常操作(如编辑个人文件、运行普通程序)。
- 权限受限,无法执行涉及系统安全或重要设置的操作(如安装系统级软件、操作系统目录
2. 文件访问者分类
文件在 Linux 中有三种访问者,每种访问者可以设置不同权限:
-
用户(
u
,Owner)- 文件的拥有者。通常是创建该文件的用户,但可以使用
chown
命令更改文件的拥有者。
- 文件的拥有者。通常是创建该文件的用户,但可以使用
-
组(
g
,Group)- 文件的所属用户组(Group)。组内的所有用户共享该文件的“组权限”。
- 一个文件只能归属于一个组。通过
chgrp
可以更改文件的所属组。
-
其他用户(
o
,Others)- 除“文件拥有者”和“文件所属组”之外的所有其他用户,权限独立设置。
文件访问者的权限可以通过 ls -l
查看。例如:
drwxr-xr-- 2 user group 4096 Nov 26 12:34 mydir
上面表示:
user
是文件拥有者(u
),group
是文件所属组(g
),- 其他用户(
o
)对该文件的权限显示为r--
。
3. 文件类型
文件在 Linux 系统中的类型,通过 ls -l
的第一个字符表示:
-
:普通文件(regular file),如文本文件、二进制文件。d
:目录(directory),相当于 Windows 的文件夹。l
:符号链接(soft link),类似于 Windows 的快捷方式,指向其他文件或目录。b
:块设备(block device),如硬盘分区文件。c
:字符设备(character device),如键盘、串口设备。p
:管道(pipe),用于进程间通信。s
:套接字(socket),用于网络通信。
drwx------
,第一个字符为d
,表示改文件是一个目录,即文件夹。
4. 权限表示
Linux 中的权限分为三种基本权限:
-
读(
r
,read)- 对文件:表示可以读取文件内容。
- 对目录:表示可以查看目录内容(
ls
命令)。 - 值为 4。
-
写(
w
,write)- 对文件:表示可以修改文件内容。
- 对目录:表示可以在目录内创建、删除或修改文件。
- 值为 2。
-
执行(
x
,execute)- 对文件:表示可以运行该文件(需为可执行文件,如脚本或二进制程序)。
- 对目录:表示可以进入该目录(
cd
命令)。 - 值为 1。
5. 权限表示的结构
文件权限由 三组权限字段 组成,每组对应文件访问者:用户(u
)、组(g
)、其他用户(o
)。
- 例如:
rwxr-xr--
表示:- 用户(u):
rwx
= 读+写+执行(值为7
) - 组(g):
r-x
= 读+执行(值为5
) - 其他用户(o):
r--
= 读(值为4
)
- 用户(u):
6. 八进制权限
通过权限字段的二进制值求和,可得出对应的八进制表示:
- rwxr-xr– → 7 5 4
rwx
=111
= 7r-x
=101
= 5r--
=100
= 4
八进制权限可以直接用在 chmod
命令中设置权限:
chmod 754 myfile
此命令将 myfile
的权限设置为 用户可读写执行,组用户可读执行,其他用户仅可读。
示例:文件权限一览
命令:
ls -l
输出:
-rw-r--r-- 1 user group 1234 Nov 26 12:00 file.txt
drwxr-xr-x 2 user group 4096 Nov 26 12:30 folder
解释:
-rw-r--r--
:普通文件,用户可读写,组和其他用户仅可读。drwxr-xr-x
:目录,用户可读写执行,组和其他用户可读执行。
二、权限管理命令
1. chmod:修改文件或目录权限
chmod
是用来修改文件或目录的访问权限的命令。权限可以用符号模式或八进制模式表示。
命令格式:
chmod [选项] 模式 文件
- 符号模式:
通过u
(用户)、g
(组)、o
(其他用户)、a
(全部用户)指定作用范围,结合+
(添加权限)、-
(移除权限)和=
(设置权限)操作符来设置权限。
示例:
chmod u+rwx file # 给文件的用户增加读写执行权限
chmod g-w file # 移除文件对组用户的写权限
chmod o=rx file # 设置其他用户仅具有读和执行权限
chmod a+x file # 为所有访问者添加执行权限
- 八进制模式:
使用八进制数值直接设置u/g/o
的权限。
示例:
chmod 755 file # 将权限设置为 rwxr-xr-x
chmod 644 file # 将权限设置为 rw-r--r--
chmod -R 755 dir # 递归设置目录及其子文件权限
- 选项:
-R
:递归修改目录和子文件的权限。-v
:显示每个文件权限更改的详细信息。-c
:只显示已更改的文件权限。
2. chown:修改文件的拥有者
chown
用于更改文件或目录的拥有者或所属组。超级用户(root
)权限才能操作。
命令格式:
chown [选项] 拥有者[:组] 文件
- 改变拥有者:
chown user file # 将文件的拥有者改为 user
- 改变拥有者和组:
chown user:group file # 同时改变文件的拥有者和所属组
- 只改变组:
如果只想改变组而保持拥有者不变:
chown :group file # 将文件的组改为 group
- 递归操作:
chown -R user:group dir # 递归修改目录及其子文件的拥有者和组
- 选项:
-R
:递归修改目录和子文件。-v
:显示修改后的详细信息。
3. chgrp:修改文件的所属组
chgrp
用于修改文件或目录的所属组,需目标组对用户可用。
命令格式:
chgrp [选项] 组 文件
- 改变所属组:
chgrp group file # 将文件的组改为 group
- 递归操作:
chgrp -R group dir # 递归修改目录及其子文件的组
- 选项:
-R
:递归修改。-v
:显示详细信息。
4. umask:设置默认权限掩码
umask
命令用于设置新创建文件或目录的默认权限掩码。
命令格式:
umask [掩码值]
-
权限掩码计算规则:
- 新文件默认权限为
666
(无执行权限)。 - 新目录默认权限为
777
。 - 实际权限 = 默认权限 - 掩码值。
- 新文件默认权限为
-
查看当前掩码:
umask # 显示当前掩码值(如 022)
- 设置掩码值:
umask 022 # 设置新文件权限为 644,新目录权限为 755
- 应用实例:
如果掩码值是077
:- 新文件权限为
600
(只有用户可读写)。 - 新目录权限为
700
(只有用户可读写执行)。
- 新文件权限为
权限管理命令的典型用法总结:
命令 | 用途 | 示例 |
---|---|---|
chmod | 修改文件/目录权限 | chmod 755 file ,chmod u+w file |
chown | 修改文件拥有者和所属组 | chown user:group file ,chown -R user:group dir |
chgrp | 修改文件的所属组 | chgrp group file ,chgrp -R group dir |
umask | 设置新文件/目录的默认权限掩码 | umask 022 ,umask 077 |
通过合理使用以上命令,可以高效地管理 Linux 系统中的文件权限。
三、特殊权限:粘滞位(Sticky Bit)
1. 粘滞位的作用
粘滞位是一种特殊权限,主要用于目录。它确保只有以下两类用户才能删除或移动该目录下的文件或子目录:
- 文件的拥有者。
- 目录的拥有者(或超级用户
root
)。
这项权限通常用于公共目录,防止其他用户误删或恶意删除别人的文件。例如,Linux 系统中的 /tmp
目录就是粘滞位的典型应用场景。
2. 粘滞位的设置和移除
粘滞位可以通过 chmod
命令启用或禁用,使用符号模式或八进制模式设置。
命令格式:
chmod +t directory # 设置粘滞位
chmod -t directory # 移除粘滞位
chmod 1755 directory # 使用八进制设置,1 表示启用粘滞位
示例:
mkdir /public # 创建一个公共目录
chmod 777 /public # 为目录设置所有用户的读、写、执行权限
chmod +t /public # 为该目录添加粘滞位
3. 粘滞位的权限表示
使用 ls -ld
命令查看目录权限时,粘滞位以字符 t
的形式显示在权限字符串的最后一位:
t
:表示启用了粘滞位,且目录对用户有执行权限。T
:表示启用了粘滞位,但目录对用户没有执行权限。
示例:
ls -ld /tmp
drwxrwxrwt 14 root root 4096 Nov 27 /tmp
在这里:
drwxrwxrwt
表示/tmp
是一个目录。- 权限字符串最后的
t
表示粘滞位已启用。
4. 粘滞位的作用场景
粘滞位的典型用途是保护公共目录中的文件。例如:
/tmp
目录:
系统中的/tmp
是一个临时文件存放目录,允许所有用户创建和访问文件。如果没有粘滞位,其他用户可以删除或移动非自己的文件,造成混乱。- 公共项目目录:
在共享工作环境中,团队成员可能需要访问同一个目录,但应避免删除他人的文件。
5. 注意事项
-
仅对目录有效:
粘滞位只对目录有效,对普通文件无作用。即使对文件设置了粘滞位,它也不会影响文件的删除或操作权限。 -
不能防止修改文件内容:
粘滞位不限制其他用户修改文件内容,只限制文件的删除和移动权限。 -
与基本权限配合使用:
如果目录权限设置为700
,即只有拥有者可以访问,则粘滞位没有实际意义;只有在目录对多个用户开放时(如777
)才需要启用粘滞位。
6. 八进制模式设置粘滞位
在八进制权限中,粘滞位的值为 1
,设置时添加到最前面的高位:
- 目录权限示例:
777
:目录具有所有权限,无粘滞位。1777
:目录具有所有权限并启用了粘滞位。
chmod 1777 /shared # 为目录设置 rwxrwxrwt 权限
chmod 1770 /shared # 设置 rwxrwx--T(仅组用户和所有者可操作,启用粘滞位)
特性 | 说明 |
---|---|
作用范围 | 只对目录有效。 |
功能 | 限制非拥有者删除或移动目录下的文件或子目录。 |
权限显示 | t 表示启用且可执行,T 表示启用但不可执行。 |
典型应用场景 | /tmp 目录、公共共享目录。 |
设置命令(符号模式) | chmod +t directory |
设置命令(八进制模式) | chmod 1777 directory |