六、权限管理
1.查看权限
查看文件属性(详细信息):ls-l -rw-r--r-- 1 root root 0 Dec 30 21:43 hello
查看文件属性(详细信息):ls -ld drwxr-xr-x 2 root root 6 Dec 30 21:44 test
第1个字符代表文件类型:
• d表示目录
• -表示普通文件,
• l表示链接文件(link file);
• b表示设备文件,例如硬盘(可随机存取设备);
• c表示为字符设备,例如键盘、鼠标(一次性读取设备)
Linux是个多用户多任务的系统,常常会有多人同时使用同一主机来进
行工作,为了考虑每个人的隐私权以及每个人喜好的工作环境,对用户进
行分类:
- 文件拥有者(user)
- 文件所属组(group)
- 其他人(other)
r(read):读权限,用数字4表示
对于文件:cat
对于目录:ls
w(write):写权限,用数字2表示
对于文件:vim,gedit
对于目录:touch/mkdir,rm/rmdir
x(exec):执行权限,用数字1表示
对于文件:普通文件不需要执行权限;
对于目录:能否cd到该目录
第2~4个字符代表文件所有人的权限;
第5~7个字符代表文件所属组的权限;
第8~12个字符代表其他人的权限。
第二栏表示有多少文件名链接到此节点(i-node)
第三栏代表文件所有人,第四栏代表文件所属组。
-rw-r--r-- 1 root root 代表文件所有人root对文件有读写的权限,
文件所属组root组成员对文件有读的权限。
第五栏代表文件的容量大小,默认单位为Bytes;
第六栏表示文件的创建日期或者是最近的修改日期;
第七栏表示文件的文件名;文件所有人和所属组
chown命令:修改文件的所有人或所属组
chown student 文件
chown student.student 文件
chown student 目录 -R
chown student:student 目录 -R
chown --reference=find.all file
2.文件所有人和所属组
chgrp命令:修改文件的所属组
chgrp student 文件
chgrp student 目录 -R
chgrp --reference=find.all file
文件权限的修改
第一种方法:通过字符方式修改
格式:
chmod <u|g|o><+|-|=><r|w|x> 目标
实例:
chmod u+r,g-w,o=r /mnt/file
chmod u=rw,g=r,o-r /mnt/file
3.文件权限的修改
第一种方法:通过数字方式修改
格式:
chmod 数字 目标
总结:
r:4 w:2 x:1
7:rwx 6:rw- 5:r-x 4:r--
3:-wx 2:-w- 1:--x 0:---
4.系统默认权限
• 当你创建一个新的文件或目录时,该文件或目录有默认权限。
• umask的分数指的是“该默认值需要减掉的权限。
• 在默认权限的属性上,目录与文件是不一样的。
• 文件的最大权限为666,目录的最大权限为777。
查看umask值:
umask
修改umask值:
umask 022 //临时修改umask值
vim /etc/bashrc //永久修改bash里创建文件的umask值
vim /etc/profile //永久修改每个用户创建文件的umask值
注意:想要永久性的修改umask值,一定要重新读取两个配置文件后,才能生
效。
5.特殊权限
o+t权限:sticky,粘制位
效果:
只针对于目录,当目录上有o+t的权限时,所有用户在该目录下均可
创建文件,但只有文件所有人和root用户可以删除该目录下的文件。
设定方式:
chmod o+t 目录
chmod 1777 目录
在系统中的应用:
[root@desktop126 ~]# ll -ld /tmp/
drwxrwxrwt. 28 root root 4096 Dec 31 01:39 /tmp/
u+s权限:suid,冒险位
效果:
只针对于二进制可执行文件,该命令发起的程序是以该命令所有人的
身份去执行。
设定方式:
chmod u+s 二进制可执行文件
chmod 4755 二进制可执行文件
在系统中的应用:
[root@desktop126 ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jan 29 2014 /usr/bin/passwd
[root@desktop126 ~]# ll /etc/shadow
---------- 1 root root 1493 Dec 30 21:37 /etc/shadow
g+s权限:强制位
效果:
• 针对二进制可执行文件:该命令发起的程序是以该命令所有组的
身份去执行;
• 针对目录:目录新建文件的所属组与该目录的所有组保持一致;
设定方式:
chmod g+s 文件|目录
chmod 2755 文件|目录
6.文件访问控制列表ACL
setfacl :设置文件或目录的ACL权限
格式:
setfacl -m <u|g|m>:<username|groupname>:rwx 文件名
//添加或者修改acl权限
setfacl -m d:<u|g|m>:<username|groupname>:rwx 目录名
//添加或者修改目录下新建文件默认acl权限
传统的权限仅有三种身份(owner,group, others) 搭配三种权限
(r,w,x),并没有办法单纯的针对某一个使用者或某一个群组来设置特定
的权限需求,此时就得要使用ACL(文件访问控制列表,Access Control
List)这个机制。
ACL因此目前ACL几乎已经默认加入在所有常见的Linux文件
系统的挂载参数中(ext2/ext3/ext4/xfs等等),但rhel6.0版本默认不
支持acl的功能。
•如何查看文件是否有acl权限?
ll /etc/passwd
-rw-r--r--. 1 root root 2173 Jan 6 21:08 /etc/passwd
//注释:第11位为.时代表没有acl权限;为+时代表
有acl权限。
setfacl :设置文件或目录的ACL权限
格式:
setfacl -m <u|g|m>:<username|groupname>:rwx 文件名
//添加或者修改acl权限
setfacl -m d:<u|g|m>:<username|groupname>:rwx 目录名
//添加或者修改目录下新建文件默认acl权限
格式:
setfacl -x <u|g>:<username|groupname> 文件名
//删除某一个acl权限
setfacl -x d:<u|g>:<username|groupname> 目录名
//删除某目录下新建文件默认的一个acl权限
setfacl -b 文件名
//删除该文件所有的acl权限
setfacl -b 目录名
//删除某目录下新建文件默认的所有的acl权限
例子:
setfacl -m u:user2:rw hello
//指定user2用户对hello文件有读写权限
setfacl -m g:user2:rw hello
//指定user2用户组对hello文件有读写权限
setfacl -m m:r hello
//指定该文件中最大生效的权限,但不稳定,会随
着其他的设定而修改
例子:
setfacl -x u:user2 hello
//删除user2用户对hello文件的特殊权限
setfacl -x g:user2 hello
//删除user2用户组对hello文件的特殊权限
setfacl -b hello
//删除hello文件的acl权限
getfacl:查看文件的ACL权限。
[root@foundation0 ~]# getfacl hello
# file: hello //文件名
# owner: root //文件所有人
# group: root //文件所属组
user::rw- //文件所有人对该文件的权限
user:user1:rw- //特定用户user1对该文件的权限
user:user2:rwgroup::
r-- //文件所属组成员对该文件的权限
group:user2:rw- //特定用户组user2对该文件的权限
mask::rw- //默认给最大的权限
other::r-- //其他人对该文件的权限