对文件的所有者和所属组进行操作
所有者:创建文件的用户就是所有者;例如:user1用户创建了file.txt文件,通过ll命令查看到file.txt文件的所有者是user1
所属组:创建文件的用户所属的组;例如:user1用户属于user1组,user1用户创建了file.txt文件,通过ll命令查看到file.txt文件的所有组是user1组
设置文件的所有者
chown命令可以修改文件的属主,也可以修改文件属组
chown OWNER 只修改所有者
chown OWNER:GROUP 同时修改所有者和属组
chown :GROUP 只修改属组,冒号也可以用“.”来代替
chown --reference=RFILE 按照指定文件的属性来修改目标文件属性
chown -R 递归
例子:
chown user1 file.txt 修改file.txt的所有者为user1
chown user1:root file.txt 修改file.txt的所有者为user1,所属组是root
chown :root file.txt 修改file.txt的所属组是root
chown --reference=a.txt file.txt 修改file.txt的所有者和所属组为a.txt的所有者和所属组
chown -R user1:user1 /data 修改/data目录以及目录下的内容的所有者和所属组为user1
设置文件的属组信息
chgrp命令可以只修改文件的属组
chgrp --referenc=RFILE 按照指定文件的属性来修改目标文件属性
chgrp -R 递归
例子
chgrp --referenc=a.txt file.txt 修改file.txt的所属组为a.txt的所属组
chgrp -R user1 /data 修改/data目录以及目录下的内容的所属组为user1
文件权限控制
文件权限主要针对三种用户对象进行定义
权限对文件来说
r 读权限可以查看文件内容
w 写权限可以修改文件内容
x 执行权限可以执行文件
权限对目录来说
r 可以使用ls查看此命令中文件列表
w 可以在此目录中创建文件,也可删除此命令中的文件,而和此被删除的文件的权限无关
x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据,属于目录的可访问的最小权限
修改文件权限
chmod命令可以根据不同用户对象设置不同权限
文件属主授予权限(说明:权限信息可以随意组合 rw rwx rx wx)
添加权限信息 chmod u+[ r / w / x ]
删除权限信息 chmod u-[ r / w / x ]
设置权限信息 chmod u=[ r / w / x ]文件属组授予权限
添加权限信息 chmod g+[ r / w / x ]
删除权限信息 chmod g-[ r / w / x ]
设置权限信息 chmod g=[ r / w / x ]其他用户授予权限
添加权限信息 chmod o+[ r / w / x ]
删除权限信息 chmod o-[ r / w / x ]
设置权限信息 chmod o=[ r / w / x ]所有用户授予权限
添加权限信息 chmod a+[ r / w / x ]
删除权限信息 chmod a-[ r / w / x ]
设置权限信息 chmod a=[ r / w / x ]
数字表达式授予权限权限位表示:r 数字表示:4
权限位表示:w 数字表示:2
权限位表示:x 数字表示:1
权限位表示:- 数字表示:0
查看系统的umask权限,即默认权限
umask 默认为022
umask权限的计算方法
文件的默认权限最大只能是666,而umask的值是022
“-rw-rw-rw-”减去 “-----w--w-”等于“-rw-r--r—”
目录的默认权限最大可以是777,而umask的值是022“drwxrwxrwx”减去“d----w--w-”等于“drwx-r-xr-x”
Linux文件特殊权限
特殊权限SUID
作用范围
仅适用于可执行文件,权限符号s,出现的位置属主的x位置
功能
重要用户对设有SUID的文件有执行权限,那么当用户执行此文件时,会以文件属主的身份去执行此文件,一旦文件执行结束,身份的切换也会随之消失
语法
方法一:chmod u+s 文件
方法二:chmod 4644 文件
使用场景
用户可以通过passwd命令可以更改密码, 原因是passwd命令文件的属主权限设置了suid特殊权限
特殊权限SGID
作用范围
sgid针对的是目录
符号是s/S(取决于group是否存在x权限),符号位置在group上
Linux中的所有用户,默认创建的文件,文件夹,属主和属组都是属于创建时的那个用户
设置了sgid的目录,会保证在这个目录下创建的文件、文件夹会自动继承父目录的属组
语法
方法一: chmod g+s 目录
方法二: chmod 2644 目录
guid权限与属组执行权限位共用, 执行权限位出现小写s表示文件属组有执行权限, 大写S表示文件文件属组没有执行权限
特殊权限Sticky
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权,在目录设置Sticky权限位,只有文件的所有者或root可以删除该文件
语法
方法一: chmod o+t 目录
方法二: chmod 1644 目录
sticky权限与其他用户执行权限位共用, 执行权限位出现小写t表示文件其他用户有执行权限,大写T表示文件其他用户没有执行权限
隐藏权限
作用
设置文件的特殊隐藏属性,可以防止用户误操作删除或修改文件目录
语法
chattr -R 递归处理目录下的所有文件
chattr -v 设置文件或目录版本
chattr -V 显示指令执行过程
chattr + 开启文件或目录的该项属性
chattr - 关闭文件或目录的该项属性
chattr = 指定文件或目录的该项属性chattr +i root用户和所有用户不能删除,移动,重命名文件,修改文件内容
chatrr +a 只能追加内容, 不能删除,移动,重命名文件
lsattr查看特殊权限
-a 列出目录中的所有文件,包括隐藏文件
-d 只显示目录名称
-R 递归地处理指定目录下的所有文件及子目录
-v 显示文件或目录版本
-D 显示属性的名称、默认值
-E 显示从用户设备数据库中获得属性的当前值
访问控制列表
ACL功能
实现灵活的权限管理 除了文件的所有者,所属组和其它人,可以对更多的用户设置权限,CentOS7 默认创建的xfs和ext4文件系统具有ACL功能,CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
ACL相关操作
setfacl用于设置ACL权限
创建acl权限语法
setfacl -m u:username:[rwx] file
设定 ACL 权限。如果是给予用户 ACL 权限,参数则使用 "u:用户名:权限" 的格式,
例如 setfacl -m u:st:rx /project 表示设定 st 用户对 project 目录具有 rx 权限setfacl -m g:groupname:[rwx] file
如果是给予组 ACL 权限,参数则使用 "g:组名:权限" 格式,
例如 setfacl -m g:tgroup:rx /project 表示设定群组 tgroup 对 project 目录具有 rx 权限。
删除acl权限语法
setfacl -x [u/g]:[username/groupname] file
删除指定用户(参数使用 u:用户名)或群组(参数使用 g:群组名)的 ACL 权限,
例如 setfacl -x u:st /project 表示删除 st 用户对 project 目录的 ACL 权限。
删除所有acl权限语法
setfacl -b
删除所有的 ACL 权限,例如 setfacl -b /project 表示删除有关 project 目录的所有 ACL 权限
递归设定acl权限
setfacl -R
递归设定 ACL 权限,指设定的 ACL 权限会对目录下的所有子文件生效
命令格式为 "setfacl -m u:用户名:权限 -R 文件名"(群组使用 g:群组名:权限)
例如 setfacl -m u:st:rx -R /project 表示 st 用户对已存在于 project 目录中的子文件和子目录拥有 rx 权限。
查看ACL权限
getfacl
-a 显示文件的ACL
-d 显示默认的ACL
-c 不显示注释标题
-e 显示所有的有效权限
-E 显示没有的有效权限
-R 递归到子目录
总结
到这文件权限的基本管理就讲完了,明天讲什么敬请期待!