Linux权限(0基础)
文章目录
- Linux权限
- 引言
- Linux系统中的权限概述
- 权限的作用
- 三种用户类别
- 权限的表示方法
- 字符表示法
- 数字表示法
- 常用权限管理命令
- 查看权限:ls
- 修改权限:chmod
- 数字方式示例
- 符号方式示例
- 修改所有者与组:chown 和 chgrp
- 目录权限的特殊说明
- 特殊权限详解
- SUID(Set User ID)
- SGID(Set Group ID)
- Sticky Bit
- 实战示例
- 示例 1:给文件设置常规权限
- 示例 2:修改文件所有者和所属组
- 示例 3:设置 SUID 权限
- 示例 4:为目录设置 Sticky Bit
- 常见问题与总结
- 常见问题
- 总结
Linux权限
本文面向 Linux 新手,从零基础出发,详细介绍 Linux 文件与目录的权限管理机制、权限表示方法、常用命令以及特殊权限的设置,帮助你建立对 Linux 权限系统的全面认识。
引言
在 Linux 系统中,权限管理是确保系统安全和资源合理使用的重要机制。每个文件和目录都被赋予了一定的权限,以决定哪些用户可以读取、修改或执行该文件。对于刚接触 Linux 的初学者来说,理解这些概念至关重要。本文将从最基础的概念出发,逐步深入讲解 Linux 权限的各个方面。
Linux系统中的权限概述
权限的作用
- 保障安全性:防止非授权用户修改或删除系统文件,降低恶意软件的风险。
- 分权管理:确保不同用户只能访问和操作自己被允许的文件和目录,从而实现“最小权限原则”。
- 资源保护:保护重要的配置文件、日志文件和数据文件,避免意外破坏。
三种用户类别
Linux 系统中,文件与目录的权限分为三个部分,每个部分分别对应不同的用户类别:
-
所有者(Owner)
文件或目录的创建者,拥有最高的控制权。 -
所属组(Group)
与文件所有者属于同一用户组的用户。Linux 中的用户可以被分配到一个或多个组,组内用户共享一定的权限。 -
其他用户(Others)
除所有者和所属组外的所有用户。
权限的表示方法
Linux 中主要有两种方式来表示文件和目录的权限:字符表示法和数字表示法。
字符表示法
在终端中使用 ls -l
命令时,会看到类似下面的输出:
-rwxr-xr-x 1 user group 1234 May 10 12:00 file.txt
解析说明:
-
第1位:文件类型
-
表示普通文件d
表示目录l
表示符号链接
-
接下来的9位:分为3组,每组三个字符
- 第一组(
rwx
):所有者的权限 - 第二组(
r-x
):所属组的权限 - 第三组(
r-x
):其他用户的权限
- 第一组(
各字符含义:
r
:读权限(Read),允许查看文件内容或列出目录内文件列表。w
:写权限(Write),允许修改文件内容或在目录内创建、删除文件。x
:执行权限(Execute),允许执行程序或进入目录(使用cd
命令)。
数字表示法
数字表示法使用三个数字表示权限,每个数字是对应读、写、执行权限的数值之和:
- 读(r) = 4
- 写(w) = 2
- 执行(x) = 1
例如:
7
表示 4 + 2 + 1 =rwx
6
表示 4 + 2 + 0 =rw-
5
表示 4 + 0 + 1 =r-x
因此,权限模式 755
表示:
- 所有者:
7
=rwx
- 所属组:
5
=r-x
- 其他用户:
5
=r-x
常用权限管理命令
查看权限:ls
使用 ls -l
命令可以查看文件或目录的详细权限信息:
ls -l file.txt
输出示例:
-rwxr-xr-x 1 user group 1234 May 10 12:00 file.txt
修改权限:chmod
chmod
命令用于修改文件或目录的权限。支持数字方式和符号方式。
数字方式示例
将 script.sh
文件的权限修改为 755
:
chmod 755 script.sh
符号方式示例
将文件权限设置为:所有者拥有读、写、执行,组和其他用户拥有读和执行权限:
chmod u=rwx,g=rx,o=rx script.sh
修改所有者与组:chown 和 chgrp
- chown:修改文件或目录的所有者
chown newuser file.txt
- chgrp:修改文件或目录的所属组
chgrp newgroup file.txt
- 同时修改所有者和组:
chown newuser:newgroup file.txt
目录权限的特殊说明
目录权限与文件权限略有不同,主要体现在以下几点:
- 读权限(r):允许列出目录内的文件和子目录(例如使用
ls
命令)。 - 写权限(w):允许在目录内创建、删除或重命名文件和子目录。
- 执行权限(x):允许进入目录(使用
cd
命令),即使没有读权限也可进入,但无法列出目录内容。
注意:对于目录来说,单独拥有读权限但没有执行权限,用户虽然可以查看文件列表但无法进入目录;反之,只有执行权限,用户可以进入目录但看不到文件列表。
特殊权限详解
除了基本的读、写、执行权限外,Linux 还提供了特殊权限,主要有 SUID、SGID 和 Sticky Bit。
SUID(Set User ID)
- 作用:使得当用户执行一个设置了 SUID 权限的可执行文件时,该进程以文件所有者的权限运行,而非当前用户的权限。
- 典型应用:
passwd
命令。普通用户执行passwd
时,实际上需要修改只有 root 才有写权限的/etc/shadow
文件。 - 设置方法:
chmod u+s program
- 检查方法:使用
ls -l
命令,SUID 文件会显示为rws
(例如:-rwsr-xr-x
)。
SGID(Set Group ID)
- 作用(可执行文件):使得执行该文件时,进程的有效组 ID 变为该文件所属组。
- 作用(目录):使得在该目录中新创建的文件和目录继承父目录的组属性。
- 设置方法:
chmod g+s directory
- 检查方法:SGID 的目录权限通常显示为
drwxr-sr-x
。
Sticky Bit
- 作用:通常用于目录,设置后目录下的文件只有文件所有者或 root 能够删除或重命名,即使其他用户对目录拥有写权限。
- 典型应用:
/tmp
目录,所有用户可以在此创建文件,但只能删除自己创建的文件。 - 设置方法:
chmod +t directory
- 检查方法:Sticky Bit 目录权限显示为
drwxrwxrwt
(最后一个字符为t
)。
实战示例
示例 1:给文件设置常规权限
假设你有一个脚本 myscript.sh
,希望设置如下权限:
- 所有者:读、写、执行
- 同组用户和其他用户:读和执行
使用数字方式:
chmod 755 myscript.sh
使用符号方式:
chmod u=rwx,g=rx,o=rx myscript.sh
示例 2:修改文件所有者和所属组
将文件 example.txt
的所有者改为 alice
,所属组改为 developers
:
chown alice:developers example.txt
示例 3:设置 SUID 权限
对可执行程序 upgrade
设置 SUID 权限,使得无论谁执行该程序,都以文件所有者身份运行:
chmod u+s upgrade
检查权限:
ls -l upgrade
输出可能类似于:
-rwsr-xr-x 1 root root 20480 May 10 12:00 upgrade
示例 4:为目录设置 Sticky Bit
对公共目录 /tmp
设置 Sticky Bit(通常系统默认已设置):
chmod +t /tmp
检查目录权限:
ls -ld /tmp
输出示例:
drwxrwxrwt 10 root root 4096 May 10 12:00 /tmp
常见问题与总结
常见问题
-
Q1:为什么我的文件权限设置没有生效?
A:请检查是否具有修改该文件权限的权限(只有文件所有者或 root 能修改权限),并确认使用的命令格式正确。 -
Q2:目录没有读权限能进入吗?
A:目录需要执行权限(x)才能进入,如果只有读权限而没有执行权限,则无法使用cd
命令进入目录。 -
Q3:特殊权限与普通权限如何叠加?
A:特殊权限(SUID、SGID、Sticky Bit)会显示在文件权限的相应位置,对执行程序和目录操作起到额外作用。需要注意的是,设置特殊权限时应谨慎,避免带来安全隐患。
总结
- 理解基础概念:Linux 权限分为所有者、所属组和其他用户三部分,每部分均有读、写、执行权限。
- 掌握表示方法:通过字符表示法和数字表示法都可以直观了解和设置权限。
- 熟悉常用命令:
ls
、chmod
、chown
、chgrp
等命令是管理权限的基本工具。 - 注意特殊权限:SUID、SGID 和 Sticky Bit 为系统提供了更细粒度的安全控制,但使用时需格外谨慎。
通过本文的学习,你应能掌握 Linux 文件与目录权限的基础知识,并能运用这些知识来保护你的系统安全。不断实践和探索,将帮助你更深入地理解和运用 Linux 权限管理。
希望这篇博客能帮助你从零开始,系统地掌握 Linux 权限管理的相关知识。如果你有任何疑问或建议,欢迎在评论区留言交流。