安全上下文:
cat --> /bin/cat
openstack: /bin/cat /etc/fstab
/etc/shadow
openstack, passwd, /etc/shadow
s: suid, set uid,属主有s权限,意味着用户在执行此程序时,其进程的属主不再是发起者本人,而是这个程序文件的属主;
s:属主原有执行权限
S:属主无执行权限
chmod u(+|-)s /path/to/somefile
s: sgid, set gid,属组有s权限,意味着执行此程序时,其进程的属组不再是运行者本人所属的基本组,而是此程序文件的属组;
chmod g+|-s /path/to/somefile
t: sticky, 粘贴位,附加other的权限上,表现为t
t:other原有执行权限
T:other原无执行权限
chmod o+|-t /path/to/somefile
suid,sgid,sticky
ugt 000--------->0
001:--------->1
010:--------->2
100:--------->3
011:--------->4
101:--------->5
110:--------->6
111:--------->7
chmod 6664 /tmp/a.txt 其中6664的第一位的数字6表示:属主有s权限,属组有s权限其它无t权限。
umask: 0022
/tmp/test
chmod g+s,o+t /tmp/test
chmod 3775 /tmp/test
chown :mygrp /tmp/test修改组名
FACL: 文件访问控制列表
hadoop: /var/tmp/test.txt
hadoop, hadoop
hadoop希望能够让hive写此文件,他该如何进行?因为他不能把hive用户设置为属主,并且也不能让hive加入hadoop组,所以只能修改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 取消USERNAME指定的用户具有s权限
setfacl -x g:GROUPNAME /path/to/somewhere 取消USERNAME指定的组具有s权限
额外挂载的文件系统默认不支持acl,如果要支持,
方法1:
mount -o acl DEVICE MOUNT_POINT
永久有效:需要编辑/etc/fstab,在挂载选项后附加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用户没有任何访问权限;
解析:首先要确保有data目录,
# mkdir /data
复制文件/var/log/messages至/data目录
# cp /var/log/messages /data
修改权限
# chmod 664 /data/mesages
可以被gentoo用户和magedu组读写,就要设置gentoo用户和magedu组具有rw权限
# setfacl -m u:gentoo:rw /data/mesages
# setfacl -m g:magedu:rw /data/mesages
centos用户没有任何访问权限
# setfacl -m u:centos:--- /data/mesages