第7章Linux下的文件权限管理
了解Linux的文件系统
Linux文件系统与Windows文件系统的比较
了解Linux系统下默认的目录
掌握Linux目录与文件的权限
了解系统的umask值
了解Linux下的文件访问控制列表
Linux的基本文件系统类型
普通文件
⚫ 例如:
目录文件
⚫ 例如:
链接文件
⚫ 例如:
特殊文件
⚫ 例如:
Linux文件系统与Windows文件系统的对比
Linux系统下的默认目录 2-1
/bin
⚫ 常见的用户命令
/boot
⚫ 可引导Linux内核和引导装载程序配置文件
/dev
⚫ 设备目录
/etc
⚫ 管理配置文件
/home
⚫ 用户的主目录
/media和/mnt
⚫ 提供挂载设备的位置
Linux系统下的默认目录 2-2
/proc
⚫ 内核进程目录
/sbin
⚫ 管理命令和守护进程
/sys
⚫ 类似/proc
/tmp
⚫ 临时文件
/usr
⚫ 用户文档、游戏、库文件和管理员命令和文件
/var
⚫ 各种应用程序使用数据的目录
文件/目录的权限和归属
访问权限
⚫ 读取:允许查看文件内容、显示目录列表
⚫ 写入:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
⚫ 可执行:允许运行程序、切换目录
归属(所有权)
⚫ 属主:拥有该文件或目录的用户帐号
⚫ 属组:拥有该文件或目录的组帐号
设置文件/目录的归属
chown命令
⚫ 格式:
chown 属主 文件或目录
chown :属组 文件或目录
chown 属主:属组 文件或目录
常用命令选项
⚫ -R:递归修改指定目录下所有文件、子目录的归属
例如:
给各个用户添加权限
给各个用户取消权限
更改属主目录
更改属主和属组
Linux系统的特殊权限位
粘着位(sticky)
⚫ 现在仅用于目录
⚫ 当一个目录被设置为“粘着位”(用chmod a+t),则该目录下的文件只能由
◆ 1、超级管理员删除
◆ 2、该目录的所有者删除
◆ 3、该文件的所有者删除
例如:
粘着位
看是否设置粘着位,观察最后一位,如果是t说明之前有x权限,是T说明之前没有x权限
设置粘着位(使用数字)
Linux下文件的隐藏属性
隐藏属性
⚫ Linux系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的 权限,默认情况下不能直接被用户发觉。
Linux下文件的隐藏属性
lsattr命令查看文件的隐藏权限
[root@centos7 ~]# lsattr file1 ---------------- file1
chattr命令设置文件的隐藏权限
[root@centos7 ~]# chattr +a file1
[root@centos7 ~]# lsattr file1 -----a---------- file1
[root@centos7 ~]# ls anaconda-ks.cfg centos7.7.iso file1
[root@centos7 ~]# rm file1
rm:是否删除普通文件 "file1"?y
rm: 无法删除"file1": 不允许的操作
[root@centos7 ~]# chattr -a file1
[root@centos7 ~]# rm file1
rm:是否删除普通文件 "file1"?y
例如:
Linux 下文件的隐藏属性
设置隐藏权限
检验,观察是否可以删除
去掉权限,发现可以删除
Linux系统的umask值
umask:指定建立文件或目录时预设的权限掩码
⚫ 用法1:umask 查看系统当前的权限掩码值
⚫ 例如:
[root@centos7 ~]# umask
0022
⚫ 用法2:umask 数值 设定系统的权限掩码
⚫ 例如:
[root@centos7 ~]# umask 333
[root@centos7 ~]# umask
0333
例如:
Linux系统的umask值
目录掩码:777-目录初始的掩码
文件掩码控制文件初始权限
777-初始掩码-x
777-目录333=444
创建文件444
Linux下的文件访问控制列表
文件的ACL
⚫ 一般权限、特殊权限、隐藏权限都是针对某一类用户设置的。如果希望对某个指定的用户进 行单独的权限控制,就需要用到文件的访问控制列表(ACL)。 ⚫ 基于普通文件或目录设置ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限。 另外,如果针对某个目录递归设置了ACL,则目录中的文件会继承其ACL;若针对文件设置 了ACL,则文件不再继承其所在目录的ACL。
Linux下的文件访问控制列表
getfacl命令查看文件上设置的ACL信息
[root@centos7 ~]# getfacl /root/
setfacl命令管理文件的ACL规则
⚫ -R 针对目录文件需要使用递归
⚫ -m 针对普通文件 setfacl -m u:rose:r-x /root
⚫ -b 删除某个文件的ACL
Linux下的文件访问控制列表
[root@centos7 ~]# getfacl /root/
getfacl: Removing leading '/' from absolute path names
# file: root/
# owner: root
# group: root
user::r-x
group::r-x
other::---
[root@centos7 ~]# su - rose
[rose@centos7 ~]$ cd /root/
-bash: cd: /root/: 权限不够
[rose@centos7 ~]$ exit
登出
Linux下的文件访问控制列表
[root@centos7 ~]# setfacl -m u:rose:r-x /root
[root@centos7 ~]# getfacl /root/
getfacl: Removing leading '/' from absolute path names
# file: root/
# owner: root
# group: root
user::r-x
user:rose:r-x
group::r-x
mask::r-x
other::---
[root@centos7 ~]# su - rose
[rose@centos7 ~]$ cd /root/
[rose@centos7 root]$ pwd
/root
练习
文件的访问控制列表
首先创建usradd rose
在root上:在查看acl列表
将root添加到访问控制列表里
Setfacl -m
dian . 被+ 号代替 证明文件有设置访问控制列表的权限
在rose上:发现可以查看root的控制列表
在root上
重新演示
设置访问权限命令
在root加入可访问控制列表setfacl -m u:rose:r-x /root
用户 权限 自己
在root上删除访问控制列表
加号变成 . dain
说明root上的访问控制权限被删除