Linux操作系统从入门到实战(五)详细讲解Linux权限概念
- 前言
- 一、Linux中两种用户
- 1.1 超级用户(root)
- 1.2 普通用户
- 1.3 切换用户命令
- 二、Linux权限管理
- 2.1 文件访问者的分类:谁能访问文件?
- 2.2 文件类型
- 2.3 基本权限:能对文件做什么?
- 2.4 权限的“长相”:
- 2.5 为什么需要权限?
- 三、文件访问权限的相关设置方法与命令
- 1. chmod:
- 2. chown:
- 3. chgrp:
- 4. umask:
- 5. file指令:
- 6. 使用 sudo 分配权限
- 四、粘滞位
前言
- 在之前的内容里,我们深度解析了操作系统的本质,一步步搭建起 Linux 环境,还系统掌握了 Linux 基础指令的运用。
- 但要想真正玩转 Linux 系统,其权限管理机制是绕不开的核心关键。
- 从今天起,就让我们切入 Linux 权限这一重要模块,层层拆解其概念与逻辑,为全面掌握 Linux 系统的管理与运用筑牢根基,开启更深入的 Linux 探索之旅。
我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482
一、Linux中两种用户
- 我们平时用的Linux操作系统里有两种⽤⼾:超级⽤⼾(root)、普通⽤⼾。
1.1 超级用户(root)
- 就像家里“大权在握”的大当家,在 Linux 系统里想干啥就干啥,没有限制
- 比如随意修改系统设置、安装或删除软件、查看所有文件等,甚至可以删除自己。
- 它的命令提示符是
#
,只要看到#
,就知道现在是超级用户
1.2 普通用户
- 类似家里的其他成员,能做的事有限。
- 比如只能用自己的东西(访问自己权限内的文件),不能随便动系统关键设置或别人的文件。它的命令提示符是
$
,看到$
就知道是普通用户在操作。
1.3 切换用户命令
- 从超级用户切到普通用户:比如从
root
切到普通用户user
,输su user
,不用输密码,直接切换。就像大当家想找普通成员做事,一叫就来。 - 从普通用户切到超级用户:输
su
(或suroot
),这时系统会让你输root
的密码,验证通过才能切换。好比普通成员想变成大当家,得先证明自己有这个资格(输对密码)。
二、Linux权限管理
2.1 文件访问者的分类:谁能访问文件?
Linux 把文件的“访问者”分成三类,就像家里的文件被不同人使用:
-
所有者(User,缩写
u
)- 就像文件的“主人”,比如你创建了一个文件,你就是它的所有者。
- 权限最大,能决定谁能看、谁能改这个文件。
-
所属组用户(Group,缩写
g
)- 比如你和同学组成一个小组,小组里的成员就是“所属组用户”。
- 组内成员共享一些权限,方便团队协作(比如一起修改小组作业文件)。
-
其他用户(Others,缩写
o
)- 既不是所有者,也不在所属组里的人,比如陌生人。
- 权限最小,通常只能看文件内容,不能随便改。
2.2 文件类型
Linux 里的文件“长相”用第一个字符表示,常见类型:
-
d
(目录,文件夹):像一个抽屉,里面可以装很多文件和子目录(比如~/Documents
)。
-
-
(普通文件):就是普通的文件,比如文档(.txt
)、图片(.jpg
)、脚本(.sh
)等。
-
l
(软链接):类似 Windows 的快捷方式,指向另一个文件或目录(比如ln -s 目标文件 快捷方式名
)。 -
b
(块设备文件) 和c
(字符设备文件):和硬件相关,比如硬盘(/dev/sda
)、键盘、鼠标(不用太纠结,记住是硬件就行)。 -
其他类型(
p
、s
):暂时用得少,先记住前三个最常用的!
2.3 基本权限:能对文件做什么?
每种用户(所有者/组/其他用户)都有三种“操作权限”,用 r
、w
、x
表示,对应数字 4
、2
、1
:
-
读权限(
r
,数字4
)- 对文件:可以查看文件内容(比如用
cat 文件名
查看)。 - 对目录:可以查看目录里有哪些文件(比如用
ls 目录名
列出内容)。
例子:你可以看一本书的内容,就是有“读”权限。
- 对文件:可以查看文件内容(比如用
-
写权限(
w
,数字2
)- 对文件:可以修改文件内容(比如用
nano 文件名
编辑)。 - 对目录:可以在目录里新建、删除、重命名文件(注意!是改目录里的内容,不是目录本身的名字)。
例子:你可以在笔记本上写字,就是有“写”权限。
- 对文件:可以修改文件内容(比如用
-
执行权限(
x
,数字1
)- 对文件:可以运行这个文件(比如脚本
.sh
文件,需要x
权限才能用./脚本名
运行)。 - 对目录:可以进入这个目录(比如用
cd 目录名
进入)。
例子:你能打开一个抽屉(进入目录),或者启动一个程序(运行文件),就是有“执行”权限。
- 对文件:可以运行这个文件(比如脚本
如果没有某个权限,就用 -
表示,比如 r--
表示只有读权限,没有写和执行权限。
2.4 权限的“长相”:
当你用 ls -l
查看文件时,会看到类似这样的结果:
-rwxr-xr-- 1 user group 1024 Jan 1 00:00 文件名
- 第一个字符是文件类型(这里是
-
,表示普通文件)。 - 接下来 9 个字符分成三组,每组 3 个:
- 第一组(前 3 位):所有者(
u
)的权限(这里rwx
,表示可读、可写、可执行)。 - 第二组(中间 3 位):所属组(
g
)的权限(这里r-x
,表示可读、可执行,不可写)。 - 第三组(最后 3 位):其他用户(
o
)的权限(这里r--
,表示只读)。
- 第一组(前 3 位):所有者(
也可以用数字表示权限,比如 rwx
是 4+2+1=7
,r-x
是 4+0+1=5
,上面的例子权限就是 754
。
2.5 为什么需要权限?
假设你有一个笔记本:
- 所有者(你自己):可以随便看、写、甚至烧掉它(
rwx
)。 - 所属组(家人):可以看里面的内容,也可以打开笔记本(进入目录),但不能随便修改(
r-x
)。 - 其他用户(陌生人):只能远远看一眼封面(只读,
r--
),不能打开或修改。
三、文件访问权限的相关设置方法与命令
1. chmod:
基本功能与格式
chmod
命令用于设置文件的访问权限,其基本格式是 chmod [参数] 权限 文件名
。要注意,只有文件的拥有者和超级用户 root
才有权力改变文件的权限。
常用选项
-R
这个选项很实用,当你要修改一个目录下所有文件和子目录的权限时,使用 -R
就可以递归地进行修改。
权限值格式
-
用户标识符 + / - / = 权限字符
+
:为权限范围添加权限代号所代表的权限。-
:从权限范围中移除权限代号所代表的权限。=
:给权限范围赋予权限代号所代表的权限。- 用户符号:
u
:文件拥有者。g
:拥有者所在组的用户。o
:其他用户。a
:所有用户。
- 实例:
chmod u++ a.txt
:给文件a.txt
的拥有者添加写权限。chmod o+x a.txt
:移除文件a.txt
其他用户添加写权限。chmod a=x a.txt
:给文件a.txt
的所有用户都只赋予执行权限。
-
三位 8 进制数字
每个 8 进制数字对应一种用户的权限,从左到右依次是拥有者、所属组、其他用户。比如读权限是 4,写权限是 2,执行权限是 1。- 实例:
-
chmod 664 a.txt
:拥有者和所属组用户有读写权限,其他用户只有读权限。
-
chmod 640 a.txt
:拥有者有读写权限,所属组用户只有读权限,其他用户没有任何权限。
-
- 实例:
2. chown:
chown
命令用来修改文件的拥有者,格式为 chown [参数] 用户名 文件名
。
- 实例:
chown user1 f1
:把文件f1
的拥有者修改为user1
。chown -R user1 filegroup1
:使用-R
递归地将目录filegroup1
及其下面所有文件和子目录的拥有者都修改为user1
。
3. chgrp:
chgrp
命令用于修改文件或目录的所属组,格式是 chgrp [参数] 用户组名 文件名
。常用选项 -R
可递归修改文件或目录的所属组。
- 实例:
chgrp users /abc/f2
:把文件/abc/f2
的所属组修改为users
。
4. umask:
功能
`umask` 可以用来查看或修改文件掩码。新建文件默认权限是 0666(即所有用户都有读写权限),新建目录默认权限是 0777(所有用户都有读写执行权限)。不过实际创建的文件和目录权限往往不是这些默认值,这是因为创建时会受到 `umask` 的影响。实际创建出来的文件权限是默认权限 `mask` 与 `~umask` 按位与的结果。格式与说明
格式为 `umask 权限值`,超级用户默认掩码值是 0022,普通用户默认是 0002。将现有的存取权限减去权限掩码后,就得到创建文件时的预设权限。 - 实例: - `umask 755` :设置文件掩码为 755。 - `umask` :查看当前的文件掩码。 - `umask 044` :将文件掩码设置为 044。 5. file指令:
file
指令用于识别文件类型,语法是 file [选项] 文件或目录...
。
常用选项
-
-c
:详细显示指令执行过程,方便排查错误或分析程序执行情况。
-
-z
:尝试解读压缩文件的内容。
6. 使用 sudo 分配权限
修改 /etc/sudoers 文件
- 可以通过修改
/etc/sudoers
文件来分配权限。 /etc/sudoers
文件定义了哪些用户可以使用sudo
命令以超级用户权限执行特定命令。- 不过修改这个文件要格外小心,因为一旦配置错误,可能导致系统出现问题。
- 通常使用
visudo
命令来编辑该文件,它会在保存时检查语法错误。比如,你可以在文件中添加一行,让某个用户可以使用sudo
执行特定命令,像这样username ALL=(ALL) ALL
,这就表示用户username
可以在任何主机上以任何用户身份执行任何命令。
使用 sudo 调用授权的命令
格式:sudo –u 用户名 命令
sudo
:获取临时超级用户权限的命令。-u 用户名
:指定以哪个用户身份执行命令。- 命令:具体要执行的操作。
实例sudo -u root /usr/sbin/useradd u2
:表示当前用户借助sudo
,以root
身份执行/usr/sbin/useradd u2
命令(即创建用户u2
)。这要求当前用户在/etc/sudoers
中被授予了相关权限,否则会提示权限不足。
简单总结:先通过修改 /etc/sudoers
文件设定用户能以什么身份执行哪些命令,再用 sudo -u
来实际调用这些授权的命令,实现权限的灵活分配,既保证安全又方便普通用户执行特定管理任务。
四、粘滞位
在我们刚刚的讲解中
- 可执行权限(x):
想象目录是一个房间,可执行权限(x)就像“开门的钥匙”。如果没这把钥匙(目录无 x 权限),你连房间都进不去(无法
cd
进入目录),更别说做其他操作了。 - 可读权限(r):
进了房间(有 x 权限)后,可读权限(r)就像“房间里的灯”。如果没灯(目录无 r 权限),虽然你人在房间里(能
cd
进入),但啥也看不见(无法用ls
等命令查看目录里有什么文件)。 - 可写权限(w):
可写权限(w)相当于“在房间里放置或拿走东西的权力”。只要有这个权力(目录有 w 权限),不管房间里的东西(文件)是谁的,你都能在房间里创建新东西(新建文件),或者把别人的东西拿走(删除文件)。
这就像:张三在房间里放了个盒子(文件),李四只要有房间的 w 权限,就能把张三的盒子拿走(删除文件),这看起来是不是不太合理?
为了让目录里的文件不被随意删除,Linux 引入了粘滞位。给目录加上粘滞位(用 chmod +t
)后,这个目录就像被上了一把“特殊的锁”,规定:只有以下三种人能删除目录里的文件:
- 超级管理员(root):超级管理员有最高权限,能处理任何文件。
- 目录的所有者:目录就像一个“私人领地”,领地的主人(目录所有者)有权力管理里面的东西。
- 文件的所有者:自己的东西(文件),自己当然能决定是否删除。
举个例子:
- 给
/home
目录加粘滞位(chmod +t /home
)后,用户litao
就不能随便删除root
或其他人创建的文件了。原本litao
能删root
的root.c
文件(因为/home
目录有 w 权限),但加了粘滞位后,系统会检查删除者是否是超级管理员、目录所有者或文件所有者,不满足就不让删,这样就保证了文件的安全性。
以上就是这篇博客的全部内容,下一篇我们将继续探索Linux的更多精彩内容。
我的个人主页
欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482
非常感谢您的阅读,喜欢的话记得三连哦 |