[toc]

9-linux权限管理

一、权限概述

在Linux系统中,每个文件都有所属的所有者所有组,并且规定了文件的所有者(owner)所有组(group)以及其他人(others)对文件所拥有的可读(r)可写(w)可执行(x)等权限。

1、权限介绍

什么是权限?

在多用户(可以不同时〉计算机系统的管理中,权限是指某个特定的用户具有特定的系统资源使用权力,像是文件夹、特定系统指令的使用或存储量的限制。

在Linux中分别有读、写、执行权限。

对于文件:

  • 可读:表示能够读取文件的实际内容
  • 可写:表示能够编辑、新增、修改、删除文件的实际内容
  • 可执行:则表示能够运行一个脚本程序

对于文件目录:

  • 可读:表示能够读取目录内的文件列表
  • 可写:表示能够在目录内新增、删除、重命名文件
  • 可执行:则表示能够进入该目录

2、身份介绍

2.1、Owner身份

文件所有者,默认为文档的创建者。

由于Linux是多用户、多任务的操作系统,因此可能常常有多人同时在某台主机上工作,但每个人均可在主机上设置文件的权限,让其成为个人的“私密文件”,即个人所有者。因为设置了适当的文件权限,除本人(文件所有者)之外的用户无法查看文件内容。

2.2、Group身份

与文件所有者同组的用户。

例如:一家有兄弟两人,大明,小明,那么针对这个家庭,就是相当于组,两人对于这个家来说就是组内的成员。每个人的房间都属于个人,大明设置组内成员可以进出自已的房间,那么做为同组的小明,就拥有了所属组的权利,可以进入到大明的房间。

在linux中,每个账户支持多个组。即一个用户可以是A组成员,也可以属于B组成员。

2.3、Others身份

其他人,相对于所有者

还是以上面事例为例:大明,小明因为是一家人,所以同属一个用户组。大明允许组内成员可以进入自已的房间,这是小明的朋友张三来家里,张三相对于这一家人来说,就属于其它人身份,此事张三如果想要进入大明的房间,是不允许的,属于权限不足。

2.4、Root用户

超级用户RootLinux中神一样存在的用户,因为在所有用户中它拥有最大的权限,所以管理着普通用户。

3、Linux的权限介绍

尽管在Linux系统中一切都是文件,但是每个文件的类型不尽相同,因此Linux系统使用了不同的字符来加以区分,常见的字符如下所示。

  • -:普通文件。
  • d:目录文件。
  • l:链接文件。
  • b:块设备文件。
  • c:字符设备文件。
  • p:管道文件。

在Linux系统中,每个文件都有所属的所有者所有组,并且规定了文件的所有者(owner)所有组(group)以及其他人(others)对文件所拥有的可读(read)可写(write)可执行(execute)等权限。

在Linux中,ls命令常用来查看的属性,用于显示文件名和相关属性。

[root@localhost ~]# ls -l
总用量 8
-rw-------. 1 root root 1751 2月  17 03:40 anaconda-ks.cfg
-rw-r--r--. 1 root root 1779 2月  17 03:47 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 2月  16 19:51 公共
drwxr-xr-x. 2 root root    6 2月  16 19:51 模板
drwxr-xr-x. 2 root root    6 2月  16 19:51 视频
drwxr-xr-x. 2 root root    6 2月  16 19:51 图片
drwxr-xr-x. 2 root root    6 2月  16 19:51 文档
drwxr-xr-x. 2 root root    6 2月  16 19:51 下载
drwxr-xr-x. 2 root root    6 2月  16 19:51 音乐
drwxr-xr-x. 2 root root    6 2月  16 19:51 桌面

对于一个文件来说,其权限的分配如图:

image

文件的读、写、执行权限可以简写为rwx,亦可分别用数字4、2、1来表示,文件所有者,所属组及其他用户权限之间无关联。

image

示例:以下文档权限具体情况

drwxr-xr-x. 2 root root    6 2月  16 19:51 公共
  • 文件夹类型:文件
  • 所有者权限:可读、写、执行
  • 同组用户权限:可读、执行
  • 其它用户:可读、执行

二、权限设置

语法格式:chmod 选项 权限模式 文档

常用选项:

  • -R:递归设置权限(当文档类型为文件夹时)

权限模式:就是文档需要设置的权限信息

文档:可以是文件或文件夹,相对路径或绝对路径

1、字母形式设置

| 选项 | 字母 | 介绍 |
| —— | —- | ————— |
| (谁) | u | 用户 |
| (谁) | g | 所属群体 |
| (谁) | o | 其他人 |
| (谁) | a | 所有人(““全部”) |
| (作用) | + | 增加权限 |
| (作用) | - | 减少权限 |
| (作用) | = | 确定权限 |
| (权限) | r | 可读 |
| (权限) | w | 可写 |
| (权限) | x | 执行 |

给谁设置:

  • u:表示所有者身份owner

  • g:表示给所有者同组用户设置group

  • o:表示others,给其他用户设置权限

  • a:表示all,给所有人设置权限

    如果在设置权限的时候不指定给谁设置,则默认给所有用户设置。

权限分配方式:

  • +:表示给具体的用户新增权限(相对当前)
  • -:表示删除用户的权限(相对当前)
  • =:表示将权限设置成具体的值(注重结果)

示例1:给家目录下的~/a.txt文件(-rw-r-----)设置权限,要求所有者拥有全部权限,同组用户拥有读和执行权限,其它用户只讯权限。

① 第一种方式:chmod u+x,g+x,o+r a.txt

[root@localhost ~]# ls -l a.txt
-rw-r--r--. 1 root root 0 2月  20 16:24 a.txt
[root@localhost ~]# chmod u+x,g+x,o+r a.txt 
[root@localhost ~]# ls -l a.txt
-rwxr-xr--. 1 root root 0 2月  20 16:24 a.txt

② 第二种方式:chmod u=rwx,g=rx,o=r a.txt

[root@localhost ~]# chmod u=rwx,g=rx,o=r a.txt
[root@localhost ~]# ls -l a.txt
-rwxr-xr--. 1 root root 0 2月  20 16:24 a.txt

示例2:给家目录下的~/a.txt文件设置所有用户都没有x执行权限

chmod a-x ~/a.txt

[root@localhost ~]# chmod a-x ~/a.txt
[root@localhost ~]# ls -l a.txt 
-rw-r--r--. 1 root root 0 2月  20 16:24 a.txt

2、数字形式设置

| 数值 | 权限 | 目录列表 |
| —- | ———————— | ——– |
| 0 | 不能读,不能写,不能执行 | — |
| 1 | 不能读,不能写,可执行 | –x |
| 2 | 不能读,可写,不能执行 | -w- |
| 3 | 不能读,可写,可执行 | -wx |
| 4 | 可读,不能写,不能执行 | r– |
| 5 | 可读,不能写,可执行 | r-x |
| 6 | 可读,可写,不能执行 | rw- |
| 7 | 可读,可写,可执行 | rwx |

  • r:对应数字4
  • w:对应2
  • x:对应1

示例1:给家目录下的~/a.txt文件(-rw-r-----)设置权限,要求所有者拥有全部权限,同组用户拥有读和执行权限,其它用户只讯权限。

  • 全部权限(u):读+写+执行=4+2+1=7
  • 读和执行权限(g):读+执行=4+1=5
  • 读权限(o):读=4

最终数字形式:754

chmod 754 ~/a.txt

[root@localhost ~]# chmod 754 a.txt 
[root@localhost ~]# ls -l a.txt 
-rwxr-xr--. 1 root root 0 2月  20 16:24 a.txt

三、属主与属组设置

  • 属主:文件所属用户

  • 属组:文件所属的用户组

    [root@localhost ~]# ls -l a.txt 
    -rwxr-xr--. 1 root root 0 2月  20 16:24 a.txt
    

    第一个root是文件所属的用户,第二个root是文件所属用户的主组。

1、chown

作用:修改文档的所属用户

语法: chown [-R] username 文档路径

示例:root家目录下的~/test目录修改所属用户为test

命令:chown -R test ~/test

[root@localhost ~]# ls -l | grep test
drwxr-xr-x. 2 root root    6 2月  20 16:41 test
[root@localhost ~]# chown -R test ~/test/
[root@localhost ~]# ls -l | grep test
drwxr-xr-x. 2 test root    6 2月  20 16:41 test

2、chgrp

作用:修改文档的所属用户组

语法: chgrp [-R] groupname 文档路径

示例:root家目录下的~/test目录修改所属用户组改为test

命令:chgrp -R test ~/test

[root@localhost ~]# chgrp -R test ~/test/
[root@localhost ~]# ls -l | grep test
drwxr-xr-x. 2 test test    6 2月  20 16:41 test

注意:可通过命令chown可以同时修改所属用户与所属用户主组

命令格式:chown -R username:groupname 文档路径

示例:root家目录下的~/test目录修改所属用户及用户主组改为root

[root@localhost ~]# chown -R root:root ~/test/
[root@localhost ~]# ls -l | grep test
drwxr-xr-x. 2 root root    6 2月  20 16:41 test

四、文件特殊权限控制

在复杂多变的生产环境中,单纯设置文件的rwx权限无法满足我们对安全和灵活性的需求,因此便有了SUIDSGIDSBIT的特殊权限位。这是一种对文件权限进行设置的特殊功能,可以与一般权限同时使用,以弥补一般权限不能实现的功能。

1、SUID

SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。

例如:所有用户都可以执行passwd命令来修改自己的用户密码,而用户密码保存在/etc/shadow文件中。仔细查看这个文件就会发现它的默认权限是000,也就是说除了root管理员以外,所有用户都没有查看或编辑该文件的权限。但是,在使用passwd命令时如果加上SUID特殊权限位,就可让普通用户临时获得程序所有者的身份,把变更的密码信息写入到shadow文件中。

[root@localhost ~]# ll /etc/shadow
----------. 1 root root 1264 2月  17 03:39 /etc/shadow
[root@localhost ~]# ll /bin/passwd 
-rwsr-xr-x. 1 root root 27856 4月   1 2020 /bin/passwd  

查看passwd命令属性时发现所有者的权限由rwx变成了rws,其中x改变成s就意味着该文件被赋予了SUID权限。

示例:设置SUID权限

① 使用root用户在家目录创建test.txt文件

[root@localhost ~]# touch test.txt
[root@localhost ~]# echo "test suid" > test.txt

② 将test.txt文件权限置空,此时只能root超级用户能够访问

[root@localhost ~]# chmod a= test.txt 
[root@localhost ~]# ll test.txt 
----------. 1 root root 10 2月  20 21:15 test.txt
[root@localhost ~]# cat test.txt 
test suid

③ 切换到其它用户使用cat进行访问,会提示权限不足

[root@localhost ~]# su tiger
[tiger@localhost root]$ cat test.txt
cat: test.txt: 权限不够

④ 切换回root用户,将cat命令赋予SUID权限

[root@localhost ~]# whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz
[root@localhost ~]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54080 8月  20 2019 /usr/bin/cat
[root@localhost ~]# chmod u+s /usr/bin/cat
[root@localhost ~]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54080 8月  20 2019 /usr/bin/cat

⑤ 再次切换到其它用户使用cat进行访问,已经可以访问

[root@localhost ~]# su tiger
[tiger@localhost root]$ cat test.txt
test suid
[tiger@localhost root]$ 

经过示例可总结出:

  • SUID只作用在二进制程序文件中
  • 在默认情况下,用户发起一个进程,该进程的属主是发起者,而并非是文件的属主,此时进程是以发起者的身份去运行。
  • 如果给二进制程序文件添加了SUID权限后,用户发起一个进程,该进程的属主为程序文件所属的属主,而并非是发起者。

注意:如果原先权限位上没有x执行权限,那么被赋予特殊权限后将变成大写的S

2、SGID

SGID主要实现如下两种功能:

  • 让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);

  • 在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。

