一、文件特殊权限
s: suid, set uid,属主有s权限,意味着用户在执行此程序时,其进程的属主不再是发起者本人,而是这个程序文件的属主;
s:属主原本有执行权限
S:属主原本无执行权限
chmod u+|-s /path/to/somefile 给文件属主增删执行权限
chmod 4644 /path/to/somefile
s: sgid, set gid,属组有s权限,意味着执行此程序时,其进程的属组不再是运行者本人所属的基本组,而是此程序文件的属组;主要用于在特定目录创建文件时使其属组与目录属组相同
chmod g+|-s /path/to/somefile 设置目录+s再于目录下创建文件则文件属组不再是当前用户基本组,此方式创建的文件同组用户可互相删除文件需再行设定t属性
t: sticky, 粘贴位,附加other的权限上,表现为t 仅owner可删除此文件但是同组用户仍可修改内容。
t:
T:
chmod o+|-t /path/to/somefile
三位特殊权限
u:s
g:s
o:t
suid,sgid,sticky
000
ugt: 001
010
100
011
101
110: 6
111
chmod 6664 /tmp/a.txt
umask: 0022 首位对应特殊权限
目录应用实例
/tmp/test
chmod g+s,o+t /tmp/test
即若原权限为775
chmod 3775 /tmp/test
chown :mygrp /tmp/test
二、FACL: 文件访问控制列表
hadoop: /var/tmp/test.txt
hadoop, hadoop
664: 其它,只读
hadoop希望能够让hive写此文件,他该如何进行?只能修改other的权限有写权限;
acl: 用于实现在原有的访问控制机制之外补充一种文件访问控制机制
用户访问文件:
1、用户是否为文件属主?
2、用户是否有特定的访问控制条目?
3、用户是否属于文件属组?
4、用户所属的组是否有特定的访问控制条目?
5、其它。
getfacl /path/to/somewhere: 查看文件或目录的访问控制列表;
setfacl -m u:USERNAME:MODE /path/to/somewhere: 为USERNAME指定的用户设定对文件/path/to/somewhere具有MODE访问权限;
setfacl -m g:GROUPNAME:MODE /path/to/somewhere: 为GROUPNAME指定的组设定对文件/path/to/somewhere具有MODE访问权限;
setfacl -x u:USERNAME /patn/to/somewhere
setfacl -x g:GROUPNAME /path/to/somewhere
额外挂载的文件系统默认不支持acl,如果要支持,
方法1:
mount -o acl DEVICE MOUNT_POINT
永久有效:需要编辑/etc/fstab,在挂载选项(defaults)后附加acl选项;
方法2:设定分区的默认挂载选项中有acl,则挂载时无须再指定acl;
tune2fs -o acl DEVICE
取消此默认挂载选项:
tune2fs -o ^acl DEVICE
hadoop: 文件/var/tmp/hadoop.txt, 664
拒绝hive用户对此的任何访问;
setfacl -m u:hive:--- /var/tmp/hadoop.txt
复制文件/var/log/messages至/data目录, 其属主为root用户,且有读写权限,属组为root组,且有读写权限;可以被任何人读取,可以被gentoo用户和magedu组读写,但centos用户没有任何访问权限;
# mkdir /data
# cp /var/log/messages /data
# chmod 664 /data/mesages
# setfacl -m u:gentoo:rw /data/mesages
# setfacl -m g:magedu:rw /data/mesages
# setfacl -m u:centos:--- /data/mesages