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-- 1 root root 588 Oct 17 14:57 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