一、普通权限在多用户计算机系统的管理中,权限是指某个特殊的用户具有特定的系统资源使用权力,像是文件夹、特定系统指令的使用或存储量的限制。

1、概述1.1、权限类型可读用r表示(read): 有了可读权限,就可以读取文件的内容

可写用w表示(write): 有了可写权限,就可以在文件中写入或删除内容

可执行用x表示(execute): 有了可执行权限,就可以执行该文件,对于目录来讲,x是进入权限

-表示没有某个权限

权限的排列方式Linux下表示二进制表示八进制表示只读r--1004只可写-w-0102只可执行--x0011可读可写rw-1106可读可执行r-x1015可写可执行-wx0113可读可写可执行rwx1117空权限---00001.2、文件访问者的分类对于一个文件或目录,在Linux中有三种角色:

文件的所有者:u(user)owner,属主

文件所有者的所属组:g(group),属组

其他用户:o(others),除属主和不在属组内的用户

全部用户:a(all)

1.3、文件类型在Linux中,文件有如下几种类型:

d:文件夹

-:普通文件

l:软链接(类似Windows的快捷方式)

b:块设备文件(例如硬盘、光驱等)

p:管道文件

c:字符设备文件(例如屏幕等串口设备)

s:套接口文件

1.4、文件属性信息

[root@localhost ~]# ls -ld li.txt/

drwxr-xr-x. 2 root root 6 8月 3 10:59 li.txt/

#文件类型 属主权限 属组权限 其他用户权限 硬链接个数 属主 属组 大小 创建日期 时间 文件名

2、普通权限管理命令2.1、chmod命令改变文件的访问权限,权限的赋予可以使用:+,增加权限;-,删除权限;=,赋予权限

语法:chmod [options] mode file...

选项:选项作用-R, --recursive改变目录及目录下的内容的访问权限案例:1)字符赋权

[root@localhost opt]# chmod g-x cc

[root@localhost opt]# ls -l

总用量 12

drwxr--r-x. 2 root root 6 8月 1 16:23 cc

drwxr-xr-x. 3 root root 17 8月 1 16:25 jj

-rw-r--r--. 1 root root 62 8月 1 16:06 li.txt

drwxr-xr-x. 2 root root 6 8月 1 16:21 mmm

-rw-r--r--. 1 root root 2110 8月 5 18:02 passwd

drwxr-xr-x. 2 root root 6 8月 1 16:23 vv

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23 zz

[root@localhost opt]# chmod g+x cc

[root@localhost opt]# ls -l

总用量 12

drwxr-xr-x. 2 root root 6 8月 1 16:23 cc

drwxr-xr-x. 3 root root 17 8月 1 16:25 jj

-rw-r--r--. 1 root root 62 8月 1 16:06 li.txt

drwxr-xr-x. 2 root root 6 8月 1 16:21 mmm

-rw-r--r--. 1 root root 2110 8月 5 18:02 passwd

drwxr-xr-x. 2 root root 6 8月 1 16:23 vv

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23

[root@localhost opt]# chmod a=rwx jj

[root@localhost opt]# ls -l

总用量 12

drwxr-xr-x. 2 root root 6 8月 1 16:23 cc

drwxrwxrwx. 3 root root 17 8月 1 16:25 jj

-rw-r--r--. 1 root root 62 8月 1 16:06 li.txt

drwxr-xr-x. 2 root root 6 8月 1 16:21 mmm

-rw-r--r--. 1 root root 2110 8月 5 18:02 passwd

drwxr-xr-x. 2 root root 6 8月 1 16:23 vv

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23 zz

2)数字赋权,属主和数组可读写,其他用户无权限

[root@localhost opt]# chmod 661 cc

[root@localhost opt]# ls -l

总用量 12

drw-rw---x. 2 root root 6 8月 1 16:23 cc

drwxrwxrwx. 3 root root 17 8月 1 16:25 jj

-rw-r--r--. 1 root root 62 8月 1 16:06 li.txt

drwxr-xr-x. 2 root root 6 8月 1 16:21 mmm

-rw-r--r--. 1 root root 2110 8月 5 18:02 passwd

drwxr-xr-x. 2 root root 6 8月 1 16:23 vv

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23 zz

3)递归修改目录本身及子目录文件的权限

[root@localhost opt]# chmod -R 553 jj

[root@localhost opt]# ls -l

总用量 12

drw-rw---x. 2 root root 6 8月 1 16:23 cc

dr-xr-x-wx. 3 root root 17 8月 1 16:25 jj

-rw-r--r--. 1 root root 62 8月 1 16:06 li.txt

