跟着大佬学云计算七天,手把手带你十分钟理解Linux系统权限管理(图文结合、详细步骤)

Linux系统权限管理

目录

Linux系统权限管理

一、普通权限

1、概述

1.1、权限类型

1.2、文件访问者的分类

1.3、文件类型

2、普通权限管理命令

2.1、chmod命令

2.2、chown命令

2.3、umask命令

二、特殊权限

1、概述

权限类型

SUID权限

SGID权限

SBIT权限

2、案例

2.1、SUID权限

2.3、SBIT权限

三、ACL权限

1、概述

2、管理命令

2.1、setfacl命令

2.2、getfacl命令


一、普通权限

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

1、概述

1.1、权限类型

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

    对于文件夹可以查看文件夹的内容

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

    对于文件夹,可以在文件夹内创建、删除、改名等操作

  • 可执行用 x 表示(execute): 有了可执行权限,就可以执行该文件,可以将文件作为执行程序

    对于目录来讲,x是进入权限;可以更改工作目录到此文件夹 即cd

  • (-)表示没有某个权限

权限的排列方式Linux下表示二进制表示八进制表示
只读r--1004
只可写-w-0102
只可执行--x0011
可读可写rw-1106
可读可执行r-x1015
可写可执行-wx0113
可读可写可执行rwx1117
空权限---0000
#7  5  1
user=7
group=5
other=1
-rwxr-x--x 

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 -ld file1
 -rw-r--r--. 1 root root 21 5月  17 10:55 file1
 #-:文件类型;rw-:属主权限;r--:属组权限;r--:其他用户权限;1:硬链接个数;root:属主;root:属组;21:大小;5月 17:创建日期;10:55:时间;文件名

2、普通权限管理命令

2.1、chmod命令

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

  • 语法:chmod [选项] 权限 文件或文件夹

     ##将文件权限修改为:rwxr-x--x
     chmod u=rwx,g=rx,o=x file1
     其中:u表示所属用户权限,g表示所属组权限,o表示其他用户权限

  • 选项:

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

    1.字符赋权

    [root@localhost ~]# chmod u+x file1
     [root@localhost ~]# ls -ld file1
     -rwxr--r--. 1 root root 21 5月  17 10:55 file1
     [root@localhost ~]# chmod g-r file1
     [root@localhost ~]# ls -ld file1
     -rwx---r--. 1 root root 21 5月  17 10:55 file1
     [root@localhost ~]# chmod a=rwx file1
     [root@localhost ~]# ls -ld file1
     -rwxrwxrwx. 1 root root 21 5月  17 10:55 file1
  • 数字赋权,属主和数组可读写,其他用户无权限

     [root@localhost ~]# chmod 660 file2
     [root@localhost ~]# ls -ld file2
     -rw-rw----. 1 root root 13 5月  17 10:56 file2
  • 递归修改目录本身及子目录文件的权限

    [root@localhost ~]# chmod -R 777 dir1/
     [root@localhost ~]# ls -ld dir1
     drwxrwxrwx. 2 root root 39 5月  19 20:25 dir1
     root@localhost ~]# ls -l dir1
     总用量 0
     -rwxrwxrwx. 1 root root 0 5月  19 20:23 fi1
     -rwxrwxrwx. 1 root root 0 5月  19 20:24 fi2
     -rwxrwxrwx. 1 root root 0 5月  19 20:25 fi3

2.2、chown命令

修改文件所有者和组别

普通用户无法修改所属为其他用户和组,所以此命令只适用于root用户执行

  • 语法:chown [选项] 用户(.或:)用户组 file...

  • 选项:

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

    改变属主

    [root@localhost ~]# chown user1 file1
     [root@localhost ~]# ls -l
     -rwxrwxrwx.  1 user1 root      21 5月  17 10:55 file1

    改变属组 加 . 或 加:

    [root@localhost ~]# chown .user1 file1
     [root@localhost ~]# ls -ld file1
     -rwxrwxrwx. 1 user1 user1 21 5月  17 10:55 file1

    改变属主和属组

    [root@localhost ~]# chown root.root file1
     [root@localhost ~]# ls -ld file1
     -rwxrwxrwx. 1 root root 21 5月  17 10:55 file1

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

    [root@localhost ~]# chown -R user.user dir1
     [root@localhost ~]# ls -l dir1
     总用量 0
     -rwxrwxrwx. 1 user user 0 5月  19 20:23 fi1
     -rwxrwxrwx. 1 user user 0 5月  19 20:24 fi2
     -rwxrwxrwx. 1 user user 0 5月  19 20:25 fi3

2.3、umask命令

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

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

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

  • 选项

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

    查看权限掩码

    [root@localhost ~]# umask 
     0022

    修改权限掩码,只是临时的,切换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权限是否开启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、付费专栏及课程。

余额充值