CentOS之基本权限操作

一、权限介绍

权限是操作系统用来限制资源访问的机制,权限一般分为读、写、执行。

系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。

每个进程都是以某个用户的身份运行,所以进程的权限与该用户的权限一样,用户的权限越大,该进程所拥有的权限也就越大。

二、文件权限

权限对文件的影响对目录的影响
r(读取) 可读取文件内容 可列出目录内容
w(写入) 可以修改文件内容 可在目录创建、删除文件
x(执行) 可以作为命令执行 可访问目录内容

所以,目录必须拥有 "x" 权限才可查看其内容。很多时候,执行权限 "x" 对于目录而言也叫浏览权限。仅有 "r" 权限是无法查看目录内容的(因为连访问都做不到)。

三、UGO模型

Linux 权限基于 UGO 模型进行控制:

  • U 代表 User,是文件或文件夹所属用户的权限;G 代表 Group,是文件或文件夹所属组的权限;O 代表 Other,是其他用户对文件或文件夹的权限
  • 每一个文件的权限基于 UGO 模型进行设置
  • 权限三个一组(rwx),对应 UGO 分别设置(总共有 3 个组 9 个权限)
  • 每一个文件拥有一个所属用户和所属组,对应 U、G模型;不属于该文件所属用户和所属组的使用 O(Other)模型对应的权限
  • 权限的三类对象

命令 ls -l 可以查看当前目录下所有文件的详细信息

[root@localhost abcs]# ls -l
drwxr-xr-x. 2 root root 6 1月   5 17:48 dir1
-rw-r--r--. 1 root root 0 1月   5 17:48 file1

权限操作

文件属性详细介绍

chmod object(u,g,o,a)赋值符(+,-,=)权限类型(r,w,x) 文件(目录)
----- ----------------------------------------- ---------
命令               对象加减权限操作                 文件或目录

-R 给目标文件下的目录(子文件)赋予同样权限 (  chmod -R u+r FilePath )

[root@localhost abcs]# ll
总用量 0
drwxr-xr-x. 2 root root 6 1月   5 17:48 dir1
-rw-r--r--. 1 root root 0 1月   5 17:48 file1
-rw-r--r--. 1 root root 0 1月   5 17:48 file2
----------  - ---- ---- - ------------- ----
  1       2  3    4   5       6         7  

1. 类型和权限 (11个)
  drwxr-xr-x. ('-' or 'd' 文件类型 '-' 普通文件 'd' 目录)
  属主 属组 其他人
  rwx rwx  rwx
   u   g    o
2. 链接 (略)
3. 属主
4. 属组
5. 大小(字节)
6. 日期
7. 文件名
  • 授权高级用法

    chmod number FileName
    chmod -R number FileName
    
    [root@CatdeXin-PC 桌面]# ll
    总用量 0
    -rw-r--r--. 1 root root 0 1月   6 09:28 a
    [root@CatdeXin-PC 桌面]# chmod 771 a
    [root@CatdeXin-PC 桌面]# ll
    总用量 0
    -rwxrwx--x. 1 root root 0 1月   6 09:28 a
  • 修改文件的属主和属组

    chown UserName.GourpName FileName
    chown UserName FileName     # 只修改属主
    chown .GourpName FileName   # 只修改属组
    
    [root@CatdeXin-PC 桌面]# ll
    总用量 0
    -rwxrwx--x. 1 root root 0 1月   6 09:28 a
    [root@CatdeXin-PC 桌面]# chown user01.hr a
    [root@CatdeXin-PC 桌面]# ll
    总用量 0
    -rwxrwx--x. 1 user01 hr   0 1月   6 09:28 a
    
    # 只能修改属组(了解)
    chgrp GourpName FileName

ACL权限 (access control list)

ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。

既然是作为UGO权限管理的补充,ACL自然要有UGO办不到或者很难办到的本事,例如:

  1. 可以针对用户来设置权限
  2. 可以针对用户组来设置权限
  3. 子文件/目录继承父目录的权限

检查是否支持ACL

ACL需要Linux内核和文件系统的配合才能工作,当前我们能见到的大多数Linux发行版本默认都是支持的。但最好还是能够先检查一下

sudo tune2fs -l /dev/sda1 |grep "Default mount options:"
Default mount options:                 user_xattr    acl

我们能够看到默认情况下(Default mount options:)已经加入 acl 支持了

如何设置ACL

我们可以使用setfacl和getfacl命令来设置或观察文件/目录的acl权限

setfacl