drwxr-xr-x. 2 root root 6 8月 1 16:21 mmm

-rw-r--r--. 1 root root 2110 8月 5 18:02 passwd

drwxr-xr-x. 2 root root 6 8月 1 16:23 vv

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23 zz

[root@localhost opt]# ls -l jj

总用量 0

dr-xr-x-wx. 3 root root 16 8月 1 16:25 dsa

2.2、chown命令修改文件所有者和组别

语法:chown [options] user [:group] file...

选项:选项作用-R, --recursive递归地修改目录及其下面内容的所有权案例:1)改变属主

[root@localhost opt]# chown user1 cc

[root@localhost opt]# ls -l

总用量 12

drw-rw---x. 2 user1 root 6 8月 1 16:23 cc

dr-xr-x-wx. 3 root root 17 8月 1 16:25 jj

-rw-r--r--. 1 root root 62 8月 1 16:06 li.txt

drwxr-xr-x. 2 root root 6 8月 1 16:21 mmm

-rw-r--r--. 1 root root 2110 8月 5 18:02 passwd

drwxr-xr-x. 2 root root 6 8月 1 16:23 vv

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23 zz

2)改变属组

[root@localhost opt]# chown .user1 cc

[root@localhost opt]# ls -l

总用量 12

drw-rw---x. 2 user1 user1 6 8月 1 16:23 cc

dr-xr-x-wx. 3 root root 17 8月 1 16:25 jj

-rw-r--r--. 1 root root 62 8月 1 16:06 li.txt

drwxr-xr-x. 2 root root 6 8月 1 16:21 mmm

-rw-r--r--. 1 root root 2110 8月 5 18:02 passwd

drwxr-xr-x. 2 root root 6 8月 1 16:23 vv

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23 zz

3)改变属主和数组

[root@localhost opt]# chown user4.user4 cc

[root@localhost opt]# ls -l

总用量 12

drw-rw---x. 2 user4 user4 6 8月 1 16:23 cc

dr-xr-x-wx. 3 root root 17 8月 1 16:25 jj

-rw-r--r--. 1 root root 62 8月 1 16:06 li.txt

drwxr-xr-x. 2 root root 6 8月 1 16:21 mmm

-rw-r--r--. 1 root root 2110 8月 5 18:02 passwd

drwxr-xr-x. 2 root root 6 8月 1 16:23 vv

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23 zz

4)递归修改目录本身及子目录文件的属主与数组

[root@localhost opt]# chown -R user1.user1 jj

[root@localhost opt]# ls -l

总用量 12

drw-rw---x. 2 user4 user4 6 8月 1 16:23 cc

dr-xr-x-wx. 3 user1 user1 17 8月 1 16:25 jj

-rw-r--r--. 1 root root 62 8月 1 16:06 li.txt

drwxr-xr-x. 2 root root 6 8月 1 16:21 mmm

-rw-r--r--. 1 root root 2110 8月 5 18:02 passwd

drwxr-xr-x. 2 root root 6 8月 1 16:23 vv

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23 zz

[root@localhost opt]# ls -l jj

总用量 0

dr-xr-x-wx. 3 user1 user1 16 8月 1 16:25 dsa

2.3、umask命令显示(root用户为0022,普通用户为0002)或设定文件模式掩码,设定用户文件创建掩码为 MODE 模式。如果省略了 MODE,则打印当前掩码的值;

当设置umask掩码为奇数时,针对文件来说具有了x执行权限,与系统默认文件不具有x执行权相冲突,此时,权限较小则进位,权限较大则减位。

语法: umask [-p] [-S] [模式]

选项:选项作用-p如果省略 MDOE 模式,以可重用为输入的格式输入-S以符号形式输出,否则以八进制数格式输出案例:1)查看权限掩码

[root@localhost opt]# umask

0022

2)修改权限掩码,只是临时的,切换shell或重启系统将失效

[root@localhost opt]# umask

0022

[root@localhost opt]# mkdir wo

[root@localhost opt]# ls -l

总用量 12

drw-rw---x. 2 user4 user4 6 8月 1 16:23 cc

dr-xr-x-wx. 3 user1 user1 17 8月 1 16:25 jj

-rw-r--r--. 1 root root 62 8月 1 16:06 li.txt

drwxr-xr-x. 2 root root 6 8月 1 16:21 mmm

-rw-r--r--. 1 root root 2110 8月 5 18:02 passwd

drwxr-xr-x. 2 root root 6 8月 1 16:23 vv

drwxr-xr-x. 2 root root 6 8月 8 16:04 wo

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23 zz

