文科小白从零学习Linux系统第二周之Linux操作系统权限管理

目录

前言

Linux权限管理

一、普通权限

1、概述

1.1、权限类型

1.2、文件访问者的分类

1.3、文件类型

1.4、文件属性信息

2、普通权限管理命令

2.1、chmod命令

2.2、chown命令

2.3、umask命令

二、特殊权限

1、概述

权限类型

SUID权限

SGID权限

SBIT权限

2、案例

2.1、SUID权限

2.2、SGID权限

2.3、SBIT权限

三、ACL权限

1、概述

2、管理命令

2.1、setfacl命令

2.2、getfacl命令

结语


前言

上周已经学习了Linux系统的基础部分,包括系统安装、基本管理指令、文件与目录管理与用户与组管理四大部分,接下来学习的内容将会结合之前的内容进行深入学习,首当其冲的就是权限管理。

Linux权限管理

一、普通权限

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

1、概述

1.1、权限类型

  • 可读用r表示(read): 有了可读权限,就可以读取文件的内容

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

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

  • -表示没有某个权限

权限的排列方式Linux下表示二进制表示八进制表示
只读r--1004
只可写-w-0102
只可执行--x0011
可读可写rw-1106
可读可执行r-x1015
可写可执行-wx0113
可读可写可执行rwx1117
空权限---0000

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/

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

2、普通权限管理命令

2.1、chmod命令

改变文件的访问权限,权限的赋予可以使用:+,增加权限;-,删除权限;=,赋予权限

语法:

chmod [options] mode file...

选项:

选项作用
-R, --recursive改变目录及目录下的内容的访问权限

案例:

1)字符赋权

[root@localhost zhx]# chmod u+x d1
[root@localhost zhx]# ls -l
总用量 0
drwxrw----. 3 root root 17 4月   9 09:46 d1
drwxrwxr-x. 2 zhx  zhx   6 4月   9 09:40 d2
-rw-r--r--. 1 root root  0 4月   9 09:34 f1
-rw-rw-r--. 1 zhx  zhx   0 4月   9 09:35 f2
[root@localhost zhx]# chmod g-w d1
[root@localhost zhx]# ls -l
总用量 0
drwxr-----. 3 root root 17 4月   9 09:46 d1
drwxrwxr-x. 2 zhx  zhx   6 4月   9 09:40 d2
-rw-r--r--. 1 root root  0 4月   9 09:34 f1
-rw-rw-r--. 1 zhx  zhx   0 4月   9 09:35 f2
[root@localhost zhx]# chmod a=rwx d1
[root@localhost zhx]# ls -l
总用量 0
drwxrwxrwx. 3 root root 17 4月   9 09:46 d1
drwxrwxr-x. 2 zhx  zhx   6 4月   9 09:40 d2
-rw-r--r--. 1 root root  0 4月   9 09:34 f1
-rw-rw-r--. 1 zhx  zhx   0 4月   9 09:35 f2

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

[root@localhost zhx]# chmod 660 d1
[root@localhost zhx]# ls -l
总用量 0
drw-rw----. 3 root root 17 4月   9 09:46 d1
drwxrwxr-x. 2 zhx  zhx   6 4月   9 09:40 d2
-rw-r--r--. 1 root root  0 4月   9 09:34 f1
-rw-rw-r--. 1 zhx  zhx   0 4月   9 09:35 f2

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

[root@localhost zhx]# chmod -R 777 d1
[root@localhost zhx]# ls -l
总用量 0
drwxrwxrwx. 3 zhx  zhx  27 4月   9 10:15 d1
drwxrwxr-x. 2 zhx  zhx   6 4月   9 09:40 d2
-rw-r--r--. 1 root root  0 4月   9 09:34 f1
-rw-rw-r--. 1 zhx  zhx   0 4月   9 09:35 f2
[root@localhost zhx]# ls -l d1/
总用量 0
drwxrwxrwx. 2 root root 6 4月   9 09:46 d01
-rwxrwxrwx. 1 root root 0 4月   9 10:15 f1

2.2、chown命令

修改文件所有者和组别

语法:

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

选项:

选项作用
-R, --recursive递归地修改目录及其下面内容的所有权

案例:

1)改变属主

[root@localhost zhx]# chown zhx d1
[root@localhost zhx]# ls -l
总用量 0
drwxrwxrwx. 3 zhx  root 17 4月   9 09:46 d1
drwxrwxr-x. 2 zhx  zhx   6 4月   9 09:40 d2
-rw-r--r--. 1 root root  0 4月   9 09:34 f1
-rw-rw-r--. 1 zhx  zhx   0 4月   9 09:35 f2

2)改变属组

[root@localhost zhx]# chown .zhx d1
[root@localhost zhx]# ls -l
总用量 0
drwxrwxrwx. 3 zhx  zhx  17 4月   9 09:46 d1
drwxrwxr-x. 2 zhx  zhx   6 4月   9 09:40 d2
-rw-r--r--. 1 root root  0 4月   9 09:34 f1
-rw-rw-r--. 1 zhx  zhx   0 4月   9 09:35 f2

3)改变属主和数组

[root@localhost zhx]# chown root.root d1
[root@localhost zhx]# ls -l
总用量 0
drwxrwxrwx. 3 root root 17 4月   9 09:46 d1
drwxrwxr-x. 2 zhx  zhx   6 4月   9 09:40 d2
-rw-r--r--. 1 root root  0 4月   9 09:34 f1
-rw-rw-r--. 1 zhx  zhx   0 4月   9 09:35 f2
[root@localhost zhx]# chown zhx:zhx d1
[root@localhost zhx]# ls -l
总用量 0
drwxrwxrwx. 3 zhx  zhx  17 4月   9 09:46 d1
drwxrwxr-x. 2 zhx  zhx   6 4月   9 09:40 d2
-rw-r--r--. 1 root root  0 4月   9 09:34 f1
-rw-rw-r--. 1 zhx  zhx   0 4月   9 09:35 f2

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