SGID的第一种功能是参考SUID而设计的,不同点在于执行程序的用户获取的不再是文件所有者的临时权限,而是获取到文件所属组的权限。下面主要针对第二个功能进行演示。

示例:设置共享目录,让部门内的所有人员都能够读取目录中的内容

每个文件都有其归属的所有者和所属组,当创建或传送一个文件后,这个文件就会自动归属于执行这个操作的用户。我们可以创建部门共享目录后,在该目录上设置SGID特殊权限位。这样,部门内的任何人员在里面创建的任何文件都会归属于该目录的所属组,而不再是自己的基本用户组。

① 创建目录

[root@localhost ~]# cd /tmp
[root@localhost tmp]# mkdir testdir
[root@localhost tmp]# ls -ld testdir/
drwxr-xr-x. 2 root root 6 2月  20 21:56 testdir/

② 设置目录权限为777并设置目录SGID特殊权限

[root@localhost tmp]# chmod -Rf 777 testdir/
[root@localhost tmp]# chmod -Rf g+s testdir/
[root@localhost tmp]# ls -ld testdir/
drwxrwsrwx. 2 root root 6 2月  20 21:56 testdir/

③ 切换到普通用户,在目录中创建文件

[root@localhost tmp]# su tiger
[tiger@localhost tmp]$ cd testdir/
[tiger@localhost testdir]$ echo "tiger sugid">test
[tiger@localhost testdir]$ ls -l test 
-rw-rw-r--. 1 tiger root 12 2月  20 22:14 test