二、特殊权限1、概述在linux系统中,我们熟知有rwx三种权限,对应所有者,同组用户,其他用户三种用户的权限,一般而言,这三种权限已经能够满足需求,但是针对一些特殊情况,还需要有三种特殊权限来完善文件权限的管理。

权限类型SUID权限set UID,第3位上表现为s,对应数字为4。

如果该属主权限位上有执行权限,则会显示(小写)s。

如果该属主权限位上没有执行权限,则会显示(大写)S。

只要一个命令文件在属主权限位上的x变成s的话,那么其它用户在执行这个命令文件时,就会以该命令文件的属主用户身份去执行。

suid仅对二进制可执行程序有效,其它文件或目录无效。

应用场景:用户命令临时提权

SGID权限set GID,第6位上表现为s,对应数字为2。

如果该属组权限位上有执行权限,则会显示(小写)s。

如果该属组权限位上没有执行权限,则会显示(大写)S。

SGID改变的是执行者的所属组,可以对可执行文件和目录设置。一般情况下是设置给目录使用的,通过对目录设置SGID属性,可以使得访问在该目录下创建的所有文件的所有权,都继承原目录的所有者,而非创建者。因为一旦有用户进入到该目录下,由于具有SGID权限,进入目录后的用户就会变成该目录的属组所有者,在该目录下创建的所有文件,都以该目录的所有者的身份创建。

应用场景:用于文件共享

SBIT权限SBIT权限同样只对目录有效,在权限位的最低位表现为t,对应数字为1。

如果该其它用户权限位上有执行权限,则会显示(小写)t。

如果该其它用户权限位上没有执行权限,则会显示(大写)T。

通过对目录设置SBIT权限,并且该目录的权限为777,则所有用户可以在该目录下都可以创建文件,并且文件所有者是自己。但是在SBID权限的目录下,只有root和文件的所有者才能删除该文件,即使文件的属性为777也不能被其他用户删除。

sticky目录表现在others 的 x 位,用(小写)t 表示,没有执行权限时(大写)T,一个目录即使使得它的权限为“777” ,如果设置了粘滞位,除了目录的属主和“root”用户有权限删除,其它用户都不允许删除。

应用场景:保护文件的私有性,防止误删除

2、案例2.1、SUID权限如果普通用户在使用passwd命令时,是以root用户身份去执行的话,那普通用户是不是可以修改其它用户的密码? 答:是不可以的,因为在passwd命令中,存在一种判断,此判断会在执行passwd命令时去判断执行的用户时是root还是普通用户,如果是普通用户,那么只能使用passwd命令,后面不可加上参数,如果是root用户,后面才可加上其它参数(参数就是用户)。那么普通用户就无法进行修改其它用户的密码。

[root@localhost opt]# useradd zhang

[root@localhost opt]# passwd zhang

更改用户 zhang 的密码 。

新的密码:

重新输入新的密码:

passwd:所有的身份验证令牌已经成功更新。

[root@localhost opt]# ll /bin/passwd

-rwsr-xr-x. 1 root root 32656 5月 15 2022 /bin/passwd

[root@localhost opt]# su zhang

[zhang@localhost opt]$ passwd

更改用户 zhang 的密码 。

当前的密码:

新的密码:

重新输入新的密码:

passwd:所有的身份验证令牌已经成功更新。

[root@localhost opt]# chmod u-s /bin/passwd

[root@localhost opt]# ll /bin/passwd

-rwxr-xr-x. 1 root root 32656 5月 15 2022 /bin/passwd

[root@localhost opt]# su zhang

[zhang@localhost opt]$ passwd

更改用户 zhang 的密码 。

当前的密码:

新的密码:

重新输入新的密码:

passwd: 鉴定令牌操作错误

2.2、SGID权限

[root@localhost opt]# mkdir ydq

[root@localhost opt]# ll

总用量 12

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

drwxr-xr-x. 2 root root 6 8月 8 21:35 ydq

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23 zz

[root@localhost opt]# chmod 777 ydq

[root@localhost opt]# ll

总用量 12

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

drwxrwxrwx. 2 root root 6 8月 8 21:35 ydq

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23 zz

[root@localhost opt]# cd ydq

[root@localhost ydq]# mkdir aaa

[root@localhost ydq]# ll

总用量 0

drwxr-xr-x. 2 root root 6 8月 8 21:36 aaa

[root@localhost ydq]# su zhang

[zhang@localhost ydq]$ mkdir bbb

[zhang@localhost ydq]$ ll

总用量 0

drwxr-xr-x. 2 root root 6 8月 8 21:36 aaa

drwxr-xr-x. 2 zhang zhang 6 8月 8 21:37 bbb

