【Linux】权限管理 _目录权限 _umask _粘滞位[学习总结 _复习专用]

1.Linux权限的概念

Linux下有两种用户:root、普通用户。

  • root:可以在Linux系统下做任何事情,不受权限的限制
  • 普通用户:在Linux下做有限的事情
  • root用户的命令提示符是" # ",普通用户的命令提示符是" $ "。

 

2.Linux权限管理

2.1 文件访问者的分类

  • 文件/目录的所有者:own
  • 文件/目录的所有者所在组的用户:group
  • 其他用户:other

2.2 文件类型和访问权限

下面以ll(ls -l)指令来解读:

[zwx@VM-20-3-centos ~]$ ll
drwxrwxr-x 6 zwx zwx 4096 Nov  3 09:07 linux-code
-rw-rw-r-- 1 zwx zwx   70 Oct 25 17:30 Makefile

第一个字符表示文件的类型:d开头是一个目录;- 开头表示是一个普通文件

紧接着九个字符表示的分别是own、group、other在该文件中的权限:r(读权限)、w(写权限)、x(执行权限)。

  

 2.3 文件权限的表示方法

字符表示方法:

 8进制表示:

2.4 文件权限的修改

2.4.1 chmod

使用对象:文件拥有者和root。

 使用其他用户无法改变文件权限。

chmod u/g/o/a +/-r/w/x  文件名

u表示文件拥有者,g表示文件所属组的用户,o表示其他用户,a表示所有用户。

举例:

[zwx@VM-20-3-centos limit]$ ll
total 4
dr-xrwxr-x 2 zwx zwx 4096 Nov  5 16:14 limit1
[zwx@VM-20-3-centos limit]$ chmod u-r limit1
[zwx@VM-20-3-centos limit]$ ll
d--xrwxr-x 2 zwx zwx 4096 Nov  5 16:14 limit1

 除了使用加减权限,还能使用八进制数字设置权限:

[zwx@VM-20-3-centos limit]$ ll
total 4
d--xrwxr-x 2 zwx zwx 4096 Nov  5 16:14 limit1
[zwx@VM-20-3-centos limit]$ chmod 000 limit1
[zwx@VM-20-3-centos limit]$ ll
total 4
d--------- 2 zwx zwx 4096 Nov  5 16:14 limit1

2.4.2 chown 

改变文件的拥有者;使用对象:root。

[root@VM-20-3-centos limit]# ll
-rw-rw-r-- 1 zwx zwx    0 Nov  5 16:28 zwx.txt
[root@VM-20-3-centos limit]# chown user1 zwx.txt
[root@VM-20-3-centos limit]# ll
-rw-rw-r-- 1 user1 zwx    0 Nov  5 16:28 zwx.txt

2.4.3 chgrp

修改文件的所属组;使用对象:root。

[root@VM-20-3-centos limit]# ll
-rw-rw-r-- 1 zwx zwx      0 Nov  5 16:54 test.c
[root@VM-20-3-centos limit]# chgrp user1 test.c
[root@VM-20-3-centos limit]# ll
-rw-rw-r-- 1 zwx user1    0 Nov  5 16:54 test.c

3.umask

目录的起始权限是777(rwxrwxrwx), 普通文件的起始权限是666(rw-rw-rw-)。

看下面创建的目录和普通文件的权限:

[zwx@VM-20-3-centos limit]$ touch umask
[zwx@VM-20-3-centos limit]$ mkdir umaskd
[zwx@VM-20-3-centos limit]$ ll
-rw-rw-r-- 1 zwx zwx      0 Nov  5 17:01 umask
drwxrwxr-x 2 zwx zwx   4096 Nov  5 17:01 umaskd

实际创建出来的权限并不是起始权限,因为有umask掩码的存在。

 

umask有四个值,第一个和我们所研究的权限无关,我们只需要关注后三个,分别对应的也就是拥有者、所属组用户、其他用户的掩码。

创建出来的文件权限为最终权限。 

最终权限 = 起始权限 & (~umask)。

umask码修改和查看:

[zwx@VM-20-3-centos limit]$ umask 0000
[zwx@VM-20-3-centos limit]$ umask
0000

4.目录的权限

1.r(读权限)

用户没有目录的读权限,不能查看目录中的内容,ls指令无法执行。

在limit目录下创建一个limit1目录,设置所有者权限为-wx,也就是没有r权限。

[zwx@VM-20-3-centos limit]$ ll
total 4
d-wxrwxr-x 2 zwx zwx 4096 Nov  5 09:41 limit1
[zwx@VM-20-3-centos limit]$ cd limit1
[zwx@VM-20-3-centos limit1]$ ll
ls: cannot open directory .: Permission denied

2.w(写权限)

用户没有目录的写权限,就不能创建/删除/移动文件。

在limit1下创建两个文件:test.c、mytest.txt。

