天天看点

5·RHCSA用户权限、共享目录、附加权限

1)设置权限

拷贝文件/etc/fstab 到/var/tmp/fstab,配置文件/var/tmp/fstab 的权限:  文件/var/tmp/fstab 的拥有者是 root 用户

 文件/var/tmp/fstab 属于 root 组

 文件/var/tmp/fstab 对任何人都不可执行

 用户 natasha 能够对文件/var/tmp/fstab 执行读和写操作

 用户 harry 对文件/var/tmp/fstab 既不能读,也不能写

 所有其他用户(当前的和将来的)能够对文件/var/tmp/fstab 进行读操作

解题参考:

[root@localhost ~]# cp /etc/fstab /var/tmp/ -p     //复制文件
cp: overwrite ‘/var/tmp/fstab’? y
[root@localhost ~]# cd /var/tmp/           
[root@localhost tmp]# ll fstab 
-rw-r--r--  root root  Oct  : fstab
[root@localhost tmp]# setfacl -m u:natasha:rw fstab         //设置ACL,natasha用户读写权限
[root@localhost tmp]# setfacl -m u:harry:- fstab            //设置ACL,harry无任何权限
           

2)创建共享目录/home/admins

创建一个共享目录/home/admins ,特性如下:

●  /home/admins 目录的组所有权是 adminuser

●  adminuser 组的成员对目录有读写和执行的权限。除此之外的其他所有用户没有任何

权限(root 用户能够访问系统中的所有文件和目录)

●  在/home/admins 目录中创建的文件,其组所有权会自动设置为属于 adminuser 组

解题参考:

[root@localhost ~]# mkdir /home/admins         //创建目录
[root@localhost ~]# chown :adminuser /home/admins/     //设置数组
[root@localhost ~]# chmod 2770 /home/admins/           //设置特殊权限SetGID
           

解破析理

1)设置文件权限

访问的方式(权限):rwx

对于文件:

读权限就是可以查看文档的内容;

写权限就是可以修改文件的内容;

执行权限,执行全县就是用户可以运行这个文件

对于目录:

读权限相当于可以用ls看目录下的内容;

写权限就是可以改目录的内容,比如删除,创建,改名,改权限等;

执行权限就是,用户可以切换cd到这个目录

文档的归属

属主User:拥有这个文档的用户

属组Group:拥有这个文档的组,这个就比如我们是干运维的,我们就属于运维组,这个运维组可以有好多用户

其他用户Other:

对一个文件或目录有什么权限就是看这两者的结合

查看文件权限:

ls -l:显示文件的属性

ls -ld:显示目录的属性

更改用户的权限:

1、直接修改文档的属主或属组

2、修改其他人的权限(不推荐,因为所有用户都有权限,我们一般都会让其有权限最小化)

更改访问权限:

chmod 文档权限 文档名

文档权限:

属组就是u、属组就是g、其他用户就是o

读就是r、写就是w、执行就是x

添加就是+、删除就是-,想让其成为什么权限就是=

也可以同时指定多个:ug+x,o-r

上面太麻烦,大招、、、

我们还可以用数字表示:

权限是8进制数:其中r为4、w为2、x为1

然后我们设置权限的时候可以通过权限相加来表示权限

其中表示的时候是用3个数字,第一个数字为属主,第二个数字为属组,第三个数字为其他用户:

如果我们想修改文件为属主属组所有权限,其他用户没权限,那么就是

chmod 770 文件名

如果我们修改的是一个目录,且想将目录连同目录下的所有文件的权限全部修改,那么我们可以使用-R选项(递归)

更改归属:

chown

-R也是递归操作

chown 属主:属组 文档

如果我们只想修改属主或者属组,让其保持原来的权限,那么保持原来权限的位置就可以不写:

chown 属主 文件

chown :属组 文件

3)给单独用户一个对文件的特殊权限:setfacl

但是有些时候我们操作文件时有时候不太方便,因为有时候我们可能像让一个文件对一个用户有权限,但是这个用户并不属于这个文件的属主和属组,那么这时我们如果给其其他用户这个权限就太不安全也是不允许的,这时我们就需要acl机制:

acl访问控制机制:

这个可以为个别用户、组单独设置权限

setfacl:设置文档的访问控制列表

setfacl -m user:用户名:权限 文档

setfacl -m group:组名:权限 文件

-R也可以递归

这时我们可以给一个文件对natasha用户有这样的特殊的访问控制机制

查看文档的访问控制列表:

getfacl 文件名

清空访问控制列表:

setfacl -b(block空白) 文件名

但是不会清空基本权限

附加权限:

针对文档的rwx的基本权限太少的问题,提出了附加权限的概念:

他能实现一些特殊的访问方式

由于他们是附加权限,所以他们不是独立存在的,必须附加在文档的指定位置(会让指定位置的权限改变其原本的字符)

set uid:附加在属主的x位上,并改变其为s

主要适用于可执行程序,如果文件没有x权限,那么设置没什么意义,用于传递程序的所有者的权限(就类似于古时候我们钦差出门,我们皇帝会给其尚方宝剑,让我们的钦差有皇帝的权限)

比如:我们可以看一下存储密码的文件/etc/shadow,发现其没有任何权限,但是我们想修改密码,如果没有特殊权限那么就会写不进去(除了root,但是我们其他的用户也能修改其自己的密码,在这个文件中写东西)

这时我们去看一下修改密码的二进制程序的权限:

ls 0-l /usr/bin/passwd

这时这个程序就是一把尚方宝剑,拿着剑来行使皇帝的权限

执行程序的人拥有程序属主的权限

set gid:附加在属组的x位上,并改变其为s

基本和suid相同,但是我们修改权限一般会让其让其最大化,没必要让其和属主的相同,不过他还有其他作用,适用于目录,用来传递目录的属主身份:(如果我们没有使用这个特殊权限的时候,那么我们创建文件时,属组就会是创建此文件的用户的属组,但是如果我们有这个特殊权限,那么我们在这个目录中创建的文件就会是目录的属组)

新建文档自动属于这个组

sticky bit(粘滞位):附加在其他人的x位上,并改变其为t

适用于多个用户都有写入权限的目录(/tmp,我们所有用户都可以在此目录有写入权限,这时如果我们不给此目录一些限制的话,我们超级用户在跑一个程序,并在tmp目录下有一些临时文件,而我们随便过来一个用户就能将其文件删除,还有就是我们张三创建的文件,李四就能删除,这样是不合理的)这时我们就需要进行限制,阻止对目录w权限的滥用,如果加上此权限,那么我们每个用户只能删除自己的文件,不能删除其他人的文件

suid是4、sgid是2、粘滞位是1

我们的附加权限也可以用数字表示,当我们写三个数字的时候默认是属主属组和其他用户的权限;但是当我们写四个数字的时候,后三个默认还是属主属组和其他用户的权限,但是第一个数字就代表附加权限,其中suid是4、sgid是2、粘滞位是1

继续阅读