Linux文件权限

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值