3、SBIT

当所有人都能够访问共享目录中的文件时,虽然不能够修改文件,但是可以删除这些文件。此时就要设置SBIT(Sticky Bit)特殊权限位了,SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。

当目录被设置SBIT特殊权限位后,文件的其他人权限部分的x执行权限就会被替换成t或者T,原本有x执行权限则会写成t,原本没有x执行权限则会被写成T

示例:设置SBIT特殊权限位,保护共享目录中的文件

① 给共享目录加上SBIT特殊权限位

[root@localhost tmp]# chmod -Rf  o+t  testdir/
[root@localhost tmp]# ls -ld testdir/
drwxrwsrwt. 2 root root 6 2月  20 22:20 testdir/

② 切换到普通用户,在目录中创建文件

[root@localhost tmp]# su tiger
[tiger@localhost tmp]$ cd testdir/
[tiger@localhost testdir]$ echo "tiger sugid">test
[tiger@localhost testdir]$ ls -l test 
-rw-rw-r--. 1 tiger root 12 2月  20 22:14 test

② 切换到另外一个普通用户进行操作,已不能删除文件

[root@localhost tmp]# su test
[test@localhost tmp]$ cd testdir/
[test@localhost testdir]$ cat test
hello 
[test@localhost testdir]$ rm test
rm:是否删除有写保护的普通文件 "test"?y
rm: 无法删除"test": 不允许的操作

