第七章 Centos7-文件权限管理
本节所讲内容:
7.1文件的基本权限:r w x (UGO)
7.1.1对于文件与文件夹r w x的不同含义
[root@node-1 ~]# ll /etc/passwd
-rw-r--r-- 1 root root 1076 Jan 19 19:40 passwd

  • : 文件类型
    主要文件类型有以下几种
  • 表示普通文件
    d 表示文件夹
    c 表示字符型设备文件如键盘等
    b 表示块型设备文件如硬盘、光驱等
    p 表示命名管道文件
    l 表示符号链接文件
    s 表示socket套接口文件

例:列举一些文件说明
#ll /dev/sda /bin /etc/passwd /dev/tty0
lrwxrwxrwx. 1 root root 7 May 19 2018 /bin -> usr/bin
brw-rw---- 1 root disk 8, 0 Feb 5 2020 /dev/sda
crw--w---- 1 root tty 4, 0 Feb 5 2020 /dev/tty0
-rw-r--r-- 1 root root 1076 May 19 2018 /etc/passwd

1)对文件来讲:
r:读取内容
w:写入内容
x:执行
2)对文件夹来讲:
r:查看目录里有什么
w:在目录中删除、新建、重命名、移动等操作
x:可以进入目录

7.1.2文件拥有者
UGO:所有者(owner)--用户组(group)--其它用户(other)
所有者: 文件所有及创建者
用户组: 是具有相同权限用户的逻辑集合,为了管理方便
其它用户:除了owner与group外的用户都包含在内
7.1.3分解认识权限与用户

  • rw- r-- r-- 1 root root 1076 Jan 19 19:40 passwd
    文件类型 文件所有者权限 文件所属组权限 其他用户权限 硬链接数 文件拥有者 文件所属组 文件大小 文件创建时间 文件名

例2: 你以什么用户身份登录,那么你创建的文件或目录,自动成为该文件的所属主和组
#su - wangtao
$ pwd
/home/wangtao
$ touch aa.txt
$ ll
-rw-rw-r-- 1 wangtao wangtao 0 Feb 4 16:12 aa.txt

7.1.4 更改文件的属主和属组
改变文件的所属关系用到命令:
chown:可以用来改变文件(或目录)的属主
-R:可以修改目录拥有者及属组,包括目录下的文件
主要格式如下:
chown :wangtao /opt/password --将/opt/password所属组修改为wangtao这个组
chown wangtao :wangtao /opt/password --将/opt/password修改为wangtao用户为拥有者,所属组修改为wangtao这个组
chown -R :wangtao /opt --将/opt文件夹所属组修改为wangtao这个组

文件所有者一定可以写文件。 就像root可以对shadow强制写。 因shadow的拥有者是root

7.1.5修改权限
7.1.5.1 使用字符设定
修改权限用的命令:chmod
作用:修改文件,目录的权限
语法:chmod [对谁操作] [操作符] [赋于什么权限] 文件名
对谁操作:
u----> 用户user,表示文件或目录的所有者
g---->用户组group,表示文件或目录所属的用户组
o---->其它用户others
a---->所有用户all
操作符:
操作符 + #添加某个权限 ;
操作符 - # 减少某个权限 ;
操作符 = #直接给定一个具体权限
权限:r w x
此法是添加或减少权限,也可用数值表示
使用八进制(0-7)数字表示权限法

  • rw- rw- r-- 1 wangtao wangtao 0 Feb 4 16:12 aa.txt
    数值:421 421 421
    例3:
    #chmod g+x /opt/passwd
    #chmod 644 /opt/passwd

7.1.6有三种权限可以应用:读取,写入与执行,这些权限对访问文件和目录的影响如下:
权限 对文件的影响 对目录的影响
r(读取) 可以读取文件的内容 可以列出目录的内容(文件名)
w(写入) 可以更改文件的内容 可以创建或删除目录中的任意文件
x(执行) 可以作为命令执行文件 可以访问目录的内容(取决于目录中文件的权限)

7.1.7umask值对权限的影响
文件的默认最大权限:666
文件夹的默认最大权限:777
根据设置的umask值去掉相关的权限,对于umask值为奇数时,相应位上减1后再用默认最大权限减去相应的值即可
umask值为偶数用默认最大权限减去相应的值即可
如:umask=033 则算默认文件的权限是:666-(033-011)=666-022就可以了
umask=044 则算默认文件的权限是:666-(044)=622就可以了
7.2文件的特殊权限:suid sgid sticky和文件扩展权限ACL
7.2.1 文件的特殊权限:suid sgid sticky
1、SUID(set uid设置用户ID):限定:只能设置在二进制可执行程序上面。对目录设置无效
功能:程序运行时的权限从执行者变更成程序所有者的权限
说明:/usr/bin/passwd 具体此权限,这样普通用户也可以修改密码
2、SGID:限定:既可以给二进制可执行程序设置,也可以对目录设置
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会,继承上级目录的所属组
说明:如果想目录下新建文件继承上级目录权限,设置此权限位
3、Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位
限定:只作用于目录
功能:目录下创建的文件只有root、文件创建者、目录所有者才能删除。
说明:/tmp目录有此权限位,其目录下的文件也只有root与owner可以删除

7.2.2 文件扩展权限ACL
扩展ACL :access control list
目的是解决用rwx权限无法解决的权限需求
查看扩展权限:getfacl 文件名
#getfacl /home/wangtao/aa.txt
getfacl: Removing leading '/' from absolute path names
[root@node-1 ~]# file: home/wangtao/aa.txt
[root@node-1 ~]# owner: wangtao
[root@node-1 ~]# group: wangtao
user::rw-
group::rw-
other::r--
设置扩展权限:setfacl 【参数】 文件名
-d:增加个默认的扩展访问权限
-m:新建扩展权限
-R:一定要在-m前面,表示目录下所有文件
-x:去掉单个权限
例1:
[root@node-1 ~]# setfacl -R -m u:lee:rw- testdirectory/  #-R一定要在-m前面,表示目录下所有文件
[root@node-1 ~]# setfacl -x u:mk /tmp/a.txt # 去掉单个权限
[root@node-1 ~]# setfacl -b /tmp/a.txt # 去掉所有acl权限
例2:
[root@node-1 ~]# mkdir /opt/test
[root@node-1 ~]# setfacl -m d:u:wangtao:rwx /opt/test
[root@node-1 ~]# getfacl /opt/test
getfacl: Removing leading '/' from absolute path names
[root@node-1 ~]# file: opt/test
[root@node-1 ~]# owner: root
[root@node-1 ~]# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:wangtao:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

[root@node-1 ~]# touch /opt/test/aa.txt
[root@node-1 ~]# getfacl /opt/test/aa.txt
getfacl: Removing leading '/' from absolute path names
[root@node-1 ~]# file: opt/test/aa.txt
owner: root
group: root
user::rw-
user:wangtao:rwx #effective:rw-
group::r-x #effective:r--
mask::rw-
other::r--

7.3无法‘删除’文件之谜--扩展属性
命令:chattr 设置文件属性
参数: a 只能追加内容 ; i 不能被修改
如果增加属性则用:+
如果去掉属性则用:-
例:
[root@node-1 ~]# chattr +i /opt/passwd 增加不能修改属性
[root@node-1 ~]#chattr -i /opt/passwd 去掉不能修改属性
命令:lsattr 设置文件属性
例:
[root@node-1 ~]#lsattr /opt/passwd
----i----------- /opt/passwd