Linux (5)| 入门进阶:Linux 权限管理的基础规则与实践
在经过前面基本指令的学习后,可能对于ls指令展示的某些东西好奇,本篇博客将为你解疑答惑
一、用户分类、用户切换和指令提权
1、用户分类
root:超级用户
[root@instance-157t533k ~]#
root:用户名
@xxxxx:主机名
~:当前目录
#:命令行提示符
在windows下有没有类似的root用户呢?
有,类似以管理员身份运行
普通用户:以root身份,通过adduser创建的
[xzx@instance-157t533k ~]$
和上面只有命令行提示符的区别
在这里也有类似普通用户,可以创建,拥有自己的桌面
在我们之前的学习中可以发现,root用户进行指令操作时不会受到权限约束,而普通用户在yum安装软件的时候,date -s不能设置时间只能查看等,会受到权限的约束
结论:root基本不会受到权限的约束,普通用户是受权限约束的
2、这两个用户之间是如何切换的?
Linux中所有用户,都要有密码,无论是root,还是普通用户,即便是多个普通用户,也要一一设置密码
建议:root账号的密码和普通账号的密码不要一样
1、su -
[xzx@instance-157t533k ~]$ su -
Password:
此时password输入的是root的密码,不是普通用户的密码!
Last login: Sun Sep 28 10:13:14 CST 2025 from 223.104.249.229 on pts/0
Last failed login: Sun Sep 28 11:05:22 CST 2025 from 196.251.83.216 on ssh:notty
There were 207 failed login attempts since the last successful login.
[root@instance-157t533k ~]#
此时已切换成功,我们已变成root用户,我们查看一下自己的家目录用pwd
这是之前的普通用户的
[xzx@instance-157t533k ~]$ pwd
/home/xzx
这是切换后root用户的
[root@instance-157t533k ~]# pwd
/root
结论:su - 更改身份,家目录也更改了
退出:通过ctrl+d或者命令行输入exit
[root@instance-157t533k ~]# exit
logout
[xzx@instance-157t533k ~]$
2、su
[xzx@instance-157t533k ~]$ su
Password:
这里的password依旧输入root的密码
同样的查看家目录用pwd
[root@instance-157t533k xzx]# pwd
/home/xzx
和上面的su -相比,可以发现su更改了用户身份,但家目录没有改
结论:su 更改身份,家目录没有更改
退出:通过ctrl+d或者命令行输入exit
[root@instance-157t533k xzx]# exit
exit
3、su + 用户名
[root@instance-157t533k ~]# adduser zhangsan
[root@instance-157t533k ~]# passwd zhangsan
Changing password for user zhangsan.
New password:
BAD PASSWORD: The password contains the user name in some form
Retype new password:
passwd: all authentication tokens updated successfully.
这里先回顾之前的创建用户流程(这里BAD PASSWORD是博主设置密码偷懒了,密码中包含了用户名)
可以通过ls /home/查看创建的用户
[xzx@instance-157t533k ~]$ ls /home
xzx zhangsan
root用户su+zhangsan,可以看到不需要输入zhangsan的密码
[root@instance-157t533k ~]# su zhangsan
[zhangsan@instance-157t533k root]$
普通用户su+zhangsan,可以看到是需要输入zhangsan的密码
[xzx@instance-157t533k ~]$ su zhangsan
Password:
[zhangsan@instance-157t533k xzx]$
3、如果我们想暂时的对一条命令提权,该怎么做?
sudo command
但另一个问题来了,如果普通用户任何一条指令都可以sudo,那岂不是普通用户也成为root用户了?
先说结论:我们通过adduser创建普通用户,是无法使用sudo的,因为系统不信任你。除非未来将该普通用户加入到系统的信任白名单。
可以用张三试试sudo
[zhangsan@instance-157t533k xzx]$ sudo yum install -y zip unzipWe trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:#1) Respect the privacy of others.#2) Think before you type.#3) With great power comes great responsibility.[sudo] password for zhangsan:
zhangsan is not in the sudoers file. This incident will be reported.
最后提示说zhangsan不在sudoers file中
二、权限
1、什么叫做权限?
一件事是否允许你做
1、权限认证的时是身份(权限和"人"有关)
2、权限也和事物的属性有关
文件=文件内容+文件属性,文件属性中包括文件的权限:可读、可写、可执行
初步结论:权限=人+身份/角色
2、文件属性
1、文件的类型:Linux系统中文件名后缀没有直接意义(当然不代表没用)
drwxrwxr-x 2 xzx xzx 4096 Sep 30 11:36 test
-rw-rw-r-- 1 xzx xzx 0 Sep 30 11:35 test.txt
观察开头第一个字符
-:普通文件(文本库)
d:目录文件
b:块设备文件(磁盘文件)
c:字符设备文件(键盘、显示器文件)
Linux不以文件名后缀区分文件,但把test.c重命名为test.txt用gcc编译不过,这是为什么?
gcc是一款编译器、软件,不代表其他Linux系统上运行的其他软件不需要后缀
Linux中如何看待后缀?看我们自己的需求
2、文件的权限属性
drwxrwxr-x 2 xzx xzx 4096 Sep 30 11:36 test
-rw-rw-r-- 1 xzx xzx 0 Sep 30 11:35 test.txt
从第二个字符开始到数字之前的内容,这些字符代表文件的权限属性
r:可读
w:可写
x:可执行
-:对应的权限位置,没有权限
3、权限身份
drwxrwxr-x 2 xzx xzx 4096 Sep 30 11:36 test
-rw-rw-r-- 1 xzx xzx 0 Sep 30 11:35 test.txt
从数字到下一个数字之间的代表权限身份,第一个是拥有者,第二个是所属组,为什么没有其他人(other)呢?
因为其他人(other)太多了,没必要写进文件,占用内存
权限身份(角色)/用户(人) | root | 普通用户 |
拥有者(owner) | ✔ | ✔ |
所属组(group) | ✔ | ✔ |
其他人(other) | ✔ | ✔ |
这个表展现了用户所能具有权限身份,二者合起来就变成了用户所具有的权限了
什么是所属组?什么是其他人(other)?
详细版:
举个例子,公司有一个项目,需要你张三等程序员去完成,你们被分为了不同小组,你张三等人分到了A组,李四等人分到了B组。假如我们只有拥有者,那么每个人都是独立的,无法协同工作。所以便有了所属组,我们一个组的人可以在一起协助开发了。一天B组的李四想要来看看你们的工作进度,但由于你们不是一个所属组的,李四没有权限查看你们的文件。但是在李四走后,你的领导王五来查看你们的工作进度,此时给领导所属组的权限,他就能查看了。假如有一天公司将项目开源了,别人想要看看你们的源码,但他既不是拥有者,也不是所属组,所以其他人(other)便诞生了
省流版:
权限主体 | 具体用户/群体 | 权限设置 | 作用 |
拥有者(owner) | A组张三(文件创建者) | 读、写、可执行(最高) | 完全控制文件,可修改其他人生权限 |
所属组(group) | A组全体人员,领导王五 | A组:读、写,可执行领导:读 | A 组协同开发,管理层监督进度 |
其他人(other) | B组李四,公司外部人员 | 未开源:没有权限,开源:仅读 | 未开源时保护隐私,开源时共享 |
drwxrwxr-x 2 xzx xzx 4096 Sep 30 11:36 test
-rw-rw-r-- 1 xzx xzx 0 Sep 30 11:35 test.txt
我们也能看到权限身份和文件权限属性具有对应关系
在test中第一组三个字符rwx代表拥有者的权限,第二组三个字符rwx代表拥有者的权限,第三组三个字符r-x代表其他人的权限
这里每个位置只有r、w、x、-四种选择,说明:
1、每个位置是什么含义是确定的!
2、每一个位置只有是或者否,具有确定的权限!
3、root和other虽然具有相同的权限,但root不受权限的限制
-rwxrwxr-x 1 xzx xzx 8440 Oct 4 15:07 a.out
-rw-rw-r-- 1 xzx xzx 69 Oct 4 15:06 test.c
对于adduser创建的普通用户lisi,它访问test.c只有读权限,访问a.out可读也可执行
通过su切换用户,我们来验证一下
[xzx@instance-157t533k 10_4]$ su lisi
Password:
[lisi@instance-157t533k 10_4]$ pwd
/home/xzx/10_4
访问test.c,通过vim尝试修改test.c
提示我们没有w权限,因为lisi是other,权限为r--,表示只能看文件内容
对于a.out可执行程序lisi是可以执行的,它具有r-x的权限
[lisi@instance-157t533k 10_4]$ ./a.out
Hello Linux[lisi@instance-157t533k 10_4]$
此时我们切换为root,观察root用户是否能修改test.c
[root@instance-157t533k 10_4]# vim test.c
[root@instance-157t533k 10_4]# cat test.c
#include<stdio.h>int main()
{printf("Hello Linux\n");printf("Hello,Linux\n");return 0;
}
按道理,root也应该和lisi一样不能修改,但结果是root可以修改
说明root是不受权限限制的
4、权限修改问题
权限修改者:1、文件的拥有者 2、root
修改指令:chomd 权限 文件
修改方式:
1、u+r/w/x g+r/w/x o+r/w/x u-r/w/x g-r/w/x o-r/w/x
这里的u代表user(不是owner的原因,避免重复使用o)拥有者,这里的g代表group所属组,这里的o代表other
通过将o+w,lisi就可以对test.c进行写操作了
[xzx@instance-157t533k 10_4]$ ll
total 16
-rwxrwxr-x 1 xzx xzx 8440 Oct 4 15:07 a.out
-rw-rw-r-- 1 xzx xzx 97 Oct 9 10:48 test.c
[xzx@instance-157t533k 10_4]$ chmod o+w test.c
[xzx@instance-157t533k 10_4]$ ll
total 16
-rwxrwxr-x 1 xzx xzx 8440 Oct 4 15:07 a.out
-rw-rw-rw- 1 xzx xzx 97 Oct 9 10:48 test.c
此时可以对test.c的内容进行修改了
[xzx@instance-157t533k 10_4]$ vim test.c
[xzx@instance-157t533k 10_4]$ cat test.c
#include<stdio.h>int main()
{printf("Hello Linux\n");printf("Hello,Linux\n");printf("Hello,World\n");return 0;
}
假如有多个权限更改可以用(,)逗号隔开,例如u+rwx,g+rwx,o+rws
也可以用a(all,代表所有人)+rwx和上面是一样的,也可以a-r所有人没有读权限
这里可以举另一个例子证明3的root不受权限限制
先对test.c减去所有权限,即a-rwx or u-rwx,g-rwx,o-rwx
[xzx@instance-157t533k 10_4]$ chmod a-rwx test.c
[xzx@instance-157t533k 10_4]$ ll
total 16
-rwxrwxr-x 1 xzx xzx 8440 Oct 4 15:07 a.out
---------- 1 xzx xzx 123 Oct 9 13:05 test.c
此时我们拥有者尝试读写操作
读提示我们没有权限
[xzx@instance-157t533k 10_4]$ cat test.c
cat: test.c: Permission denied
写也是如此
通过:wq!强制退出vim底行模式(vim一种工具,后面会介绍)
我们能看到在将所有权限减去后,我自己作为拥有者是不能读不能写的,接下来看看root的表现
[xzx@instance-157t533k 10_4]$ su root
Password:
[root@instance-157t533k 10_4]# cat test.c
[root@instance-157t533k 10_4]# vim test.c
[root@instance-157t533k 10_4]# cat test.c
#include<stdio.h>int main()
{printf("Hello,Linux\n");return 0;
}
可以看到虽然root没有r和w权限,但是在vim :wq!强制写入下test.c被写入了内容,写入的内容可以通过cat查看到
这个例子也能说明root不受权限约束的
2、由于权限是333一组的,每个权限有或没有是固定的,由此三个二进制组成一个八进制数
例如rwx 111 7,rw- 110 6,r-x 101 5,r-- 100 4,-wx 011 3,-w- 010 2,--x 001 1
通过chmod 777 test.c实现全权限拥有
[root@instance-157t533k 10_4]# ll
total 16
-rwxrwxr-x 1 xzx xzx 8440 Oct 4 15:07 a.out
---------- 1 xzx xzx 71 Oct 9 13:24 test.c
[root@instance-157t533k 10_4]# chmod 777 test.c
[root@instance-157t533k 10_4]# ll
total 16
-rwxrwxr-x 1 xzx xzx 8440 Oct 4 15:07 a.out
-rwxrwxrwx 1 xzx xzx 71 Oct 9 13:24 test.c
5、拥有者、所属组、拥有者和所属组的更改
修改拥有者指令:chown 用户名 文件
[root@instance-157t533k 10_4]# ll
total 16
-rwxrwxr-x 1 xzx xzx 8440 Oct 4 15:07 a.out
-rwxrwxrwx 1 xzx xzx 71 Oct 9 13:24 test.c
[root@instance-157t533k 10_4]# chown root test.c
[root@instance-157t533k 10_4]# ll
total 16
-rwxrwxr-x 1 xzx xzx 8440 Oct 4 15:07 a.out
-rwxrwxrwx 1 root xzx 71 Oct 9 13:24 test.c
也可以配合sudo 对chown提权
修改所属组指令:chgrp 用户名 文件
[root@instance-157t533k 10_4]# ll
total 16
-rwxrwxr-x 1 xzx xzx 8440 Oct 4 15:07 a.out
-rwxrwxrwx 1 root xzx 71 Oct 9 13:24 test.c
[root@instance-157t533k 10_4]# chgrp root test.c
[root@instance-157t533k 10_4]# ll
total 16
-rwxrwxr-x 1 xzx xzx 8440 Oct 4 15:07 a.out
-rwxrwxrwx 1 root root 71 Oct 9 13:24 test.c
修改拥有者和所属组指令:chown 用户名:用户名 文件
[root@instance-157t533k 10_4]# ll
total 16
-rwxrwxr-x 1 xzx xzx 8440 Oct 4 15:07 a.out
-rwxrwxrwx 1 root root 71 Oct 9 13:24 test.c
[root@instance-157t533k 10_4]# chown xzx:xzx test.c
[root@instance-157t533k 10_4]# ll
total 16
-rwxrwxr-x 1 xzx xzx 8440 Oct 4 15:07 a.out
-rwxrwxrwx 1 xzx xzx 71 Oct 9 13:24 test.c
为什么没有修改other?和前面的原因一样,因为other太多了,不需要修改
6、多角色权限认证问题
-r--rw---- 1 xzx xzx 71 Oct 9 13:24 test.c
对于此时的test.c我能写吗?看权限拥有者只有r,但所属组是r和w,那应该能写,我们来验证一下是否能写
依旧vim打开test.c
提示我们只有读权限(但:wq! 强制写入是不需要w权限的)
再看另一个例子
[xzx@instance-157t533k 10_4]$ chown lisi test.c
chown: changing ownership of ‘test.c’: Operation not permitted
[xzx@instance-157t533k 10_4]$ sudo chown lisi test.c
[sudo] password for xzx:
[xzx@instance-157t533k 10_4]$ ll
total 16
-rwxrwxr-x 1 xzx xzx 8440 Oct 4 15:07 a.out
-r--rw---- 1 lisi xzx 97 Oct 9 14:11 test.c
(结合上面chown指令的演示,我们能发现更改为root用户时,不需要额外操作,但如果更改为另一普通用户,则需要sudo提权)
我们通过sudo提权将拥有者强行更改为lisi,此时test.c拥有者是lisi只有r,我是所属组有r和w,我能写吗?依旧验证一下
[xzx@instance-157t533k 10_4]$ ll
total 16
-rwxrwxr-x 1 xzx xzx 8440 Oct 4 15:07 a.out
-r--rw---- 1 lisi xzx 97 Oct 9 14:22 test.c
[xzx@instance-157t533k 10_4]$ cat test.c
#include<stdio.h>int main()
{printf("Hello,Linux\n");printf("hello,linux\n");return 0;
}
[xzx@instance-157t533k 10_4]$ vim test.c
[xzx@instance-157t533k 10_4]$ cat test.c
#include<stdio.h>int main()
{printf("Hello,Linux\n");printf("hello,world\n");printf("hello,linux\n");return 0;
}
可以看到,我们成功写入了
结合这两个例子,我们可以知道在进行权限认证的时候,只能选择一个角色进行认证!而且是先看是否属于拥有者,如果是就不关注其他角色,不是才看所属组和其他人
三、扩展问题
1、起始权限问题
[xzx@instance-157t533k 10_9]$ ll
total 8
drwxrwxr-x 2 xzx xzx 4096 Oct 9 19:10 dir1
drwxrwxr-x 2 xzx xzx 4096 Oct 9 19:10 dir2
-rw-rw-r-- 1 xzx xzx 0 Oct 9 19:10 test1.txt
-rw-rw-r-- 1 xzx xzx 0 Oct 9 19:10 test2.txt
对于我们创建的目录文件和普通文件,为什么它们的默认权限是我们所看到的样子?
为什么目录文件是775(八进制rwxrwxr-x)?
为什么普通文件是664(八进制rw-rw-r--)?
可以看到other都没有w(写)权限
这里需要补充一个知识:umask,权限掩码
[xzx@instance-157t533k 10_9]$ umask
0002
这里的umask除开前导0,剩下的三位各代表一个八进制数
而权限掩码的作用是:凡是在umask中出现的权限,不会再最终的文件权限中出现!
在解答上面疑问的过程中,还需要我们了解两个东西
1、默认给目录文件的起始权限其实是777
2、默认给普通文件的起始权限其实是666
这可以通过暂时修改umask值来新建目录文件和普通文件验证
[xzx@instance-157t533k 10_9]$ umask 0000
[xzx@instance-157t533k 10_9]$ mkdir dir3
[xzx@instance-157t533k 10_9]$ touch test3.txt
[xzx@instance-157t533k 10_9]$ ll
total 12
drwxrwxr-x 2 xzx xzx 4096 Oct 9 19:10 dir1
drwxrwxr-x 2 xzx xzx 4096 Oct 9 19:10 dir2
drwxrwxrwx 2 xzx xzx 4096 Oct 9 19:28 dir3
-rw-rw-r-- 1 xzx xzx 0 Oct 9 19:10 test1.txt
-rw-rw-r-- 1 xzx xzx 0 Oct 9 19:10 test2.txt
-rw-rw-rw- 1 xzx xzx 0 Oct 9 19:28 test3.txt
可以看到目录文件为777,普通文件为666
它们是如何通过权限掩码变成775和664的?
是减法吗?
看起来倒像那麽一回事,我们改变umask验证一下,将umask改为0100看是否符合我们的减法运算
[xzx@instance-157t533k 10_9]$ umask 0111
[xzx@instance-157t533k 10_9]$ rm -rf dir1 dir2 dir3
[xzx@instance-157t533k 10_9]$ rm -rf test1.txt test2.txt test3.txt
[xzx@instance-157t533k 10_9]$ touch test.txt
[xzx@instance-157t533k 10_9]$ ll
total 0
-rw-rw-rw- 1 xzx xzx 0 Oct 9 20:05 test.txt
减法得到的结果是555,但普通文件却是666,这也证明了权限掩码并不是单纯的二进制减法
这里小编也不卖关子了,最终权限计算:
起始权限 &(按位与) (~umask)(对umask的二进制位取反)
(可以下来自己修改umask的值研究为什么是这样计算的,这里对umask赋值是暂时的,并不会永久改变)
2、目录权限
drwxrwxr-x 2 xzx xzx 4096 Oct 9 20:13 test
我们能看到目录文件的权限基本是满的,所以我们可以研究一下权限对我们行为的影响
我们已知可以用ls+选项or ll查看目录信息,我们把目录的r权限减去后看看还能不能使用ll展示信息
[xzx@instance-157t533k 10_9]$ ll
total 4
drwxrwxr-x 2 xzx xzx 4096 Oct 9 20:13 test
[xzx@instance-157t533k 10_9]$ chmod u-r test
[xzx@instance-157t533k 10_9]$ cd test
[xzx@instance-157t533k test]$ ll
ls: cannot open directory .: Permission denied
[xzx@instance-157t533k test]$ cd ..
[xzx@instance-157t533k 10_9]$ ll
total 4
d-wxrwxr-x 2 xzx xzx 4096 Oct 9 20:13 test
可以看到在r权限没有后,在test目录下ll提示没有权限
r:是否允许我们查看指定目录下的文件内容
我们可以在目录下创建普通文件和目录文件,也可以对其更改,还可以删除,这些行为对应哪个权限呢?
我们大胆猜测,小心求证,先把w权限减去试试吧!
[xzx@instance-157t533k test]$ touch data.txt
[xzx@instance-157t533k test]$ ll
total 0
-rw-rw-r-- 1 xzx xzx 0 Oct 9 22:20 data.txt
[xzx@instance-157t533k test]$ cd ..
[xzx@instance-157t533k 10_9]$ chmod u-w test
[xzx@instance-157t533k 10_9]$ cd test
[xzx@instance-157t533k test]$ mkdir dir
mkdir: cannot create directory ‘dir’: Permission denied
哇哦,居然一下就猜中了(哈哈1/2的概率),当然这里只是验证了创建,感兴趣可以去验证一下更改和删除
w:是允许我们在当前目录下进行创建、更改和删除
剩下的一个x可执行权限,结合我们之前了解指令的本质(可执行程序),大胆猜测一下,没有x权限我们或许就不能执行指令了,来验证一下吧
[xzx@instance-157t533k 10_9]$ chmod u-x test
[xzx@instance-157t533k 10_9]$ ll
total 4
drw-rwxr-x 2 xzx xzx 4096 Oct 9 22:20 test
[xzx@instance-157t533k 10_9]$ cd test
-bash: cd: test: Permission denied
看来和我们想的一样,缺少了x权限不能执行指令,我们现在都不能通过cd进入test目录了
x:是否允许用户进入对应的目录
3、粘滞位
在团队协作和开发时,我们会在一个工作目录下各自分工,组长可以随时查看每个人的进度,同事之间也可以一起工作。
假如你的小伙伴上传了一份学习资料在你们的共享目录下,每个人都可以去查看资料,也可以增加新的内容。结果有次你和朋友闹矛盾了,朋友一怒之下把你的r和w权限都删除了,此时的你打不开资料,也不能增加或修改资料,此时你能把资料删掉吗?
我们来模拟验证一下
[xzx@instance-157t533k 10_9]$ chmod o+w test
[xzx@instance-157t533k 10_9]$ ll
total 4
drwxrwxrwx 2 xzx xzx 4096 Oct 9 22:20 test
[xzx@instance-157t533k 10_9]$ cd test
[xzx@instance-157t533k test]$ ll
total 0
-rw-rw-r-- 1 xzx xzx 0 Oct 9 22:20 data.txt
[xzx@instance-157t533k test]$ chmod o-r data.txt
[xzx@instance-157t533k test]$ ll
total 0
-rw-rw---- 1 xzx xzx 0 Oct 9 22:20 data.txt
我们将test目录的other设置为满权限,test目录下的data.txt普通文件other设置无权限,我们切换为lisi,来看看我们能否删除data.txt
[xzx@instance-157t533k test]$ su lisi
Password:
[lisi@instance-157t533k test]$ ll
total 0
-rw-rw---- 1 xzx xzx 0 Oct 9 22:20 data.txt
[lisi@instance-157t533k test]$ rm data.txt
rm: remove write-protected regular empty file ‘data.txt’? y
[lisi@instance-157t533k test]$ ll
total 0
居然lisi在既没有r,也没有w的前提下把data.txt给删除了,这是为什么呢?
我们将test目录other的w权限给减去在试一试
[xzx@instance-157t533k 10_9]$ chmod o-w test
[xzx@instance-157t533k 10_9]$ ll
total 4
drwxrwxr-x 2 xzx xzx 4096 Oct 9 22:44 test
[xzx@instance-157t533k 10_9]$ cd test
[xzx@instance-157t533k test]$ touch data1.txt
[xzx@instance-157t533k test]$ ll
total 0
-rw-rw-r-- 1 xzx xzx 0 Oct 9 22:47 data1.txt
[xzx@instance-157t533k test]$ chmod o-r data1.txt
[xzx@instance-157t533k test]$ ll
total 0
-rw-rw---- 1 xzx xzx 0 Oct 9 22:47 data1.txt
[xzx@instance-157t533k test]$ su lisi
Password:
[lisi@instance-157t533k test]$ rm data1.txt
rm: remove write-protected regular empty file ‘data1.txt’? y
rm: cannot remove ‘data1.txt’: Permission denied
我们通过将other的w权限恢复后发现,普通文件data1.txt不能被属于other的lisi给删除
一个文件能否被删除,并不由文件本身做决定,而是由这个文件所处目录决定的!
话又说回来了,假如让你实现一个共享目录,你会怎么实现?
放在我自己的家目录下是不行的,因为普通用户自己的家目录权限是700,在我家目录下创建文件别人看不见
[xzx@instance-157t533k home]$ ll
total 8
drwx------ 4 lisi lisi 4096 Oct 4 15:26 lisi
drwx------ 26 xzx xzx 4096 Oct 9 19:10 xzx
所以我创建的共享目录,不能在任何一个人的家目录,那共享目录该放在哪里呢?
在根目录(/)下创建一个目录,并打开权限770
但我们会面临上面的问题,一个没有r和w的other能够随意删除你共享目录的东西,这你咋办?
如果把共享目录的w权限去掉,那我们自己也无法创建文件!这个共享目录,共享体现在哪里?
由此粘滞位就诞生了
粘滞位:给目录设置,一般是共享目录,设置粘滞位后,大家可以在目录中进行各自的文件的增删改查,只允许文件拥有者or root能删除这个文件,其他人一概不许。
如何设置粘滞位? chmod +t 目录
共享目录系统会自动生成 /tmp
四、总结
至此,我们围绕 Linux 用户与权限两大核心模块展开了完整梳理:从 root 与普通用户的权限差异、切换方式(su -
/su
/su 用户名
)、sudo 提权逻辑,到文件权限的身份划分(拥有者 / 所属组 / 其他人)、属性解读(r/w/x)、修改方法(字符法 / 数字法),再到 umask 权限掩码计算、目录特殊权限(r/w/x 对应功能)及粘滞位(chmod +t
)的实用场景,均通过实操案例验证了核心规则 ——root 不受权限约束,普通用户受角色与文件属性双重限制。
这些知识点是 Linux 系统安全与协作的基础:日常操作中,避免直接用 root 操作,通过 sudo 按需提权;共享目录用粘滞位保障文件安全;修改权限时结合业务场景选择字符或数字方式,既能满足协作需求,也能防范越权风险。后续可结合实际需求灵活运用,进一步深化对 Linux 权限体系的理解~