[root@localhost zhx]# chown -R zhx.zhx d1
[root@localhost zhx]# ls -l d1/
总用量 0
drwxrwxrwx. 2 zhx zhx 6 4月   9 09:46 d01
-rwxrwxrwx. 1 zhx zhx 0 4月   9 10:15 f1

2.3、umask命令

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

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

语法:

 umask [-p] [-S] [模式]

选项:

选项作用
-p如果省略 MDOE 模式,以可重用为输入的格式输入
-S以符号形式输出,否则以八进制数格式输出

案例:

1)查看权限掩码

umask

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

[root@localhost zhx]# umask 0222
[root@localhost zhx]# umask 
0222
[root@localhost zhx]# mkdir d3
[root@localhost zhx]# ls -l
总用量 0
drwxrwxrwx. 3 zhx  zhx  27 4月   9 10:15 d1
drwxrwxr-x. 2 zhx  zhx   6 4月   9 09:40 d2
dr-xr-xr-x. 2 root root  6 4月   9 10:18 d3
-rw-r--r--. 1 root root  0 4月   9 09:34 f1
-rw-rw-r--. 1 zhx  zhx   0 4月   9 09:35 f2

二、特殊权限

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@centos7 ~]# useradd hello   #创建一个用户
[root@centos7 ~]# passwd hello    #设置它的密码
更改用户 hello 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@centos7 ~]# ll /bin/passwd    #查看passwd命令权限
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /bin/passwd

[root@centos7 ~]# su hello     #切换到hello用户  
[hello@centos7 root]$ passwd    #修改密码
更改用户 hello 的密码 。
为 hello 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。   #可以成功修改

[hello@centos7 root]$ su root    #返回root用户
密码:
[root@centos7 ~]# chmod u-s /bin/passwd   #修改passwd的权限,去掉suid权限
[root@centos7 ~]# ll /bin/passwd
-rwxr-xr-x. 1 root root 27832 6月  10 2014 /bin/passwd   #发现s变成了x

[root@centos7 ~]# su hello   #再切换到hello用户
[hello@centos7 root]$ passwd   #修改密码
更改用户 hello 的密码 。
为 hello 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
重新输入新的 密码: 
passwd: 鉴定令牌操作错误    #密码无法进行修改

2.2、SGID权限

[root@centos7 opt]# mkdir ydq   #创建目录
[root@centos7 opt]# ll
总用量 0
drwxr-xr-x. 2 root root 6 5月  17 00:23 ydq   #查看权限
[root@centos7 opt]# chmod 777 ydq   #查看权限为777
[root@centos7 opt]# ll
总用量 0
drwxrwxrwx. 2 root root 6 5月  17 00:23 ydq   #权限已修改
[root@centos7 opt]# cd ydq   #进入到cd目录
[root@centos7 ydq]# mkdir aaa  #创建aaa文件
[root@centos7 ydq]# ll
总用量 0
drwxr-xr-x. 2 root root 6 5月  17 00:23 aaa  #可以看到aaa文件的属主和数组都是root
[root@centos7 ydq]# su hello    #切换hello用户
[hello@centos7 ydq]$ mkdir bbb   #创建bbb目录
[hello@centos7 ydq]$ ll
总用量 0
drwxr-xr-x. 2 root  root  6 5月  17 00:23 aaa
drwxrwxr-x. 2 hello hello 6 5月  17 00:24 bbb  #可以看到bbb文件的属主和属组都是hello文件
[hello@centos7 ydq]$ exit  #返回root用户
exit
[root@centos7 ydq]# cd ../   #返回上一级
[root@centos7 opt]# chmod g+s ydq   #将ydq目录增加sgid
[root@centos7 opt]# ll
总用量 0
drwxrwsrwx. 4 root root 28 5月  17 00:24 ydq   #属组的权限已增加了s
[root@centos7 opt]# cd ydq   #进入ydq目录
[root@centos7 ydq]# su hello   #切换hello用户
[hello@centos7 ydq]$ mkdir ccc    #创建目录ccc
[hello@centos7 ydq]$ ll
总用量 0
drwxr-xr-x. 2 root  root  6 5月  17 00:23 aaa
drwxrwxr-x. 2 hello hello 6 5月  17 00:24 bbb
drwxrwsr-x. 2 hello root  6 5月  17 00:25 ccc   #ccc的属组用户已变为跟ydq目录一致的用户

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权限默认开启)

查看分区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 zhx]# setfacl -m user:user1:rwx d4
[root@localhost zhx]# getfacl d4
# file: d4
# owner: zhx
# group: zhx
user::rwx
user:user1:rwx
group::rwx
mask::rwx
other::r-x

2.2、getfacl命令

查看文件的ACL

语法:

getfacl [选项] file ...

选项:
 

选项作用
-a, --access仅显示文件的ACL
-d, --default仅显示文件的默认ACL

案例:

查看文件或目录的acl权限

[root@localhost zhx]# getfacl d4
# file: d4
# owner: zhx
# group: zhx
user::rwx
group::rwx
other::r-x

结语

今天学习的东西虽然不多,但是需要结合之前学习的知识进行总结与扩展,并且在练习的过程中熟练运用与掌握。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值