目录
一、普通权限
1、概述
1.1、权限类型
可读权限用r表示(read):有了可读权限,就可以读取文件的内容 -4
可写权限用w表示(write):有了可写权限,就可以在文件中写入或删除内容-2
可执行权限用x表示(execute):有了可执行权限,就可以执行该文件,对于目录来讲,x是进入权限-1
-表示没有某个权限
1.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 -l file-rw-r--r--. 1 root root 0 4月 9 16:49 file
[root@localhost ~]# ls -ld test/drwxr-xr-x. 2 root root 6 4月 9 16:49
test/#文件类型 属主权限 属组权限 其他用户权限 硬链接个数 属主 属组 大小 创建日期 时间 文件名
[root@localhost ~]# ls -l passwd
-rw-r--r--. 1 root root 2259 5月 12 19:44 passwd
[root@localhost ~]# ls -ld
dr-xr-x---. 18 root root 4096 5月 19 12:00 .
2、普通权限管理命令
2.1、chmod命令
改变文件的访问权限,权限的赋予可以使用:+,增加权限;-,删除权限;=,赋予权限
语法:
chmod [options] mode file...
选项:
-R,--recursive 改变目录及目录下的内容的访问权限
案例:
1)字符赋权
[root@localhost ~]# ls -l quanxianceshi -rw-r--r--. 1 root root 0 5月 19 18:22 quanxianceshi [root@localhost ~]# chmod u+x quanxianceshi [root@localhost ~]# ls -l quanxianceshi -rwxr--r--. 1 root root 0 5月 19 18:22 quanxianceshi
2)数字赋权,属主和数组可读写,其他用户无权限
[root@localhost ~]# ls -l quanxianceshi -rw-r--r--. 1 root root 0 5月 19 18:22 quanxianceshi [root@localhost ~]# chmod 660 quanxianceshi [root@localhost ~]# ls -l quanxianceshi -rw-rw----. 1 root root 0 5月 19 18:22 quanxianceshi
3)递归修改目录本身及子目录文件的权限
[root@localhost ~]# ls -l quanxianceshi -rw-rw----. 1 root root 0 5月 19 18:22 quanxianceshi [root@localhost ~]# chmod -R 777 quanxianceshi [root@localhost ~]# ls -l quanxianceshi -rwxrwxrwx. 1 root root 0 5月 19 18:22 quanxianceshi
2.2、chown命令
修改文件所有者和组别
语法:
chown [options] user [:group] file...
选项:
-R,--recursive 改变目录及目录下的内容的访问权限
案例:
1)改变属主
[root@localhost ~]# ls -l quanxianceshi -rwxrwxrwx. 1 root root 0 5月 19 18:22 quanxianceshi [root@localhost ~]# chown qian quanxianceshi [root@localhost ~]# ls -l quanxianceshi -rwxrwxrwx. 1 qian root 0 5月 19 18:22 quanxianceshi
2)改变属组
[root@localhost ~]# ls -l quanxianceshi -rwxrwxrwx. 1 qian root 0 5月 19 18:22 quanxianceshi [root@localhost ~]# chown .qian quanxianceshi [root@localhost ~]# ls -l quanxianceshi -rwxrwxrwx. 1 qian qian 0 5月 19 18:22 quanxianceshi
3)改变属主和数组
[root@localhost ~]# ls -l quanxianceshi -rwxrwxrwx. 1 qian qian 0 5月 19 18:22 quanxianceshi [root@localhost ~]# chown root.root quanxianceshi [root@localhost ~]# ls -l quanxianceshi -rwxrwxrwx. 1 root root 0 5月 19 18:22 quanxianceshi
2.3、umask命令
显示(root用户为0022,普通用户为0002)或设定文件模式掩码,设定用户文件创建掩码为 MODE 模式。如果省略了 MODE,则打印当前掩码的值;
当设置umask掩码为奇数时,针对文件来说具有了x执行权限,与系统默认文件不具有x执行权相冲突,此时,权限较小则进位,权限较大则减位。
语法:
umask [-p] [-S] [模式]
选项:
-p : 如果省略 MDOE 模式,以可重用为输入的格式输入
-S : 以符号形式输出,否则以八进制数格式输出
案例:
1)查看权限掩码
[root@localhost ~]# umask
0022
2)修改权限掩码,只是临时的,切换shell或重启系统将失效
[root@localhost ~]# umask 0222 [root@localhost ~]# umask 0222 [root@localhost ~]# mkdir d3 [root@localhost ~]# ls -l 总用量 88 -rw-r--r--. 1 root root 965 5月 14 16:42 : -rw-r--r--. 1 root root 6373 5月 13 00:41 ! -rw-r--r--. 1 root root 6373 5月 13 00:40 123 -rw-------. 1 root root 1673 5月 8 00:51 anaconda-ks.cfg -r-xr--r--. 1 root root 675 5月 7 12:12 CentOS-Base.repo dr-xr-xr-x. 2 root root 6 5月 19 18:52 d3
二、特殊权限
1、概述
在linux系统中,我们熟知有rwx三种权限,对应所有者,同组用户,其他用户三种用户的权限,一般而言,这三种权限已经能够满足需求,但是针对一些特殊情况,还需要有三种特殊权限来完善文件权限的管理。
权限类型:
1.1、SUID权限
SUID权限
-
set UID,第3位上表现为s,对应数字为4。
-
如果该属主权限位上有执行权限,则会显示(小写)s。
-
如果该属主权限位上没有执行权限,则会显示(大写)S。
-
只要一个命令文件在属主权限位上的x变成s的话,那么其它用户在执行这个命令文件时,就会以该命令文件的属主用户身份去执行。
-
suid仅对二进制可执行程序有效,其它文件或目录无效。
-
应用场景:用户命令临时提权
1.2、SGID权限
-
set GID,第6位上表现为s,对应数字为2。
-
如果该属组权限位上有执行权限,则会显示(小写)s。
-
如果该属组权限位上没有执行权限,则会显示(大写)S。
-
SGID改变的是执行者的所属组,可以对可执行文件和目录设置。一般情况下是设置给目录使用的,通过对目录设置SGID属性,可以使得访问在该目录下创建的所有文件的所有权,都继承原目录的所有者,而非创建者。因为一旦有用户进入到该目录下,由于具有SGID权限,进入目录后的用户就会变成该目录的属组所有者,在该目录下创建的所有文件,都以该目录的所有者的身份创建。
-
应用场景:用于文件共享
1.3、SBIT权限
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 ~]# useradd Alex #创建一个用户 [root@localhost ~]# passwd Alex #设置它的密码 更改用户 Alex 的密码 。 新的 密码: 无效的密码: 密码未通过字典检查 - 过于简单化/系统化 重新输入新的 密码: 抱歉,密码不匹配。 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [root@localhost ~]# ll /bin/passwd #查看passwd命令权限 -rwsr-xr-x. 1 root root 27856 4月 1 2020 /bin/passwd [root@localhost ~]# su Alex #切换到Alex用户 [Alex@localhost root]$ passwd #修改密码 更改用户 Alex 的密码 。 为 Alex 更改 STRESS 密码。 (当前)UNIX 密码: 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 #可以成功修改 [Alex@localhost root]$ su root #返回root用户 密码: [root@localhost ~]# chmod u-s /bin/passwd #修改passwd的权限,去掉suid权限 [root@localhost ~]# ll /bin/passwd #再次查看权限 -rwxr-xr-x. 1 root root 27856 4月 1 2020 /bin/passwd #发现s变成了x [root@localhost ~]# su Alex #再切换到Alex用户 [Alex@localhost root]$ passwd #修改密码 更改用户 Alex 的密码 。 为 Alex 更改 STRESS 密码。 (当前)UNIX 密码: 新的 密码: 重新输入新的 密码: passwd: 鉴定令牌操作错误 #密码无法进行修改
2.2、SGID权限
[root@localhost opt]# mkdir tc1 #创建目录 [root@localhost opt]# ll #查看权限 总用量 4 drwx------. 3 qian qian 78 5月 8 00:15 qian drwxr-xr-x. 2 root root 6 10月 31 2018 rh drwxr-xr-x. 2 root root 6 5月 19 19:23 tc1 -rw-r--r--. 1 root root 4 5月 12 19:59 YAO [root@localhost opt]# chmod 777 tc1 #查看权限为777 [root@localhost opt]# ll 总用量 4 drwx------. 3 qian qian 78 5月 8 00:15 qian drwxr-xr-x. 2 root root 6 10月 31 2018 rh drwxrwxrwx. 2 root root 6 5月 19 19:23 tc1 -rw-r--r--. 1 root root 4 5月 12 19:59 YAO #权限已修改 [root@localhost opt]# cd tc1 #进入到新建目录 [root@localhost tc1]# mkdir tc1-1 #创建tc1-1目录 [root@localhost tc1]# ll 总用量 0 drwxr-xr-x. 2 root root 6 5月 19 19:25 tc1-1 #可以看到tc1-1文件的属主和数组都是root [root@localhost tc1]# su Alex #切换Alex用户 [Alex@localhost tc1]$ mkdir tc1-a #创建tc1-a目录 [Alex@localhost tc1]$ ll 总用量 0 drwxr-xr-x. 2 root root 6 5月 19 19:25 tc1-1 drwxrwxr-x. 2 Alex Alex 6 5月 19 19:25 tc1-a 可以看到tc1-a文件的属主和属组都是Alex文件 [Alex@localhost tc1]$ exit exit [root@localhost ~]# cd /opt/tc1 [root@localhost tc1]# cd /opt [root@localhost opt]# chmod g+s tc1 [root@localhost opt]# ll 总用量 4 drwx------. 3 qian qian 78 5月 8 00:15 qian drwxr-xr-x. 2 root root 6 10月 31 2018 rh drwxrwsrwx. 4 root root 32 5月 19 19:25 tc1 -rw-r--r--. 1 root root 4 5月 12 19:59 YAO [root@localhost opt]# cd tc1 [root@localhost tc1]# su Alex [Alex@localhost tc1]$ mkdir tc1-b [Alex@localhost tc1]$ ll 总用量 0 drwxr-xr-x. 2 root root 6 5月 19 19:25 tc1-1 drwxrwxr-x. 2 Alex Alex 6 5月 19 19:25 tc1-a drwxrwsr-x. 2 Alex root 6 5月 19 19:31 tc1-b
2.3、SBIT权限
[root@centos7 opt]# ll #查看权限 总用量 0 drwxrwxrwx. 2 root root 6 5月 17 09:27 yude #权限为777 [root@centos7 opt]# chmod o+t yude #增加sticky bit权限 [root@centos7 opt]# ll #查看权限 总用量 0 drwxrwxrwt. 2 root root 6 5月 17 09:27 yude #其它用户上权限多了sticky bit权限 [root@centos7 opt]# cd yude #进入到yude目录下面 [root@centos7 yude]# su hello #切换hello用户 [hello@centos7 yude]$ touch bbb #创建一个文件 [hello@centos7 yude]$ ll #查看文件,文件正常创建 总用量 0 -rw-rw-r--. 1 hello hello 0 5月 17 09:39 bbb [hello@centos7 yude]$ exit #退出当前用户 exit [root@centos7 yude]# su ydq #切换到ydq用户 [ydq@centos7 yude]$ ll 总用量 0 -rw-rw-r--. 1 hello hello 0 5月 17 09:39 bbb #可以查看到hello用户创建的文件 [ydq@centos7 yude]$ rm -rf ./bbb #进行删除bbb文件 rm: 无法删除"./bbb": 不允许的操作 #无法进行删除
三、ACL权限
1、概述
读、写、执行权限是用户操作文件、目录的权限。ACL权限也是用户对文件是否有读、写、执行的权限。目录或文件的所有者、所属组、其他人的权限都已经设定,但是如果想要让新用户对文件、目录有不同的权限(不同于所有者、所属组、其他人的权限),为了满足这种特殊的需求,需要对用户单独设置ACL权限。是否支持ACL权限,不是文件支持也不是用户支持,而是文件所在的分区是否支持ACL权限。
查看分区ACL权限是否开启dumpe2fs
2、管理命令
2.1、setfacl命令
设置文件访问权限列表,即acl
语法:
setfacl [选项] { -m|-M|-x|-X ... } file ...
选项:
选项 | 作用 |
---|---|
-m, --modify=acl | 修改文件的当前ACL |
-b, --remove-all | 删除所有扩展ACL条目 |
-R, --recursive | 递归进入子目录 |
案例:
设置目录的acl
[root@localhost tc1-a]# ll
总用量 0
-rw-rw-r--. 1 Alex Alex 0 5月 19 19:58 ddd4
[root@localhost tc1-a]# setfacl -m user:Alex:rwx ddd4
[root@localhost tc1-a]# getfacl ddd4
# file: ddd4
# owner: Alex
# group: Alex
user::rw-
user:Alex:rwx
group::rw-
mask::rwx
other::r--
2.2、getfacl命令
查看文件的ACL
语法:
getfacl [选项] file ...
选项:
选项 | 作用 |
---|---|
-a, --access | 仅显示文件的ACL |
-d, --default | 仅显示文件的默认ACL |
案例:
查看文件或目录的acl权限
[root@localhost tc1-a]# getfacl ddd4
# file: ddd4
# owner: Alex
# group: Alex
user::rw-
user:Alex:rwx
group::rw-
mask::rwx
other::r--