1.文件基本权限r(read),w(write),x(exec),使用chmod来设置修改
权限对文件作用:最高权限为x
r: 读取文件的内容(cat/more/head/tail)
w: 编辑,新增,修改文件内容(vi/echo),--但是不可以删除文件
x: 可以执行文件
权限对目录作用:最高权限为w,
r: 可以查询目录下文件名(ls),
w: 具有修改目录结构的权限,包括新建文件和目录,删除此目录下文件和目录,
重命名此目录下文件和目录,剪切(touch/ rm/ mv/ cp)
x: 可以进入目录(cd)
若文件夹权限只赋予r读权限,ls只能看文件名,ll也是看不到目录下的文件属性信息
如文件大小inode文件权限等信息
所以文件夹有效的权限组合是(rx)(rwx)
[aryo@rhel64-64bit ~]$ ll
drwxr-xr-- 2 root root 4096 Jun 19 20:58 123
[aryo@rhel64-64bit ~]$ ls 123
ls: cannot access 123/123456: Permission denied
123456
[aryo@rhel64-64bit ~]$ ll 123
ls: cannot access 123/123456: Permission denied
total 0
-????????? ? ? ? ? ? 123456
2.文件默认权限
[aryo@rhel64-64bit ~]$ umask
0002
临时修改: umask 0002
永久修改: vi /etc/profile
用户新建文件的默认权限为666减去用户umask值
用户新建文件夹的默认权限为777减去用户umask值
3.文件ACL权限
查看分区是否开启acl权限:
[root@rhel64-64bit 123]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 75G 8.9G 63G 13% /
[root@rhel64-64bit 123]# dumpe2fs -h /dev/sda2
Default mount options: user_xattr acl
如果没有开启则可以remount重新开启分区acl权限:
mount -o remount,acl /
acl其实就是在基本的权限的owner,group,others上再赋予其他非文件属主属组的
用户或组权限,
1>查看acl权限:getfacl filename
2>设置acl权限:setfacl,-m设定权限,-x删除单独一条权限,-b删除所有acl权限
-R递归acl权限,
-d给目录设定默认acl权限,目录下新建子文件会自动继承父目录的acl权限
setfacl -m u:aryo:rx test <-给用户设定acl权限
setfcal -m g:aryo:rx test <-给组设定acl权限
[root@rhel64-64bit ~]# getfacl test
# file: test
# owner: root
# group: root
user::rw-
user:aryo:r-x
group::r--
mask::r-x
other::r--
这里mask指定最大的有效权限,用户设定的acl权限要和umask对比结果才是用户最终的acl权限,
规则如下:
------------------
umask user 最终
r r r
r - -
- r -
- - -
-------------------
可以使用setfacl -m m:rx test 修改mask的最大有效权限
4.SetUID权限:
1>只有可以执行的二进制程序才能设定SUID权限
2>命令执行者要对该程序有x执行权限
3>命令执行者在执行程序时获得该程序文件属主的身份
4>SUID权限有限制,只在该程序执行过程中有效,
设置SetUID权限
chmod 4xxx <file-name> 或 chmod u+s <file-name>
例子:passwd拥有suid权限,所以其他用户可以修改密码,也就是修改shadow文件
root@rhel64-64bit ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Feb 17 2012 /usr/bin/passwd
[root@rhel64-64bit ~]# ll /etc/shadow
---------- 1 root root 1182 Jun 19 20:04 /etc/shadow
5.SetGID权限:
对文件:
1>只有可以执行的二进制程序才能设定SGID权限
2>命令执行者要对该程序有x执行权限
3>命令执行者在执行程序时获得为该程序文件属组身份
4>SGID身份改变只在程序执行过程中有效
设置SetGID权限:
chmod 2xxx <file-name> 或 chmod g+s <file-name>
例子:其他用户执行locate,拥有slocate属组对mlocate.db的读r权限
[root@rhel64-64bit ~]# ll /usr/bin/locate
-rwx--s--x 1 root slocate 38464 Sep 24 2012 /usr/bin/locate
[root@rhel64-64bit /]# ll /var/lib/mlocate/mlocate.db
-rw-r----- 1 root slocate 3521576 Jun 15 11:00 /var/lib/mlocate/mlocate.db
1>普通用户必须对此目录拥有r和x权限
2>普通用户在此目录中的有效组会变成目录的属组
3>普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组
例子:建立test文件夹给予2777权限,其他用户再创建文件,该文件的属组则变成了
test目录的属组
ll /tmp
drwxrwsrwx 2 root root 4096 Jun 20 11:36 test
[aryo@rhel64-64bit test]$ touch 22
[aryo@rhel64-64bit test]$ ll
-rw-rw-r-- 1 aryo aryo 0 Jun 20 11:35 11
-rw-rw-r-- 1 aryo root 0 Jun 20 11:36 22 ---文件属组变为test目录的属组
6.SBIT权限:
1>SBIT只对目录生效
2>普通用户对该目录有w和x权限
3>若没有SBIT,则普通用户可以对目录下的文件/子目录进行删除操作(因为用户对目录具有w权限),
包括其它用户建立的目录/文件;但若赋了SBIT,则普通用户即使拥有w权限也只能删除自己创建的
文件/目录,而不能删除不属于自己的文件/目录
设置SBIT权限:
chmod 1xxx <file-name> 或 chmod o+t <file-name>
例子:/tmp目录拥有sbit权限,其他用户不可删除非自己创建的文件
drwxrwxrwt. 13 root root 4096 Jun 20 11:34 tmp
7.sudo权限设置
sudo操作对象是系统命令,是root 把本来只能超级用户执行的命令赋予普通用户执行
visudo命令修改sudo权限, 实际修改/etc/sudoers文件
例子:
root /%组名 ALL=(ALL) ALL
用户名 可执行sudo命令的主机地址=(可使用身份) 授权命令(绝对路径)
user1 ALL=(ALL) /sbin/shutdown -r now
查看当前用户的sudo权限:
sudo -l