五、文件的隐藏属性

Linux系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉。隐藏权限体现在明明权限充足但却无法删除某个文件的情况,或者仅能在日志文件中追加内容而不能修改或删除内容,这在一定程度上阻止了黑客篡改系统日志的图谋。因此隐藏权限保障了Linux系统的安全性。

1. chattr命令

作用:设置文件的隐藏权限

命令格式:chattr [参数] 文件

如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数”

常用参数以及作用

| 参数 | 作用 |
| ———————— | ———————————————————— |
| i | 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件 |
| a | 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only) |
| S | 文件内容在变更后立即同步到硬盘(sync) |
| s | 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域) |
| A | 不再修改这个文件或目录的最后访问时间(atime) |
| b | 不再修改文件或目录的存取时间 |
| D | 检查压缩文件中的错误 |
| d | 使用dump命令备份时忽略本文件/目录 |
| c | 默认将文件或目录进行压缩 |
| u | 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复 |
| t | 让文件系统支持尾部合并(tail-merging) |
| x | 可以直接访问压缩文件中的内容 |

示例1:创建文件夹并使用+i赋予隐藏权限。

① 创建文件夹并创建文件,然后赋予隐藏权限

[root@localhost ~]# mkdir hide
[root@localhost ~]# echo "hello"> hide/test.txt
[root@localhost ~]# chattr +i hide
[root@localhost ~]# cat hide/test.txt 
hello

② 进行修改,删除,新建操作

[root@localhost ~]# touch hide/a.txt
touch: 无法创建"hide/a.txt": 权限不够
[root@localhost ~]# rm hide/test.txt 
rm:是否删除普通文件 "hide/test.txt"?y
rm: 无法删除"hide/test.txt": 权限不够
[root@localhost ~]# echo "hello chattr"> hide/test.txt 
[root@localhost ~]# cat hide/test.txt 
hello chattr

