文件权限管理
文件基本权限
学习Linux的基本权限首先要掌握几个常用的的命令:ls 、ll = ls –l、ll –a等。\
例如:
执行下列命令之后:
[[email protected] ~]# ll -a total 432 dr-xr-x---. 31root root 4096 Oct31 17:53 . dr-xr-xr-x. 27root root 4096 Oct31 17:51 .. drwxr-xr-x. 2 root root 4096 Aug 29 16:39 .abrt -rw-------. 1 root root 1698 Aug 29 10:41 anaconda-ks.cfg [ 1 ][ 2 ] [ 3 ][ 4] [ 5 ][ 6 ][ 7 ]
1:代表文件权限
2:代表文件连接数
3:代表文件所有者
4:代表文件所属用户组
5:代表文件容量(默认以字Byte为单位,若加上-h 参数则是以KB,MB或者GB为单位显示如下图)
[[email protected] ~]# ll -h
total 252K
-rw-------. 1 root root 1.7K Aug 29 10:41 anaconda-ks.cfg
-rw-r--r-- 1 root root 16 Sep 24 18:10 a.sh
6:代表文件最后被修改日期
7:代表文件名
[[email protected] ~]# ll passwd -rw-r--r-- 1 root root 2204 Sep 24 17:15 passwd
文件基本权限
- rwx r-x r-x user1 user1 FILENAME
类型 拥有者的权限 所属组的权限 其他人的权限 拥有者 属组 对象
第一个字符代表这个文件是“目录、文件、或链接文件等”
若第一个字符为[d]代表目录
若第一个字符为[-]代表文件
若第一个字符为[l]代表链接文件(linkfile)
若第一个字符为[b]代表设备文件里面的可供存储的接口设备
若第一个字符为[c]代表设备文件里面的串行端口设备,如键盘、鼠标
紧跟第一个字符后面的三组连在一起的字符分别代表拥有者的权限,所属组的权限,其他用户的权限,
对于文件:r读 w写 x执行
对于目录:r读(看到目录里面有什么)
w建文件、删除、移动
x进入
想要跟深入的了解ls命令最权威的解释当然是man手册
ls [选项] [文件名...]
-C 多列输出,纵向排序。
-F 每个目录名加“ / ”后缀,每个 FIFO 名加“ | ”后缀,每个可运行名加“ * ”后缀。
-R 递归列出遇到的子目录。
-a 列出所有文件,包括以 "." 开头的隐含文件。
-c 使用“状态改变时间”代替“文件修改时间”为依据来排序(使用“ -t ”选项时)或列出(使用“ -l ”选项时)。
-d 将目录名象其它文件一样列出,而不是列出它们的内容。
-i 输出文件前先输出文件系列号(即 i 节点号— i-node number)。 -l 列出(以单列格式)文件模式( file mode ),文件的链接数,所有者名,组名,文件大小(以字节为单位),时间信息,及文件名。缺省时,时间信息显示最近修改时间;可以以选项“ -c ”和“ -u ”选择显示其它两种时间信息。对于设备文件,原先显示文件大小的区域通常显示的是主要和次要的号(majorand minor device numbers)。
-q 将文件名中的非打印字符输出为问号。(对于到终端的输出这是缺省的。)
-r 逆序排列。
-t 按时间信息排序。
-u 使用最近访问时间代替最近修改时间为依据来排序(使用 “ -t ”选项时)或列出(使用“ -l ”选项时)。
-1 单列输出。
GNU 细节
如果标准输出是终端,将多列输出(纵向排序)。
dir ( 也被安装为命令 d ) 等同于“ ls -C ”;即,文件
缺省是多列输出,纵向排序。vdir ( 也被安装为命令 v ) 等同于“ ls -l ”; 即,文件缺省是按长格式输出。
改变文件权限的命令
chmod
作用:修改文件权限
u+r user 拥有者
g-w group 组
o=x other 其他人
a+x all 所有人
+加入权限 - 去除权限 = 设置为
举例:
[[email protected] ~]# ll passwd -rw-r--r-- 1 root root 2204 Sep 24 17:15 passwd [[email protected] ~]# chmod u+x passwd #添加用户可执行权限 [[email protected] ~]# ll passwd -rwxr--r-- 1 root root 2204 Sep 24 17:15 passwd [[email protected] ~]# chmod g-r passwd #去除所属组的可读权限 [[email protected] ~]# ll passwd -rwx---r-- 1 root root 2204 Sep 24 17:15 passwd [[email protected] ~]# chmod g=rwx,o=rx passwd 注意:g=rwx中各个参数之间没有空格,与o=rx之间仅有英文个逗号 [[email protected] ~]# ll passwd -rwxrwxr-x 1 root root 2204 Sep 24 17:15 passwd
修改目录的权限
用法同上
[[email protected] ~]# ll -d xuegod drwxr-xr-x 2 root root 4096 Oct 31 18:29 xuegod [[email protected] ~]# chmod u-w,g+w,o-x xuegod/ [[email protected] ~]# ll -d xuegod dr-xrwxr-- 2 root root 4096 Oct 31 18:29 xuegod
修改other权限:
chmod o+/-/= r 、w 、 x 用法同上
chmod o+/-/= rwx 用法同上
chmod a+/-/= rwx 用法同上
chmod +/-/= rwx 用法同上 #不写a也可以
使用数字表示权限
- rwx r-x r-x user1 user1 FILENAME
类型 拥有者的权限 所属组的权限 其他人的权限 属主 属组
rwx
r-- -w- --x
100 010 001 二进制 进制转换器
4 2 1 十进制
rw- 的值是多少? 4+2=6
r-x 4+1=5
rwxr-xr-x 的值是多少?rwx=4+2+1=7 r-x=4+1=5 r-x=4+1=5 rwxr-xr-x=755
[[email protected] ~]# ll -d xuegod/ dr-xrwxr-- 2 root root 4096 Oct 31 18:29 xuegod/ [[email protected] ~]# chmod 644 xuegod/ [[email protected] ~]# ll -d xuegod/ drw-r--r-- 2 root root 4096 Oct 31 18:29 xuegod/
chown
描述:chown 修改每个由第一个非选项参数声明的给定 file(文件) 的用户和/或组的所有权.如下: 如果只给出了用户名(或者数字用户标识),那么该用户即成为每个指定文件的所有者,而该文件的组别并不改变.如果用户名后面紧跟着冒号和组名(或者是数字组标识),并且它们之间没有空格,那么文件的组所有权也随之改变.
作用:修改文件拥有者和所属组
语法:chown [options] user [:group] file...
chown USER:GROUP 对象
chown USER 对象
chown :GROUP 对象
-R 递归(目录下的所有内容全部更改,否则只修改目录)
[email protected] ~]# chown xuegod:root passwd [[email protected] ~]# ll passwd -rwxrwxr-x 1 xuegod root 2204 Sep 24 17:15 passwd
一个文件只有读的权限,拥有者是否可以写这个文件? 文件所有者一定可以写文件
[[email protected] ~]# touch xuegod1 [[email protected] ~]# cp xuegod01 /home/xuegod/ [[email protected] ~]# su xuegod [[email protected] ~]$ vim xuegod01 [[email protected] ~]$ cat xuegod01 allow write!!
结果显示可以正常写入!
设置文件默认权限的补码:
系统用户:#umask 022
普通用户:#umask 002
计算方法:
文件默认权限=666-umask值 666-022=644
目录默认权限=777-umask 值 777-022=755
#这是一个好的记忆方法,但不严谨。
666-033=633 rw—wx-wx
umask掩码为033 .666-033=633 结果为:644
计算方法:
6 6 6 umask 0 33
110 110 110 000011 011 | 取反
111 100 100\/
110 110 110 与 111 100 100
| /
110 100 100
6 4 4
了解:
/etc/bashrc
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id-un`" ]; then # id -gn显示组名,id -un 显示用户名
umask 002 #普通用户
else
umask 022 #系统用户
fi
特殊权限:
SUID SGID Stickybit
s对应的数值为:u 4,g 2,
t 1
SUID:
限定:只能设置在二进制可执行程序上面。对目录文本设置无效。
功能:程序运行时的权限从执行者变更成程序所有者。
[[email protected] ~]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 30768 Feb 17 2012 /usr/bin/passwd [[email protected] ~]$ ll /etc/shadow ---------- 1 root root 1054 Oct 31 18:17 /etc/shadow [[email protected] ~]$ less /etc/shadow /etc/shadow: Permission denied
由于权限不够所以操作被拒绝。
[[email protected] ~]# ll /usr/bin/less -rwxr-xr-x 1 root root 154416 Sep 26 2011 /usr/bin/less [[email protected] ~]# chmod u+s /usr/bin/less #赋予特殊权限 [[email protected] ~]# su xuegod [[email protected] root]$ ll /usr/bin/less -rwsr-xr-x 1 root root 154416 Sep 26 2011 /usr/bin/less [[email protected] root]$ less /etc/shadow #正常显示 root:$6$nV./lzE/.D9ygyqV$Gsg5Ipd1Beu8CsWSHriKyVJiz5I3rObB9YkG24DArymS4Niavoh7mWdwqA8GxNO3ddICCw4fNACTO3f.l88iY1:16676:0:99999:7::: bin:*:15937:0:99999:7::: daemon:*:15937:0:99999:7::: adm:*:15937:0:99999:7::: · · ·
注意
[[email protected] ~]# chmod 4755 /usr/bin/less #4755 = u+s [[email protected] ~]# ll /usr/bin/less -rwsr-xr-x 1 root root 154416 Sep 26 2011 /usr/bin/less\
SGID:
限定:既可以给二进制可执行程序设置,也可以给目录设置。
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的所属组
[[email protected] ~]# mkdir xuegod118 [[email protected] ~]# ll -d xuegod118/ drwxr-xr-x 2 root root 4096 Oct 31 19:15 xuegod118/ [[email protected] ~]# chmod g+s xuegod118/ [[email protected] ~]# ll -d xuegod118/ drwxr-sr-x 2 root root 4096 Oct 31 19:15 xuegod118/ [[email protected] ~]# chown :bin xuegod118/ [[email protected] ~]# cd xuegod118/ [[email protected] xuegod118]# touch sishen [[email protected] xuegod118]# ll sishen -rw-r--r-- 1 root bin 0 Oct 31 19:17 sishen
Stickybit
限定:只作用于目录
功能:目录下创建的文件只有root、文件创建者、目录所有者才能删除
[[email protected] ~]# ll -d /tmp/ drwxrwxrwt. 21 root root 4096 Oct 31 19:17 /tmp/ [[email protected] ~]# chmod o+t /tmp/ [[email protected] ~]# su xuegod [[email protected] root]$ cd /tmp/ [[email protected] tmp]$ touch sishen [[email protected] tmp]$ ll sishen -rw-rw-r-- 1 sishen sishen 0 Oct 31 19:33 sishen [[email protected] tmp]$ su xuegod Password: [[email protected] tmp]$ rm -rf sishen rm: cannot remove `sishen‘: Operation not permitted
扩展ACL
ACL是Access Control List的缩写,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的局部权限设定。ACL 可以针对单个用户,单个文件或目录来进行r,w,x的权限设定,特别适用于需要特殊权限的使用情况。
ACL主要针对用户(user)、用户组(group)、以及掩码(mask)方面来控制权限。
简单地来说,ACL就是可以设置特定用户或用户组对于一个文件/目录的操作权限。
而在windows系统上,没有这个ACL,ACL是类Unix(Unix-like)操作系统权限的额外支持项目,因此要使用ACL必须要有文件系统的支持才行。主要包括ReiserFS, EXT2/EXT3/ext4, JFS, XFS等文件系统
ACL权限的查看与设置(getfacl, setfacl)
知道了ACL的意义了,也知道了系统是否支持ACL,那么下面就是如何来设定/使用这个ACL呢?
getfacl:查看文件/目录的ACL设定内容
setfacl:设置文件/目录的ACL内容
相关参数说明
先来看看setfacl这个命令的相关参数说明
语法:setfacl [-bkRd] [{-m|-x} acl参数] 文件名
-m :设置后续的acl参数
-x :删除后续的acl参数
-b :删除所有的ACL设定参数
-R :递归设置acl参数
-d :设置预设的acl参数(只对目录有效,在该目录新建的文件也会使用此ACL默认值)
-k :删除预设的ACL参数
[[email protected] ~]# touch a.txt [[email protected] ~]# getfacl b.txt # file: b.txt # owner: root # group: root user::rw- group::r-- other::r—
对目录进行设置
(-R一定要在-m前面,表示目录下所有文件)
[[email protected] ~]# setfacl -R -m u:sishen:rw- xuegod [[email protected] ~]# getfacl !$ getfacl xuegod # file: xuegod # owner: xuegod # group: xuegod user::rw- user:sishen:rw- group::r-- mask::rw- other::r—
删除acl
[[email protected] ~]# setfacl -x u:sishen b.txt #删除单个用户的权限 [[email protected] ~]# setfacl -b b.txt #删除所有acl权限
REHL6 Linux文件系统扩展属性:chattr lsattr
+a 只能追加内容
+i 不能被修改
[[email protected] ~]# touch xuegod02 [[email protected] ~]# vim xuegod [[email protected] ~]# ll xuegod02 -rw-r--r-- 1 root root 0 Oct 31 19:55 xuegod02 [[email protected] ~]# chattr +a xuegod02 [[email protected] ~]# rm -rf xuegod [[email protected] ~]# rm -rf xuegod02 rm: cannot remove `xuegod02‘: Operation not permitted [[email protected] ~]# echo BBBBBBBBB > xuegod02 bash: xuegod02: Operation not permitted od118 ~]# echo XXXXXXX >> xuegod02 bash: xuegod02: Permission denied [[email protected] ~]# lsattr xuegod02 ----ia-------e- xuegod02
学神-IT-教育51cto技术交流群:468845589 快来上我们公开课吧!
本文由学神-IT-教育1508班VIP学员学神-IT-死神同学整理提供