前言:
1.了解Linux系统权限管理的概述;
2.了解普通权限类型,文件的类型,属性信息以及管理命令使用;
3.了解特殊权限的类型;
4.了解特殊权限的类型,ACL权限的概述和管理命令。
目录:
可读用r表示(read): 有了可读权限,就可以读取文件的内容
可写用w表示(write): 有了可写权限,就可以在文件中写入或删除内容
可执行用x表示(execute): 有了可执行权限,就可以执行该文件,对于目录来讲,x是进入权限
d:文件夹-:普通文件l:软链接(类似Windows的快捷方式)b:块设备文件(例如硬盘、光驱等)p:管道文件c:字符设备文件(例如屏幕等串口设备)s:套接口文件
一、普通权限
在多用户计算机系统的管理中,权限是指某个特殊的用户具有特定的系统资源使用权力,像是文件夹、特定系统指令的使用或存储量的限制。
1.概述
(1)权限类型
可读用r
表示(read): 有了可读权限,就可以读取文件的内容
可写用w
表示(write): 有了可写权限,就可以在文件中写入或删除内容
可执行用x
表示(execute): 有了可执行权限,就可以执行该文件,对于目录来讲,x是进入权限
-
表示没有某个权限
权限的排列方式 | Linux下表示 | 二进制表示 | 八进制表示 |
---|---|---|---|
只读 | r-- | 100 | 4 |
只可写 | -w- | 010 | 2 |
只可执行 | --x | 001 | 1 |
可读可写 | rw- | 110 | 6 |
可读可执行 | r-x | 101 | 5 |
可写可执行 | -wx | 011 | 3 |
可读可写可执行 | rwx | 111 | 7 |
空权限 | --- | 000 | 0 |
权限类型以及相关进制转换表
(2)文件访问者的分类
对于一个文件或目录,在Linux中有三种角色:
文件的所有者:u
(user)owner,属主
文件所有者的所属组:g
(group),属组
其他用户:o
(others),除属主和不在属组内的用户
全部用户:a(all)
(3)文件类型
在Linux中,文件有如下几种类型:
d
:文件夹-
:普通文件
l
:软链接(类似Windows的快捷方式)
b
:块设备文件(例如硬盘、光驱等)
p
:管道文件
c
:字符设备文件(例如屏幕等串口设备)
s
:套接口文件
(4)文件属性信息
[root@ding ~]# ls -l wenjian1
-rw-r--r--. 1 root root 0 5月 19 15:45 wenjian1
[root@ding ~]# ls -ld wenjianjia1
drwxr-xr-x. 2 root root 6 5月 19 15:45 wenjianjia1
#文件类型 属主权限 属组权限 其他用户权限 硬链接个数 属主 属组 大小 创建日期 时间 文件名
2.普通权限管理命令
(1)chmod命令
改变文件的访问权限,权限的赋予可以使用:+,增加权限;-,删除权限;=,赋予权限
语法:
chmod [options] mode file...
选项:
选项 | 作用 |
---|---|
-R, --recursive | 改变目录及目录下的内容的访问权限 |
案例:
字符赋权
1.[root@ding ~]# chmod u+x wenjian
[root@ding ~]# ls -l
总用量 0
-rwxr--r--. 1 root root 0 5月 19 16:12 wenjian
drwxr-xr-x. 2 root root 6 5月 19 16:12 wenjianjia
2.[root@ding ~]# chmod g-w wenjian
[root@ding ~]# ls -l
总用量 0
-rwxr--r--. 1 root root 0 5月 19 16:12 wenjian
drwxr-xr-x. 2 root root 6 5月 19 16:12 wenjianjia
3.[root@ding ~]# chmod a=rwx wenjian
[root@ding ~]# ls -l
总用量 0
-rwxrwxrwx. 1 root root 0 5月 19 16:12 wenjian
drwxr-xr-x. 2 root root 6 5月 19 16:12 wenjianjia
数字赋权,属主和数组可读写,其他用户无权限
[root@ding ~]# chmod 660 wenjian
[root@ding ~]# ls -l
总用量 0
-rw-rw----. 1 root root 0 5月 19 16:12 wenjian
drwxr-xr-x. 2 root root 6 5月 19 16:12 wenjianjia
递归修改目录本身及子目录文件的权限
[root@ding ~]# chmod -R 777 wenjianjia
[root@ding ~]# ls -l wenjianjia
总用量 0
-rwxrwxrwx. 1 root root 0 5月 19 16:20 d1
-rwxrwxrwx. 1 root root 0 5月 19 16:20 f1
(2) chown命令
修改文件所有者和组别
语法:
chown [options] user [:group] file...
选项:
选项 | 作用 |
---|---|
-R, --recursive | 递归地修改目录及其下面内容的所有权 |
案例:
改变属主
[root@ding ~]# chown ding wenjian
[root@ding ~]# ls -l
总用量 0
-rwxrwxrwx. 1 ding root 0 5月 19 16:12 wenjian
drwxrwxrwx. 2 root root 26 5月 19 16:20 wenjianjia
改变属组
[root@ding ~]# chown .ding wenjian
[root@ding ~]# ls -l
总用量 0
-rwxrwxrwx. 1 ding ding 0 5月 19 16:12 wenjian
drwxrwxrwx. 2 root root 26 5月 19 16:20 wenjianjia
改变属主和属组
1.[root@ding ~]# chown root:root wenjian
[root@ding ~]# ls -l
总用量 0
-rwxrwxrwx. 1 root root 0 5月 19 16:12 wenjian
drwxrwxrwx. 2 ding ding 26 5月 19 16:20 wenjianjia
2.[root@ding ~]# chown root.root wenjian
[root@ding ~]# ls -l
总用量 0
-rwxrwxrwx. 1 root root 0 5月 19 16:12 wenjian
drwxrwxrwx. 2 root root 26 5月 19 16:20 wenjianjia
递归修改目录本身及子目录文件的属主与数组
[root@ding ~]# chown -R ding.ding wenjianjia
[root@ding ~]# ls -l wenjianjia
总用量 0
-rwxrwxrwx. 1 ding ding 0 5月 19 16:20 d1
-rwxrwxrwx. 1 ding ding 0 5月 19 16:20 f1
(3) umask命令
显示(root用户为0022,普通用户为0002)或设定文件模式掩码,设定用户文件创建掩码为 MODE 模式。如果省略了 MODE,则打印当前掩码的值;
当设置umask掩码为奇数时,针对文件来说具有了x执行权限,与系统默认文件不具有x执行权相冲突,此时,权限较小则进位,权限较大则减位。
语法:
umask [-p] [-S] [模式]
选项:
选项 | 作用 |
---|---|
-p | 如果省略 MDOE 模式,以可重用为输入的格式输入 |
-S | 以符号形式输出,否则以八进制数格式输出 |
案例:
查看权限掩码
[root@ding ~]# umask
0022
修改权限掩码,只是临时的,切换shell或重启系统将失效
[root@ding ~]# umask 0222
[root@ding ~]# umask
0222
[root@ding ~]# mkdir d3
[root@ding ~]# ls -l
总用量 0
dr-xr-xr-x. 2 root root 6 5月 19 16:36 d3
-rwxrwxrwx. 1 root root 0 5月 19 16:12 wenjian
drwxrwxrwx. 2 ding ding 26 5月 19 16:20 wenjianjia
二、特殊权限
1.概述
在linux系统中,我们熟知有rwx三种权限,对应所有者,同组用户,其他用户三种用户的权限,一般而言,这三种权限已经能够满足需求,但是针对一些特殊情况,还需要有三种特殊权限来完善文件权限的管理。
(1)权限类型
SUID权限:
1.set UID,第3位上表现为s,对应数字为4。
2.如果该属主权限位上有执行权限,则会显示(小写)s。
3.如果该属主权限位上没有执行权限,则会显示(大写)S。
4.只要一个命令文件在属主权限位上的x变成s的话,那么其它用户在执行这个命令文件时,就会以该命令文件的属主用户身份去执行。
5.suid仅对二进制可执行程序有效,其它文件或目录无效。
6.应用场景:用户命令临时提权
SGID权限:
1.set GID,第6位上表现为s,对应数字为2。
2.如果该属组权限位上有执行权限,则会显示(小写)s。
3.如果该属组权限位上没有执行权限,则会显示(大写)S。
4.SGID改变的是执行者的所属组,可以对可执行文件和目录设置。一般情况下是设置给目录使用的,通过对目录设置SGID属性,可以使得访问在该目录下创建的所有文件的所有权,都继承原目录的所有者,而非创建者。因为一旦有用户进入到该目录下,由于具有SGID权限,进入目录后的用户就会变成该目录的属组所有者,在该目录下创建的所有文件,都以该目录的所有者的身份创建。
5.应用场景:用于文件共享
SBIT权限:
1.SBIT权限同样只对目录有效,在权限位的最低位表现为t,对应数字为1。
2.如果该其它用户权限位上有执行权限,则会显示(小写)t。
3.如果该其它用户权限位上没有执行权限,则会显示(大写)T。
4.通过对目录设置SBIT权限,并且该目录的权限为777,则所有用户可以在该目录下都可以创建文件,并且文件所有者是自己。但是在SBID权限的目录下,只有root和文件的所有者才能删除该文件,即使文件的属性为777也不能被其他用户删除。
5.sticky目录表现在others 的 x 位,用(小写)t 表示,没有执行权限时(大写)T,一个目录即使使得它的权限为“777” ,如果设置了粘滞位,除了目录的属主和“root”用户有权限删除,其它用户都不允许删除。
6.应用场景:保护文件的私有性,防止误删除
2.案例
(1)SUID权限
如果普通用户在使用passwd命令时,是以root用户身份去执行的话,那普通用户是不是可以修改其它用户的密码? 答:是不可以的,因为在passwd命令中,存在一种判断,此判断会在执行passwd命令时去判断执行的用户时是root还是普通用户,如果是普通用户,那么只能使用passwd命令,后面不可加上参数,如果是root用户,后面才可加上其它参数(参数就是用户)。那么普通用户就无法进行修改其它用户的密码。
[root@ding ~]# useradd dyx #创建一个用户
[root@ding ~]# passwd dyx #设置它的密码
更改用户 dyx 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@ding ~]# ll /bin/passwd #查看passwd命令权限
-rwsr-xr-x. 1 root root 27856 4月 1 2020 /bin/passwd
[root@ding ~]# su dyx #切换到hello用户
[dyx@ding root]$ passwd #修改密码
更改用户 dyx 的密码 。
为 dyx 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。 #可以成功修改
[dyx@ding root]$ su root #返回root用户
密码:
欢迎来到我的王国!
[root@ding ~]# chmod u-s /bin/passwd #修改passwd的权限,去掉suid权限
[root@ding ~]# ll /bin/passwd
-rwxr-xr-x. 1 root root 27856 4月 1 2020 /bin/passwd #发现s变成了x
[root@ding ~]# su dyx #再切换到hello用户
[dyx@ding root]$ passwd #修改密码
更改用户 dyx 的密码 。
为 dyx 更改 STRESS 密码。
(当前)UNIX 密码:
passwd: 鉴定令牌操作错误 #密码无法进行修改
(2)SGID权限
[root@ding ~]# mkdir mulu #创建目录
[root@ding ~]# ll
总用量 0
dr-xr-xr-x. 2 root root 6 5月 19 16:36 d3
drwxr-xr-x. 2 root root 6 5月 19 18:01 mulu #查看权限
-rwxrwxrwx. 1 root root 0 5月 19 16:12 wenjian
drwxrwxrwx. 2 ding ding 26 5月 19 16:20 wenjianjia
[root@ding ~]# chmod 777 mulu #查看权限为777
[root@ding ~]# ll
总用量 0
dr-xr-xr-x. 2 root root 6 5月 19 16:36 d3
drwxrwxrwx. 2 root root 6 5月 19 18:01 mulu #权限已修改
-rwxrwxrwx. 1 root root 0 5月 19 16:12 wenjian
drwxrwxrwx. 2 ding ding 26 5月 19 16:20 wenjianjia
[root@ding ~]# cd mulu #进入到cd目录
[root@ding mulu]# mkdir aaa #创建aaa文件
[root@ding mulu]# ll
总用量 0
drwxr-xr-x. 2 root root 6 5月 19 18:03 aaa #可以看到aaa文件的属主和数组都是root
[root@ding mulu]# su dyx #切换dyx用户
[dyx@ding mulu]$ mkdir bbb #创建bbb目录
[dyx@ding mulu]$ ll
总用量 0
drwxr-xr-x. 2 root root 6 5月 19 18:03 aaa
drwxrwxr-x. 2 dyx dyx 6 5月 19 18:04 bbb #可以看到bbb文件的属主和属组都是hello文件
[dyx@ding mulu]$ exit #返回root用户
exit
[root@ding mulu]# cd ../ #返回上一级
[root@ding ~]# chmod g+s mulu #将ydq目录增加sgid
[root@ding ~]# ll
总用量 0
dr-xr-xr-x. 2 root root 6 5月 19 16:36 d3
drwxrwsrwx. 4 root root 28 5月 19 18:04 mulu #属组的权限已增加了s
-rwxrwxrwx. 1 root root 0 5月 19 16:12 wenjian
drwxrwxrwx. 2 ding ding 26 5月 19 16:20 wenjianjia
[root@ding ~]# cd mulu #进入ydq目录
[root@ding mulu]# su dyx #切换hello用户
[dyx@ding mulu]$ mkdir ccc #创建目录ccc
[dyx@ding mulu]$ ll
总用量 0
drwxr-xr-x. 2 root root 6 5月 19 18:03 aaa
drwxrwxr-x. 2 dyx dyx 6 5月 19 18:04 bbb
drwxrwsr-x. 2 dyx root 6 5月 19 18:16 ccc #ccc的属组用户已变为跟ydq目录一致的用户
(3)SBIT权限
[root@ding ~]# ll #查看权限
总用量 0
dr-xr-xr-x. 2 root root 6 5月 19 16:36 d3
drwxrwsrwx. 5 root root 39 5月 19 18:16 mulu
drwxrwxrwx. 2 root root 6 5月 19 18:26 sbit #权限为777
-rwxrwxrwt. 1 root root 0 5月 19 16:12 wenjian
drwxrwxrwx. 2 ding ding 26 5月 19 16:20 wenjianjia
[root@ding ~]# chmod o+t sbit #增加sticky bit权限
[root@ding ~]# ll #查看权限
总用量 0
dr-xr-xr-x. 2 root root 6 5月 19 16:36 d3
drwxrwsrwx. 5 root root 39 5月 19 18:16 mulu
drwxrwxrwt. 2 root root 6 5月 19 18:26 sbit #其它用户上权限多了sticky bit权限
-rwxrwxrwt. 1 root root 0 5月 19 16:12 wenjian
drwxrwxrwx. 2 ding ding 26 5月 19 16:20 wenjianjia
[root@ding ~]# cd sbit #进入到yude目录下面
[root@ding sbit]# su dyx #切换dyx用户
[dyx@ding sbit]$ touch bbb #创建一个文件
[dyx@ding sbit]$ ll #查看文件,文件正常创建
总用量 0
-rw-rw-r--. 1 dyx dyx 0 5月 19 18:29 bbb
[dyx@ding sbit]$ exit #退出当前用户
exit
[root@ding sbit]# su Dyx #切换到Dyx用户
[Dyx@ding sbit]$ ll
总用量 0
-rw-rw-r--. 1 dyx dyx 0 5月 19 18:29 bbb #可以查看到hello用户创建的文件
[Dyx@ding sbit]$ rm -rf ./bbb #进行删除bbb文件
rm: 无法删除"./bbb": 不允许的操作 #无法进行删除
三、ACL权限
1.概述
读、写、执行权限是用户操作文件、目录的权限。ACL权限也是用户对文件是否有读、写、执行的权限。目录或文件的所有者、所属组、其他人的权限都已经设定,但是如果想要让新用户对文件、目录有不同的权限(不同于所有者、所属组、其他人的权限),为了满足这种特殊的需求,需要对用户单独设置ACL权限。是否支持ACL权限,不是文件支持也不是用户支持,而是文件所在的分区是否支持ACL权限。(Linux系统默认开启)
查看分区ACL权限是否开启dumpe2fs
dumpe2fs -h 分区
2.管理命令
(1)setfacl命令
设置文件访问权限列表,即acl
语法:
setfacl [选项] { -m|-M|-x|-X ... } file ...
选项:
选项 | 作用 |
---|---|
-m, --modify=acl | 修改文件的当前ACL |
-b, --remove-all | 删除所有扩展ACL条目 |
-R, --recursive | 递归进入子目录 |
案例:
设置目录的ACL
[root@ding ~]# setfacl -m user:Dyx:rwx mulu
[root@ding ~]# getfacl mulu
# file: mulu
# owner: root
# group: root
# flags: -s-
user::r-x
user:dyx:rwx
user:Dyx:rwx
group::r-x
mask::rwx
other::r-x
(2)getfacl命令
查看文件的ACL
语法:
getfacl [选项] file ...
选项:
选项 | 作用 |
---|---|
-a, --access | 仅显示文件的ACL |
-d, --default | 仅显示文件的默认ACL |
案例:
查看文件或目录的acl权限
[root@ding ~]# getfacl mulu
# file: mulu
# owner: root
# group: root
# flags: -s-
user::r-x
user:dyx:rwx
user:Dyx:rwx
group::r-x
mask::rwx
other::r-x
总结:
1.文件类型与标准权限级别 Linux系统中的文件类型包括普通文件、目录、符号链接、设备文件等。 每种文件类型都有其特定的权限设置。
2.特殊权限位 除了标准权限级别外,Linux还提供了特殊权限位,如SUID(Set User ID)、SGID(Set Group ID)和粘滞位(Sticky Bit)。 这些特殊权限位可以进一步细化对文件和目录的访问控制,以满足特定需求。
3.权限管理的重要性 权限管理在Linux系统中扮演着至关重要的角色。