当使用+i赋予隐藏权限后,文件只能修改子文件内容,而不能新建或删除子文件。

示例2:创建文件并赋予隐藏权限,只允许追加内容,而不能删除或覆盖文件。

① 创建普通文件,尝试删除

[root@localhost ~]# touch test.txt
[root@localhost ~]# rm test.txt 
rm:是否删除普通空文件 "test.txt"?y

文件可成功被删除。

② 创建普通文件,使用+a参数赋予隐藏权限,尝试删除

[root@localhost ~]# chattr +a test.txt
[root@localhost ~]# ls -l test.txt 
-rw-r--r--. 1 root root 0 2月  20 23:30 test.txt
[root@localhost ~]# rm test.txt 
rm:是否删除普通空文件 "test.txt"?y
rm: 无法删除"test.txt": 不允许的操作
[root@localhost ~]# echo "hello"> test.txt 
bash: test.txt: 不允许的操作
[root@localhost ~]# echo "hello">> test.txt 
[root@localhost ~]# cat test.txt 
hello

当使用+a赋予隐藏权限后,文件只能追加内容。

2、lsattr命令

作用:用于显示文件的隐藏权限。

命令格式:lsattr 文件

示例:查看文件的隐藏权限,并去掉隐藏权限
[root@localhost ~]# lsattr test.txt 
-----a---------- test.txt
[root@localhost ~]# chattr -a test.txt 
[root@localhost ~]# lsattr test.txt 
---------------- test.txt

六、文件访问控制

权限是针对某一类用户设置的,如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)了。

普通文件或目录设置ACL就是针对指定的用户或用户组设置文件或目录的操作权限。如果针对某个目录设置了ACL,则目录中的文件会继承其ACL;若针对文件设置了ACL,则文件不再继承其所在目录的ACL

1、setfacl命令

作用:用于显示文件的隐藏用于管理文件的ACL规则,使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制

命令格式:setfacl [参数] 文件名称

常用选项参数:

  • -R:对目录文件进行递归操作
  • -m:对普通文件进行ACL设置
  • -b:删除某个文件的ACL
示例:设置/root目录的ACL规则

① 没有设置ACL规则情况下普通用户访问/root会报没有权限

[root@localhost ~]# su tiger
[tiger@localhost root]$ cd /root
bash: cd: /root: 权限不够

② 返回root用户给/root设置ACL规则

[root@localhost ~]# setfacl -Rm u:tiger:rwx /root
[root@localhost ~]# su tiger
[tiger@localhost root]$ cd /root
[tiger@localhost root]$ ls
anaconda-ks.cfg  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
[tiger@localhost root]$ cat anaconda-ks.cfg 
#version=DEVEL
………………省略部分输出………………
[root@localhost ~]# su test
[test@localhost root]$ cd /root
bash: cd: /root: 权限不够

使用ACL规则后,指定的用户已经能够访问root目录,其它未授权用户无法访问。

③ 查看root目录权限信息

[root@localhost ~]# ll -d /root
dr-xrwx---+ 15 root root 4096 2月  21 09:48 /root

权限最后一个点(.)变成了加号(+),这就意味着该文件已经设置了ACL了。

2、getfacl命令

作用:用于显示文件上设置的ACL信息

命令格式:getfacl 文件名称

示例:查看/root目录的ACL规则
[root@localhost ~]# getfacl /root
getfacl: Removing leading '/' from absolute path names
# file: root
# owner: root
# group: root
user::r-x
user:tiger:rwx
group::r-x
mask::rwx
other::---

七、su命令与sudo服务

1、su命令

作用:su命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户。

命令格式:su [-] username

-:即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。

示例:将当前用户切换到test用户

<命令:su - test

[root@localhost ~]# su - test
[test@localhost ~]$ whoami
test

退出当前用户使用exit命令。

[test@localhost ~]$ exit
登出
[root@localhost ~]# whoami
root

注意:当从root管理员切换到普通用户时是不需要密码验证的,而从普通用户切换成root管理员就需要进行密码验证了;这也是一个必要的安全检查。

