Linux笔记 — 权限管理以及文件的特殊权限

演示一些权限,以及权限不足的时候会有哪些报错信息:
1.通过命令行 # cd /test 来到/test目录下
2.查看/test目录的权限:ls -ld /test 返回结果如下:
drwxr-xr-x. 2 user1 group1 6 6月 22 11:58 /test
3.修改/test 权限为最大权限:# chmod 777 /test
4.查看修改后的/test目录的权限:# ls -ld /test
drwxrwxrwx. 2 user1 group1 6 6月 22 11:58 /test
5.创建一个叫afile的文件:# touch afile
6.查看afile文件:# ls 返回结果为:
afile
属组和属主权限进行修改
7.对afile属组和属主权限进行修改(不能拿root权限进行测试,因为root权限是不受限制的):

chown user1:group1 afile (把用户user1 的root权限修改为group1 权限)

8.查看权限:# ls -l
-rw-r--r--. 1 user1 group1 0 6 月 22 12:05 afile

属主权限修改
9.想要单独测这个文件的读和写的权限的时候呢,我们可以把其他权限给去掉,减少其他权限的干扰,我把afile的权限设置为400:# chmod 400 400
10.查看一下afile的权限:# ls -l 返回结果为:
-r--------. 1 user1 group1 0 6月 22 12:05 afile
11.显示文件命令:# echo 123 将123显示在终端上。
12.将123显示在文件里面:# echo 123 > afile (将控制台显示的123 输出到afile文件里面)
注意:> 输出符号 会把原文件中的内容全部清空,所以输出符号(>)不要用在系统配置文件中,会有被清空的风险。
13.查看以下afile文件内容 # cat afile 显示如下内容:123
14.切换到user1用户(afile文件只有user1 具有查看权限,其他用户没有权限):# su - user1
15. 查看当前用户:$ id
uid=1003(user1) gid=1003(group1) 组=1003(group1) 环境=unconfined_u: unconfined_r: unconfined_t: s0- s0: c0.c1023
16.以用户user1 身份查看文件内容:$ cat /test/afile 返回结果为:123
17. 以user1用户尝试将456写入/test/afile:$ echo 456 > /test/afile 返回结果:
-bash: /test/afile: 权限不够
18.退出user1 用户回到root用户:$ exit
19.给文件/test/afile 赋予200 权限:# chmod 200 /test/afile
20.查看权限:# ls -l /test/afile 返回结果为:
--w-------. 1 user1 group1 4 6月 22 12:08:26 CST 2019pts/0 上
22.切换到user1用户:# su - user1
23.把456写入到/test/afile:$ echo 456 > /test/afile 写入成功。

属组权限修改
1.创建一个bfile文件 :$ touch /test/bfile
2.查看bfile权限:$ ls -l /test/
3.修改文件的组权限为: $ chmod 020 /test/bfile
4.查看权限:$ ls -l /test/ 返回结果为:
-----w----. 1 user1 group1 6月 22 12:10 bfile
5.查看当前用户(user1)用户的权限:$ id user1,返回结果如下:
uid=1003(user1) gid=1003(group1) 组=1001(group1)
从返回结果中可以看出当前用户user1 是没有写入权限的,但是他的属组是由写入权限的,也就是说user1 没有写入权限,但是相同组的其他用户是有写入权限的。示例如下:
1)先以user1 为例 尝试在bfile中写入123:$ echo 123 > /test/bfile 返回结果,提示权限不够。
2)退出user1回到root用户:# exit
3)进入user2 用户:# su - user2
4)查看user2权限:$ id 或者 id user2 返回结果为:
uid=1004(user2) gid=1003(group1) 组=1001(group1)
5)用user2用户将456写入/test/bfile:$ echo 456 > /test/bfile
6)退出当前用户 回到root用户:$ exit
7)查看bfile是否写入成功:# cat /test/bfile 返回结果为 456,成功

目录权限
1.在root权限下输入:# chmod 400 /test
2.切换到user1用户:# su - user1
3.查看目录:ls -l /test 返回结果如下:
ls:无法访问/test/afile:权限不够
ls:无法访问/test/bfile:权限不够
4.通过exit命令回到root用户,定义目录权限:chmod u=x /test
5.权限查看:# ls -ld /test
6.切换回user1用户:su - user1
7.切换到test目录:cd /test
8.查看当前路径:pwd
9.输入# exit命令退出user1回到root用户,修改目录权限 # chmod 000 /test
10.再次进入user1用户:# su - user1
11.进入/test目录:$ cd /test 提示权限不够,无法进入该目录。
12.可以进入目录并查看文件命令:
先通过exit命令回到root用户再输入如下命令:# chmod u=rx /test
13.通过 su - user1 切换到用户user1,通过cd /test 命令进入到 /test目录,并且可以通过ls -l查看目录下的文件。
14. 输入exit命令 回到root用户,修改为可以进入目录并删除文件命令:# chmod u=wx /test
15.切换用户:su - user1
16.进入/test 目录:cd /test
17.删除afile:$ rm afile
18.退出user1 回到root用户:$ exit
19. 查看用户:ls /test 返回结果中已经没有afile文件。

文件的特殊权限
SUID 用于二进制可执行文件,执行命令时取得文件属主权限
如 /usr/bin/passwd
1.输入命令行:# ls -l /usr/bin/passwd 返回结果如下:
-rwsr-xr-x. 1 root root 27832 4月 1 2020 /usr/bin/passwd
注意:这里属主属性中x的位置换成了小写s,表示不管root用户还是普通用户,在执行该命令的时候,它都以文件的属主(root)身份执行操作,这是因为我们的用户名密码保存在/etc/shadow(可以通过ls -l /etc/shadow查看目录权限)目录下,而shadow的权限为任何人都无法查看,这种情况下也只有root用户才有权限查看。这样设计的目的是为了满足普通用户也可以修改自己密码的功能。

2.给文件添加特殊的用户权限(SUID)的命令是:# chmod 4xxx 文件名
如rwxr-xr-x的权限为755,如果将x改为s 则需要在前面加4,也就是4755
如,1.给/test/bfile 设置文件属主特殊权限:# chmod 4775 /test/bfile
2.查看文件属主权限:# ls -l /test/bfile
-rwsr-xr-x. 1 user1 group1 4 6月 22 12:12 /test/bfile

SGID 用于目录,在该目录下创建新的文件和目录,权限自动更改为该目录的属组
使用场景:一般用于在做文件共享的时候使用
SBIT 用于目录,该目录下新建的文件和目录,仅root和自己可以删除
如 /tmp
1.查看/tmp权限:# ls -ld /tmp/ 返回结果如下:
drwxrwxrwt. 16 root root 4096 6月 22 12:21 /tmp/
这里的t是用来防止普通用户用来删除其他用户创建的临时文件。
2.如果要给其他目录设置SBIT特殊权限 的命令是:# chmod 1xxx 文件名
如rwxrwxrwx的值为777,如果将x改为t,则需要在前面加1,也就是1777
如,1.给目录/test设置SBIT权限:# chmod 1777 /test
2.查看目录/test其他权限:# ls -l /test
drwxrwxrwt. 2 user1 group1 19 6月 22 12:16 /test

总结:特殊权限不建议修改,保持系统默认即可

上一篇:QT 将UDP收到的数据实时保存到本地文本文档


下一篇:SylixOS x86 HPET 定时器驱动