[zwx@VM-20-3-centos limit1]$ touch mytest.txt
[zwx@VM-20-3-centos limit1]$ touch test.c
[zwx@VM-20-3-centos limit1]$ ll
total 0
-rw-rw-r-- 1 zwx zwx 0 Nov  5 16:14 mytest.txt
-rw-rw-r-- 1 zwx zwx 0 Nov  5 16:14 test.c

 改变limit1权限,设置所有者权限为r-x,也就是没有w权限。

[zwx@VM-20-3-centos limit]$ chmod u-w limit1
[zwx@VM-20-3-centos limit]$ ll
total 4
dr-xrwxr-x 2 zwx zwx 4096 Nov  5 16:14 limit1
[zwx@VM-20-3-centos limit1]$ ll
total 0
-rw-rw-r-- 1 zwx zwx 0 Nov  5 16:14 mytest.txt
-rw-rw-r-- 1 zwx zwx 0 Nov  5 16:14 test.c
[zwx@VM-20-3-centos limit1]$ rm test.c
rm: cannot remove ‘test.c’: Permission denied
[zwx@VM-20-3-centos limit1]$ mv test.c ../
mv: cannot move ‘test.c’ to ‘../test.c’: Permission denied
[zwx@VM-20-3-centos limit1]$ touch myproc.c
touch: cannot touch ‘myproc.c’: Permission denied

 没有w权限,删除/移动/创建在目录中都是不允许的。

3.x(执行权限)

用户没有目录的执行权限,用户不能进入目录,cd指令无法使用。

改变limit1的权限,设置所有者权限为rw-,也就是没有x权限。

[zwx@VM-20-3-centos limit]$ chmod u-x limit1
[zwx@VM-20-3-centos limit]$ ll
total 4
drw-rwxr-x 2 zwx zwx 4096 Nov  5 09:41 limit1

 

使用cd指令的时候就会受到权限的约束。 

5.粘滞位

试想这样一种场景:所有用户进行协作,在一个目录下进行工作。

前面我们也提到,只要我们在目录中具有w权限,就能创建/删除目录中的文件,这也就可能造成我们把别人的文件删除了的情况。

 

mytemp是根目录下的一个目录,这个目录时所有的用户都能使用的,而且都具有rwx权限。

下面我在mytemp目录下创建三个文件:zwx1、zwx2、zwx3,并且修改权限。

[zwx@VM-20-3-centos mytemp]$ ll
total 0
-rwxrwx--- 1 zwx zwx 0 Nov  5 10:30 zwx1
-rwxrwx--- 1 zwx zwx 0 Nov  5 10:30 zwx2
-rwxrwx--- 1 zwx zwx 0 Nov  5 10:30 zwx3

我们创建的文件other没有任何权限,也就是无法查看,无法修改,也无法执行。

那other能不能直接把我们的文件删除呢?

下面切换到其他用户,进行实验:

[root@VM-20-3-centos mytemp]# su user1
[user1@VM-20-3-centos mytemp]$ ll
total 0
-rwxrwx--- 1 zwx zwx 0 Nov  5 10:30 zwx1
-rwxrwx--- 1 zwx zwx 0 Nov  5 10:30 zwx2
-rwxrwx--- 1 zwx zwx 0 Nov  5 10:30 zwx3
[user1@VM-20-3-centos mytemp]$ whoami
user1

user1在我们创建的三个文件中属于other ,没有rwx任何权限。

[user1@VM-20-3-centos mytemp]$ ./zwx1
bash: ./zwx1: Permission denied
[user1@VM-20-3-centos mytemp]$ cat zwx1
cat: zwx1: Permission denied

下面进行删除操作:

[user1@VM-20-3-centos mytemp]$ rm zwx1
rm: remove write-protected regular empty file ‘zwx1’? y
[user1@VM-20-3-centos mytemp]$ ll
total 0
-rwxrwx--- 1 zwx zwx 0 Nov  5 10:30 zwx2
-rwxrwx--- 1 zwx zwx 0 Nov  5 10:30 zwx3

别人的文件,我们不能查看、不能修改、不能执行,但是可以删除,这就很矛盾,有没有办法能解决这个问题呢?

答案是可以的,就是使用粘滞位。

粘滞位的使用

chmod +t 文件名

只有目录才能设置粘滞位;粘滞位一经设置,只能设置粘滞位的用户取消(一般使用root用户设置)。

[root@VM-20-3-centos /]# chmod +t mytemp
[root@VM-20-3-centos /]# ll
drwxr-xrwt    2 root root  4096 Nov  5 15:41 mytemp

设置粘滞位之后,其他用户的x权限变为t,下面再使用其他用户来删除我们创建的文件:

-rwxrwx--- 1 zwx zwx 0 Nov  5 10:30 zwx2
-rwxrwx--- 1 zwx zwx 0 Nov  5 10:30 zwx3
[user1@VM-20-3-centos mytemp]$ rm zwx2
rm: remove write-protected regular empty file ‘zwx2’? y
rm: cannot remove ‘zwx2’: Operation not permitted

设置粘滞位之后,再用其他用户删除我们的文件,就会受到权限的约束;当然root用户是不受约束的。

  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

new出新对象

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值