[root@localhost ~]# su test
[test@localhost root]$ su root
密码:
[root@localhost ~]# whoami
root

su命令后,普通用户可以完全切换到root管理员身份来完成相应工作,但这将暴露root管理员的密码,从而增大了系统密码被黑客获取的几率;这并不是最安全的方案。

2、sudo服务

sudo服务就是把特定命令的执行权限赋予给指定用户,这样既可保证普通用户能够完成特定的工作,也可以避免泄露root管理员密码。

sudo服务的配置原则:在保证普通用户完成相应工作的前提下,尽可能少地赋予额外的权限。

使用sudo命令给普通用户提供额外的权限来完成原本root管理员才能完成的任务。

要使用sudo命令操作root权限指令,需要在/etc/sudoers文件中进行配置。

直接使用vim打开是一个只读文件,修改后无法保存。只能通过sudo命令提供的visudo命令来配置用户权限。

注意:只有root管理员才可以使用visudo命令编辑sudo服务的配置文件。

格式:谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表

[root@localhost ~]# visudo
………………省略部分输出………………
100 root    ALL=(ALL)       ALL
  • root:表示用户名
  • ALL:表示允许使用的主机
  • (ALL):以谁的身份运行,ALL表示root身份
  • ALL:可执行命令的列表,ALL代表全部,也可单独指定某些命令,以,号分隔
示例1:配置tiger用户可执行的root权限的命令。
tiger ALL=(ALL)   ALL

测试结果:

[root@localhost ~]# su tiger
[tiger@localhost root]$ ls
ls: 无法打开目录.: 权限不够
[tiger@localhost root]$ sudo ls

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] tiger 的密码:# 此处输入的为tiger的密码而非root
anaconda-ks.cfg  a.txt  initial-setup-ks.cfg  test  公共  模板  视频 
图片  文档  下载  音乐  桌面
示例2:配置tiger用户只拥有root用户cat命令与ls命令的权限

① 使用whereis命令查看两个命令所在的位置

[root@localhost ~]# whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz
[root@localhost ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

② 写入配置

tiger ALL=(ALL) /usr/bin/cat,/usr/bin/ls

③ 测试结果:

[root@localhost ~]# su tiger
[tiger@localhost root]$ sudo ls
anaconda-ks.cfg  a.txt  initial-setup-ks.cfg  test  公共  模板  视频  图片  文档  下载  音乐  桌面
[tiger@localhost root]$ cat a.txt
cat: a.txt: 权限不够
[tiger@localhost root]$ sudo cat a.txt
[tiger@localhost root]$ 
示例3:查看普通用户可执行那些root权限命令

命令:sudo -l

[tiger@localhost root]$ sudo -l
………………省略部分输出………………
用户 tiger 可以在 localhost 上运行以下命令:
    (ALL) /usr/bin/cat, /usr/bin/ls

作业

1.若某个文件的所有者具有文件的读/写/执行权限,其余人仅有读权限,那么用数字法表示应该是什么?

答:所有者权限为rwx,所属组和其他人的权限为r–,因此数字法表示应该是744。

2.某链接文件的权限用数字法表示为755,那么相应的字符法表示是什么呢?

答:在Linux系统中,不同文件具有不同的类型,因此这里应写成lrwxr-xr-x。

3.如果希望用户执行某命令时临时拥有该命令所有者的权限,应该设置什么特殊权限?

答:特殊权限中的SUID。

4.若对文件设置了隐藏权限+i,则意味着什么?

答:无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件。

5.使用访问控制列表(ACL)来限制tiger用户组,使得该组中的所有成员不得在/tmp目录中写入内容。

答:想要设置用户组的ACL,则需要把u改成g,即setfacl -Rm g:tiger:r-x /tmp。

6.当普通用户使用sudo命令时是否需要验证密码?

答:系统在默认情况下需要验证当前登录用户的密码,若不想要验证,可添加NOPASSWD参数。

刚学java菜鸡,永劫无间蚀月,王者荣耀王者,金铲铲小铂金,第五人格菜鸡,原神开服玩家,星穹铁道菜鸡,崩坏的菜鸡,闪耀暖暖,和平精英,LOL,CSGO,以及三A大作收集者等等。。。