etfacl [-bkRd] [{-m|-x} acl参数] 文件/目录名
-m :配置后面的 acl 参数给文件/目录使用,不可与 -x 合用;
-x :删除后续的 acl 参数,不可与 -m 合用;
-b :移除所有的 ACL 配置参数;
-k :移除默认的 ACL 参数;
-R :递归配置 acl;
-d :配置“默认 acl 参数”,只对目录有效,在该目录新建的数据会引用此默认值;

getfacl

getfacl 文件/目录名

下面我们通过一些示例来演示 ACL 权限的基本用法

# 查看该文件ACL权限表
getfacl FileName 

# 设置ACL权限
setfacl -m  u/g:UserName/GroupName:r/w/x FileName
------- --  ---------------------------- --------
命令   参数      用户/组:用户名/组名       文件/目录

# 清楚一条ACL权限
setfacl -x  u/g:UserName/GroupName FileName

# 清楚所有扩展出来的权限
setfacl -b FileName

[root@CatdeXin-PC 桌面]# setfacl -m u:user01:rwx aaa
[root@CatdeXin-PC 桌面]# getfacl aaa
# file: aaa
# owner: root
# group: root
user::rw-
user:user01:rwx
group::r--
mask::rwx
other::r--
[root@CatdeXin-PC 桌面]# setfacl -m g:hr:r-x aaa
[root@CatdeXin-PC 桌面]# setfacl -m o::- aaa
[root@CatdeXin-PC 桌面]# setfacl -x g:hr aaa

其他权限

suid是针对文件所设置的一个特别的权限

功能: 使调用文件的用户,临时具备属主的能力

# 给cat赋权可以查看root下文件
[root@CatdeXin-PC ~]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54080 8月  20 2019 /usr/bin/cat
[root@CatdeXin-PC ~]# chmod u+s /usr/bin/cat
[root@CatdeXin-PC ~]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54080 8月  20 2019 /usr/bin/cat
[root@CatdeXin-PC ~]# su BBB
[BBB@CatdeXin-PC /]$ cat /root/file1.txt
holle word

# 做完实验删掉s权限
[root@CatdeXin-PC ~]# chmod u-s /usr/bin/cat
[root@CatdeXin-PC ~]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54080 8月  20 2019 /usr/bin/cat

权限中的S与s

# 无执行权限设置suid 是大S
[root@CatdeXin-PC ~]# ll file1.txt
-rw-r--r--. 1 root root 11 1月  13 23:38 file1.txt

[root@CatdeXin-PC ~]# chmod u+s file1.txt
[root@CatdeXin-PC ~]# ll file1.txt
-rwSr--r--. 1 root root 11 1月  13 23:38 file1.txt

[root@CatdeXin-PC ~]# chmod u-s file1.txt
[root@CatdeXin-PC ~]# ll file1.txt
-rw-r--r--. 1 root root 11 1月  13 23:38 file1.txt

# 赋予执行权限后 设置suid结果是小s
[root@CatdeXin-PC ~]# chmod u+x file1.txt
[root@CatdeXin-PC ~]# ll file1.txt
-rwxr--r--. 1 root root 11 1月  13 23:38 file1.txt

[root@CatdeXin-PC ~]# chmod u+s file1.txt
[root@CatdeXin-PC ~]# ll file1.txt
-rwsr--r--. 1 root root 11 1月  13 23:38 file1.txt

文件属性chattr

# 查看文件属性
[root@CatdeXin-PC ~]# lsattr file1.txt
---------------- file1.txt

# 设置文件属性
[root@CatdeXin-PC ~]# chattr +i file1.txt
[root@CatdeXin-PC ~]# lsattr file1.txt
----i----------- file1.txt

# 查看下效果
[root@CatdeXin-PC ~]# rm -rf file1.txt
rm: 无法删除"file1.txt": 不允许的操作

# 取消权限 
[root@CatdeXin-PC ~]# chattr -i file1.txt
[root@CatdeXin-PC ~]# lsattr file1.txt
---------------- file1.txt

进程掩码umask

umask命令指定在建立文件时预设的权限掩码

umask可用来设定权限掩码。权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限

umask 查看预设的权限掩码

umask 掩码参数 # 修改权限掩码

chmod 掩码 FileName

一般掩码由三个位置组成 实际上有第四个

chmod 7777 FileName
特别 属主 属组 其他人

一般不使用特别为位

[root@CatdeXin-PC ~]# umask
0022

系统在创建目录时 用0777减去 权限掩码
0777 - 0022 = 0755
所以系统创建目录的默认权限是0755

创建文件时 在用 0755 减去 0111
0755 - 0111 = 0644
所以系统创建文件的默认权限是0644
posted @ 2021-01-18 14:57  CatdeXin  阅读(669)  评论(0)    收藏  举报