天天看点

Day05 权限和归属(ADMIN05)一、基本权限二、权限适用对象(归属)三、文件权限格式四、chmod [-R] [u,g,o]+-= file五、chown [-R] user:[.]group file六、如何判断用户具备的权限七、特殊权限(附加权限)八、ACL访问控制列表九、LDAP目录和autofs服务

读取权限。允许查看内容。针对目录来说,能否ls只和r权限有关

写入权限。允许修改内容。针对目录来说,要对该目录修改的话,必须要有父目录的w权限

可执行权限。允许运行和切换。针对目录来说,能否cd目录只和x权限有关

所有者、属主(user),拥有此文件/目录的用户

所有组、属组(group),拥有此文件/目录的组

其他(other)除user、group以外的用户。如果某个文件的other位拥有w权限的话,linux系统会自动高亮显示

ls -ld /etc/

d rwx r-x r-x . 133 root root 8192 10月 30 09:38 /etc/

类型 属主 属组 其他组 ACL权限位 属主 属组

修改权限命令

chmod -R o+w /nsd02 #把/nsd02及其以下的子文件夹增加其他人可写的权限

给文件的user、group、other权限位全部加x

修改文件所属的属主和属组

linux的身份判断原则是这样的:所有者>所属组>其他人,匹配即停止

举例如下:

drwxr-xrwx. 2 zhangsan tedu 6 Oct 30 11:31 a

drw-r-xrwx. 2 natasha tedu 6 Oct 30 11:31 b

drwxr-xrwx. 2 zhangsan tedu 6 Oct 30 11:44 c

drwxr-xrwx. 2 zhangsan tedu 6 Oct 30 11:45 dd

-rwxr-xrwx. 1 zhangsan tedu 10 Oct 30 11:33 readme.txt

id natasha

uid=1001(natasha) gid=1001(natasha) 组=1001(natasha),1003(tedu)

从结果看对于目录b,natasha即是属主又是属于tedu组,那么natasha是否能cd进去呢?结果是不能,因为属主权限位没有x,没有x就无法cd。虽然属组权限位有x,但是根据身份判断原则,先判断属主,匹配即停止,所以没法cd

适用于可执行文件,可以让使用者具有文件属主的身份及部分权限(传递所有者身份)。

附加在所有者(u)的执行权限位(x)上,执行权限位会变成s或S

s:所有者(u)的执行权限位原来有x权限

S:所有者(u)的执行权限位原来没有x权限

举例:

#cp /usr/bin/touch /opt/haha

chmod u+s /opt/haha

ls -l /opt/haha

-rwsr-xr-x. 1 root root 62432 11月 10 19:30 haha

su - zs

$ ./haha zs.txt

$ ls -l zs.txt

-rw-rw-r--. 1 root zs 0 Nov 10 19:31 zs.txt

$test -u haha#测试是否设置了set uid

$ echo $?

必考知识点

适用于可执行文件,功能与set uid相同(传递属组的身份),附加在属组(g)的执行权限位(x)上,执行权限位会变成s。该功能基本不用

适用于目录,可以使目录下新增的文件自动设置与父目录相同的属组;新增的子目录自动设置与父目录相同的属组而且子目录属组的执行权限位上,同样会变成s

mkdir /nsddir

test -g /nsddir

echo $?

1

chmod g+s /nsddir

用zhangsan、natasha创建文件,查看文件后发现继承了目录的属组

ls -l /nsddir/

总用量 4

drwxr-xrwx. 2 zhangsan tedu 6 10月 30 11:31 a

drw-r-xrwx. 2 natasha tedu 6 10月 30 11:31 b

drwxr-xrwx. 2 zhangsan tedu 6 10月 30 11:44 c

drwxr-xrwx. 2 zhangsan tedu 6 10月 30 11:45 dd

-rwxr-xrwx. 1 zhangsan tedu 10 10月 30 11:33 readme.txt

适用于开放w权限的目录,可以阻止用户滥用w权限来修改或删除其他人的文件。

