文件权限管理
文件属性格式
文件属性操作
chown 设置文件的所有者
chgrp 设置文件的属组信息
修改文件的属主:
chown [选项] [所有者][:[组]] file
命令中的冒号可用.替换;
-R :递归操作文件或目录
chown [选项] --reference=RFLE FILE
-rw-r--r--. 1 root root 0 8月 3 18:17 xiaomage 这是没更改属主时候的文件
例如:~]# chown -R makangbo xiaomage
(命令加选项-R 将原来的属主root 修改为makangbo属主 后面跟文件名称)
-rw-r--r--. 1 makangbo root 0 8月 3 18:17 xiaomage 这是更改成功的结果
修改文件的属组
chgrp [选项] group file
chgrp [选项] --reference=RFILE FILE
-R : 递归操作文件或目录
-rw-r--r--. 1 makangbo root 0 8月 3 18:17 xiaomage
(这个是上面改过属主的, 然后组还没改)
例如:~]# chgrp -R makangbo xiaomage
(命令选项-R makangbo组名 xiaomge文件)
-rw-r--r--. 1 makangbo xiaomage 0 8月 3 18:17 xiaomag
(这个就是更改过组的,将原来的root组更改为makangbo组)
文件权限的主要对三类对象进行定义
owner: 属组,u
group: 属组,g
other: 其他,o
每个文件针对每类访问者都定义了三种权限
r: readable 可读的
w: writable 可写的
x: excutable 可执行的针对二进制程序或脚本
文件的权限
r:可使用文件查看类工具获取里面内容
w:可修改文件里面的内容
x:可以把此文件提交给内核启动为一个进程操作,对二进制程序或脚本有效
目录的权限
r:可以查看dir内文件列表,但不能访问文件,不能cd,也不能查看文件的元数据
w:可以在dir中创建文件,,也可以删除此dir中的文件
x:可以使用查看类命令查看dir中的列表,可以cd进入此dir
X:只给目录x权限,不给文件x权限 (前提是本身没有x权限)
文件权限,示意图
权选项 文件类型 读 写 执行 读 写 执行 读 写 执行
字符表示(d|l|c|s|p)(r) (w) (x) (r) (w) (x) (r) (w) (x)
数字表示 4 2 1 4 2 1 4 2 1
权限分配 ( 文件所有者 ) 文件所属组用户) ( 其他用户 )
八进制数字
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6 例如
rwx-111 7 640 ; rw-r----- (其中rw-是6 r--是4 ---是0 )
755; rwxr-xr-x (其中rwx是7 r-x是5 r-x=5)
umask值,可以用来保留在创建文件权限
umask 666 文件
umask 777 目录
dir: 777-umask 目录的最大
file:666-umask 文件的最大 ;有奇数加1,偶数保留
非特权用户是002
root的umask是022
umask 查看结果
umask [权限掩码] 设定
umask -S 新建文件直接模式显示
umask -p 输出可被调用
全局设置 : /etc/bashrc
用户设置:~/.bashrc
修改文件权限
chmod [选项] 八进制数字的方式 文件
-R递归修改权限
修改一类用户的所有权限
u=权限 UID=什么权限
g=权限
o=权限 不是管理员的用户=权限
ug=权限 UID和GID=权限
a=ugo
修改一类用户某位或某些位权限
u+
u-
g+
g-
o+
o-
a+
a-
+ 增加权限
- 减去权限
特殊权限
suid
sgid
sticky
进程有属主和属组;文件有属主和属组
》任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有执行权限
》启动为进程后,其进程的属主为发起者;进程的属组为发起者所属的组
可执行文件上suid权限
启动为进程之后,其进程的属主为原文件的属主
chmod u+s file 增加文件权限 。
相对应普通用户的权限,s相当于继承root的权限,进行某些操作 (只有二进制程序才有意义)
chmod u-s file 减去文件权限 。 suid设置在目录上无意义
可执行文件上sgid权限
启动进程之后,其进程的属主为源程序文件的属组
chmod g+s file 相对应组的GID 权限 (作用二进制程序)
chmod g-s file
目录上的sgid权限
如果作用在目录上将使该目录中新建文件或目录将自动继承该目录所属组
通常用户创建一个协作目录
chmod g+ dir
chmod g- dir
sticky具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录上设置sticky,只有文件的所有者或者root可以删除该文件
对文件无效
chmod o-t dir
chmod o-t dir
例如 ~]# ls -ld /tmp
rwxrwxrwt. 13 root root 4096 8月 4 08:40 /tmp 加了t权限的
suid;sgid都占据属主的执行权限位
s代表UID拥有x权限,S表带UID没有x权限
GID GID
t占据其他的执行权限位
不管是suid和sgid还有sticky三个都要配合x权限
设定文件特定属性
chattr +i 不能删除,改名,更改
chattr +a 只能增加
lsattr 显示特定属性
关于ACL : Access Control List 实现灵活的权限管理
除了文件的所有着,所属组和其他人,可以对更多的用户设置权限
ACL生效顺序:所属主,自定义ACL属主,所属组,自定义ACL组 ,其他用户
setfacl -m u:xiaommage:0(rwx) file
(命令选项) (用户名称 )(给定权限) 文件)
setfacl -x u:xiaoamge file
(命令选项)(用户名名称)(文件)
getfacl file
(查看文件给定的用户权限)
不仅可以设定用户权限 也可以g组设定权限
setfacl -m u:xiaomage:rwx file
(命令选项 uid用户名:权限:文件)
setfacl -m g:xiaomage:rwx file
(命令选项 gid用户名:权限:文件)
setfacl -m d:u:xiaomage:rwx file
( 加了d选项,就是指以后在文件夹中创建的文件都带有该权限 )
setfacl -k dir 删除默认ACL权限
getfacl file1 | setfacl --set-file=- file2
复制file1的ACL权限给file2
]# getfacl f1 | setfacl --set-file=- f2
(命令)(file)(管道传给命令=f1 到f2)
从file1文件中保存到file2文件中,保留了ACL权限
setfacl -b file
(命令选项清空文件内所有ACL权限)
批量加权限
vim file.txt
u:xiaomage:0
u:xiaomage:rwx
g:xiaoamge:rx
g:xiaomage:0
setfacl -M file.txt (调用文档内容并执行)
批量删权限
vim file2.txt
u:xiaomage:0
u:xiaomage:rwx
g:xiaoamge:0
g:xiaomage:rwx
setfacl -X file.txt(调用文档内容并执行)
ACL文件上的group权限是mask值 自定义用户或者组,拥有组的最大权限,而不是传统的组权限
一旦设置ACL权限后,权限已经变成mask的权限
mask的权限相当于高压线 其他用户只能比他小,或者相等。
用户或组的设置必须存在与mask权限设定的方位内才会生效
格式:setfacl -m mask::rx file
备份和恢复ACL
主要文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p参数。
但是tar等常见的备份工具是不会保留目录和文件的ACL信息
cp -a file dirfile
cp -p file dirfile
getfacl -R /tmp/dir1 > acl.txt
(命令加选项)(指定某个目录路径)(重定向到文本文档中)
getfacl -R * > /dir1/file.txt
(在当前目录下将所有的ACL重定向到某个目录中并定义名称)
setfacl -R -b /tmp/dir1
(命令加选项)-b清空目录中的ACL
setfacl -R --set-file=cal.txt /tmp/dir1 file.txt*
(命令加选项) (命令=读取文档恢复ACL) (到指定的文件目录)
本文出自 “小马哥Linux系统运维” 博客,转载请与作者联系!
原文地址:http://xiaomag.blog.51cto.com/11842517/1834513