[zhang@localhost ydq]$ exit

exit

[root@localhost ydq]# cd ..

[root@localhost opt]# chmod g+s ydq

[root@localhost opt]# ll

总用量 12

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

drwxrwsrwx. 4 root root 28 8月 8 21:37 ydq

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23 zz

[root@localhost opt]# cd ydq

[root@localhost ydq]# su zhang

[zhang@localhost ydq]$ mkdir ccc

[zhang@localhost ydq]$ ll

总用量 0

drwxr-xr-x. 2 root root 6 8月 8 21:36 aaa

drwxr-xr-x. 2 zhang zhang 6 8月 8 21:37 bbb

drwxr-sr-x. 2 zhang root 6 8月 8 21:39 ccc

2.3、SBIT权限

[root@localhost opt]# ll

总用量 12

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

drwxrwxrwx. 5 root root 39 8月 8 21:39 ydq

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23 zz

[root@localhost opt]# chmod o+t ydq

[root@localhost opt]# ll

总用量 12

drwxr-xr-x. 2 root root 6 8月 1 16:23 xx

drwxrwxrwt. 5 root root 39 8月 8 21:39 ydq

-rw-r--r--. 1 root root 47 8月 5 14:47 zhang.txt

drwxr-xr-x. 2 root root 6 8月 1 16:23 zz

[root@localhost opt]# cd ydq

[root@localhost ydq]# ll

总用量 0

drwxr-xr-x. 2 root root 6 8月 8 21:36 aaa

drwxr-xr-x. 2 zhang zhang 6 8月 8 21:37 bbb

drwxr-sr-x. 2 zhang root 6 8月 8 21:39 ccc

[root@localhost ydq]# su zhang

[zhang@localhost ydq]$ touch ddd

[zhang@localhost ydq]$ ll

总用量 0

drwxr-xr-x. 2 root root 6 8月 8 21:36 aaa

drwxr-xr-x. 2 zhang zhang 6 8月 8 21:37 bbb

drwxr-sr-x. 2 zhang root 6 8月 8 21:39 ccc

-rw-r--r--. 1 zhang zhang 0 8月 8 21:45 ddd

[zhang@localhost ydq]$ exit

[root@localhost ydq]# su li

[li@localhost ydq]$ ll

总用量 0

drwxr-xr-x. 2 root root 6 8月 8 21:36 aaa

drwxr-xr-x. 2 zhang zhang 6 8月 8 21:37 bbb

drwxr-sr-x. 2 zhang root 6 8月 8 21:39 ccc

-rw-r--r--. 1 zhang zhang 0 8月 8 21:45 ddd

[li@localhost ydq]$ rm -rf ./ddd

rm: 无法删除 './ddd': 不允许的操作

三、ACL权限1、概述读、写、执行权限是用户操作文件、目录的权限。ACL权限也是用户对文件是否有读、写、执行的权限。目录或文件的所有者、所属组、其他人的权限都已经设定,但是如果想要让新用户对文件、目录有不同的权限(不同于所有者、所属组、其他人的权限),为了满足这种特殊的需求,需要对用户单独设置ACL权限。是否支持ACL权限,不是文件支持也不是用户支持,而是文件所在的分区是否支持ACL权限。

查看分区ACL权限是否开启dumpe2fs

dumpe2fs -h 分区

2、管理命令2.1、setfacl命令设置文件访问权限列表,即acl

语法:setfacl [选项] { -m|-M|-x|-X ... } file ...

选项:

选项作用-m, --modify=acl修改文件的当前ACL-b, --remove-all删除所有扩展ACL条目-R, --recursive递归进入子目录案例:设置目录的acl

[root@localhost ydq]# setfacl -m user:zhang:rwx bbb

[root@localhost ydq]# getfacl bbb

# file: bbb

# owner: zhang

# group: zhang

user::rwx

user:zhang:rwx

group::r-x

mask::rwx

other::r-x

2.2、getfacl命令查看文件的ACL

语法:getfacl [选项] file ...

选项:选项作用-a, --access仅显示文件的ACL-d, --default仅显示文件的默认ACL案例:查看文件或目录的acl权

[root@localhost ydq]# ll

总用量 0

drwxr-xr-x. 2 root root 6 8月 8 21:36 aaa

drwxr-xr-x. 2 zhang zhang 6 8月 8 21:37 bbb

drwxr-sr-x. 2 zhang root 6 8月 8 21:39 ccc

-rw-r--r--. 1 zhang zhang 0 8月 8 21:45 ddd

[root@localhost ydq]# getfacl aaa

# file: aaa

# owner: root

# group: root

user::rwx

group::r-x

other::r-x