附加在其他人(o)的执行权限位(x)上,执行权限位会变成t,俗称t权限

ls -ld /public/

drwxrwxrwt. 2 root root 37 10月 30 14:46 /public/

test -k /public #测试是否有T权限

ls -l /public/

-rw-rw-r-T. 1 natasha natasha 4 10月 30 14:47 natasha.txt

-rw-rw-r-T. 1 zhangsan zhangsan 0 10月 30 14:46 zs.txt

natasha、zhangsan两个用户创建了文档,在没设置t权限的时候,他们修改双方的文件内容及删除。当设置了t权限之后,他们只能修改自己创建的文件

标准权限加特殊权限的控制还是不够精细,acl可以对个别用户、个别组设置独立的权限。ACL权限高于基本权限

EXT3、EXT4、XFS文件系统默认支持

查看ACL权限命令

ls /NB/ -ld

drwxrwx---+ 2 root cw 20 10月 30 15:22 /NB/

getfacl /NB/

getfacl: Removing leading '/' from absolute path names

设置ACL权限命令

setfacl -m u:dc:rwx,u:zhangsan:rx,u:natasha:x /test/ #为dc,zhangsan,natasha用户设置对/test目录的不同权限

getfacl /test/

dc用户权限测试:

[dc@server0 ~]$ cd /test/

[dc@server0 test]$ ls

aaa.txt

[dc@server0 test]$ echo dcdcd> aaa.txt 

-bash: aaa.txt: Permission denied

zhangsan用户权限测试:

[zhangsan@server0 public]$ cd /test/

[zhangsan@server0 test]$ echo as >aaa.txt 

[zhangsan@server0 test]$ cat aaa.txt 

dcdcd

natasha用户权限测试:

[natasha@server0 ~]$ ls /test/

ls: cannot open directory /test/: Permission denied

[natasha@server0 ~]$ cd /test/

[natasha@server0 test]$ ls

ls: cannot open directory .: Permission denied

删除指定用户的ACL策略

清空ACL策略

删除默认策略

恢复默认权限

轻量级目录访问协议(Lightweight Directory Access Protocol)

由服务器来集中存储并向客户端提供的信息,包括用户名、密码、通信录等

sssd:与服务端沟通的软件

authconfig-gtk:图形配置sssd的工具

在虚拟机输入authconfig-gtk,打开图形化配置工具

用户账户数据库:LDAP

LDAP搜索基础DN:dc=example,dc=com

LDAP服务器:classroom.example.com

勾选用TSL加密连接

认证方法:LDAP密码

autofs

作用:

当用户需要访问一个文件系统时,能自动挂载系统,不需要时能自动卸载。

需要满足两个条件:

-LDAP服务器已经把用户的家目录通过NFS共享出来了

-本地已经创建挂载点/home/guests/

安装步骤:

showmount -e classroom.example.com#查看LDAP服务器上的NFS共享

Export list for classroom:

/home/guests 172.25.0.0/255.255.0.0

yum -y install autofs#安装autofs软件包

mkdir /home/guests#创建家目录挂载点

echo '/home/guests /etc/guests.rule' >>/etc/auto.master#创建规则文件

echo 'ldapuser0 -rw,v3 classroom.example.com:/home/guests/ldapuser0' >>/etc/guests.rule#在规则文件里面添加挂载目录名、权限、服务器地址:设备路径

echo ' -rw,v3 classroom.example.com:/home/guests/&' >>/etc/auto.all.rule#允许所有ldap用户登录,匹配任意用户名,&匹配任意设备路径

systemctl restart autofs && systemctl enable autofs

su - ldapuser0 -c 'pwd'#测试挂载是否成功

su - ldapuser0 -c 'touch aaa'#测试是否能写入

su - ldapuser0 -c 'ls -l aaa'#测试文件是否创建成功

本文转自 goldwinner 51CTO博客,原文链接:http://blog.51cto.com/355665/2068696,如需转载请自行联系原作者

继续阅读