云计算之Linux全栈目录(第七节基本权限和归属、附加权限、ACL策略管理)

学习Linux必须经历的三个阶段

1.ADMIN(云计算系统管理)
2.ENGINEER(云计算应用管理 )
3.SERVICES(系统,服务管理进阶)


目标不要太远!爱的不要太满!博主不要太帅! 加油,年轻人! --Tuge



One.ADMIN(云计算系统管理)

1.云计算网络之基础
2.linux简介安装,基本操作
3.命令行基础,目录及文件管理,文本内容操作
4.归档压缩,重定向,管道,find精确查找,vim高级应用
5.RPM软件包管理,yum软件包仓库,命令补充
6.用户管理,组账号管理,计划任务

Two.ENAINEER(云计算应用管理)

1.基本权限和归属,附加权限,ACL策略管理
2.磁盘空间管理,交换空间
3.逻辑卷管理,RAID磁盘阵列,过程管理,VDO
4.配置LInux网络,源码编译安装,自定义yum仓库,日志管理
5.SElinux系统故障修复,防火墙策略管理,服务管理

Three.SERVICES(系统服务管理进阶)

1.kvm构建及管理,virsh控制工具,镜像管理,虚拟机快建技术
2.Web基础应用 、 NFS服务基础 、 触发挂载 、 总结和答疑
3. DNS服务基础 、 特殊解析 、 DNS子域授权 、 DNS主从架构 、 总结和答疑
4.缓存DNS 、 Split分离解析 、 电子邮件通信 、 Web服务器项目实战 、 总结和答疑
5.批量装机环境 、 配置PXE引导 、 kickstart自动应答 、 Cobbler装机平台 、 总结和答疑
6.rsync同步操作 、 inotify实时同步 、 数据库服务基础 、 管理表数据 、 总结和答疑

七.基本权限和归属,附加权限,ACL策略管理

基本权限

访问权限

-read 读权限 cat head tail less grep
-write 写权限 vim > >> (对父母有权限,除非变成了目录,目录本身不能修改)
-excute 执行权限 shell python\

归属关系

-user 文件所有者(用户)d(类型)(r,w,x)-(类型)(r,w,-)
-group 文件所属组 	   d(类型) (r,-,x)-(类型)(r,-,-)
-other 其他用户		   d(类型) (r,-,x)-(类型)(r,-,-)
给0ther加权限会变绿
d代表文件夹,-代表文件

A# ls -ld /etc/passwd /boot/
dr-xr-xr-x 5 root root 1024 10月21 15:02 /boot/
-rw-r--r-- 1 root root 1417 10月30 18:37 /etc/passwd
权限位 硬连接数属主属组(加入后同样获得权限)大小 最后修改的时间 文件目录名称

设置权限

chmod -R [ugoa] [+ - =] [rwx] 文件...

使用字符:

mkdir /data/test
chmod g+w,o+rx /data/test
ls -ld /data/test

使用数字:

chmod 755 /data/test/
ls -ld /data/test/

权限有顺序(匹配即停止) ACL策略 > u >g > o

例子:新建/nsddir1/目录,在此目录下新建readme.txt文件,并完成下列操作
1.使用户能够在此目录下创建子目录

A# mkdir /nsddir1/
A# touch /nsddir/readme.txt

2.使用户张三能够修改readme.txt文件

A# useradd  zhansgan 
A# su -zhangsan 
A# mkdir /nsddir1/zhangdir
权限不够 
A# exit
A# chmod o+w /nsddir1/readme.txt
A# su -zhangsan
zhangsan# mkdir /nsddir1/zhangdir
zhangsan# echo 123 > /nsddor/readme.txt
权限不够
zhangsan# exit
A# chmod 0+w /nsddir1/readme.txt
A# su - zhansgan
zhangsan# echo 123 > /nsddor/readme.txt
成功

3.调整此目录权限,使任何用户都能进入,然后测试用户张三是否还能修改readme.txt

A# chmod a-x /nsddir1/
A# su -zhangsan
zhangsan# cd /nsddir
权限不够
zhangsan# echo 123 > /nsddor/readme.txt
权限不够

4.为此目录及其下所有子文档设置权限rwxr-x—

A# chmod -R 750 /nsddir1/

小问题: 为什么文件夹默认权限是755,文件的默认权限是644(默认不给x)?

取决于umask值

更改文件目录的默认权限 umask

umask 0027 
umask -S
u=rwx,g=rx,o=

解释:

0027的含义
第一个0:特殊权限暂时不用管
第二个0:用户权限-0,意思就是权限不变
2:组权限-2,意思就是把写权限减去剩下rx
7:其他权限-7,意思就是rwx全减去,也就变成了空权限

例子:

mkdir udir
touch ufile
ls -ld udir ufile
drwxr-x---       udir目录
-rw-r---	     ufile文件

创建文件夹时,直接设置权限

mkdir -m 755 udir2
ls -ld udir2
drwxr-xr-x udilr文件夹

拓展

whoami 确保自己登录的身份是root
umask  查看当前umask值
umask -S 显示权限

修改归属关系

chown -R()递归目录本身以及目录下所有
改所有者 文件
改所有者和属组 文件
:属组 文件
chowm zhangsan : tmooc /nsd01 都改
chown :root /nsd01 改属组
chown root /nsd01 改所有者
综合练习1
1.利用root用户新建目录tarena mkdir /tarena
2.将tarena属主设为gelin01 属组设为tmooc
mkdir /tarena
useradd gelin01
groupadd tmooc
chown gelin01:tmooc /tarena
3.使用户glin01 对此目录具有rwx权限 除去所有者和所属组之外的用户对此目录无任何权限
chmod  o=--- /tarena
4.使用户gelin02能进入查看此目录
useradd gelin02
gpasswd -a gelin02 tmooc
5.将gelin01加入tmooc组,将tarena目录的权限设为450
测试gelin01 用户能否进入此目录
gpasswd -a gelin01 tmooc
chmod 450 /tarena
su -gelin01
cd /tarena 权限不够(顺序原则u(所有者)里没有x权限)
综合练习2

实现lisi用户可以读取/etc/shadow 文件内容,您有几种方法(至少4种)

1.利用其他人 chmod o+r /etc/shadow
2.利用所属组:chown :lisi /etc/shadow
						chmod g+r /etc/shadow
3.利用所者:  chown lisi /etc/shadow
					  chown u+r /etc/shadow
4.利用acl策略(最好)
					setfacl -m u:lisi:r /etc/shadow

附加权限(特殊权限)

SUID权限测试
问题

将mkdir命令复制为/bin/mymd1,添加SUID
以用户zhangsan登入,做下列测试:在其家目录下分别使用mkdir、mymd1命令尝试创建snew01、snew02
查看snew01、snew02权限及归属关系

方案

SUID是Linux特殊权限的一种,能够用来传递可执行程序所有者的身份及具备所有者的权限。

注意事项:只针对可执行程序文件、可执行程序所有者必须具备可执行权限、显示占用的是所有者的x位置。

步骤

实现此案例需要按照如下步骤进行。

步骤一:将mkdir命令复制为/bin/mymd1,添加SUID

分析: 要想复制mkdir命令程序并改名,首先得找到该命令的绝对路径。可以利用which命令搜索。

[root@localhost ~]# which mkdir       //利用which找到mkdir命令的绝对路径
/bin/mkdir
[root@localhost ~]# cp /bin/mkdir /bin/mymd1    //复制并改名
[root@localhost ~]# ls -l /bin/mymd1             //查看是否生成mymd1
-rwxr-xr-x. 1 root root 49384 2月  27 10:34 /bin/mymd1
[root@localhost ~]# chmod u+s /bin/mymd1         //添加SUID权限
[root@localhost ~]# ls -l /bin/mymd1             //查看是否添加成功
-rwsr-xr-x. 1 root root 49384 2月  27 10:34 /bin/mymd1
步骤二:以用户zhangsan登入,做下列测试:在其家目录下分别使用mkdir、mymd1命令尝试创建snew01、snew02

[root@localhost ~]# id zhangsan             //查看zhangsan用户是否存在
uid=500(zhangsan) gid=500(zhangsan) 组=500(zhangsan)
[root@localhost ~]# su – zhangsan           //切换用户身份测试
[zhangsan@localhost ~]$ ls -l /bin/mkdir   //查看mkdir命令程序权限的划分
-rwxr-xr-x. 1 root root 49384 10月 17 2013 /bin/mkdir    //可以看到没有SUID
[zhangsan@localhost ~]$ mkdir snew01       //创建测试目录snew01
[zhangsan@localhost ~]$ ls -ld snew01/     //查看snew01权限及归属关系
drwxrwxr-x. 2 zhangsan zhangsan 4096 2月  27 10:40 snew01/  //属主与属组均是zhangsan
[zhangsan@localhost ~]$ ls -l /bin/mymd1   //查看mymd1命令程序权限的划分
-rwsr-xr-x. 1 root root 49384 2月  27 10:34 /bin/mymd1   //可以看到具备SUID
[zhangsan@localhost ~]$ mymd1 snew02        //创建测试目录snew02
[zhangsan@localhost ~]$ ls -ld snew02       //查看snew02权限及归属关系
drwxrwxr-x. 2 root zhangsan 4096 2月  27 10:47 snew02
分析: 可以看到归属关系中所有者发生变化,继承了mymd1命令程序的所有者root。
SGID权限测试
问题

创建/nsdpublic目录,将属组改为tarena。 新建子目录nsd01、子文件test01.txt,查看两者的权限及归属。
为此目录添加SGID权限,再新建子目录nsd02、子文件test02.txt。 查看上述子目录及文件的权限及归属。

方案

SGID是Linux特殊权限的一种,其作用主要体现如下:

1) 在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份。

注意事项:对可执行的程序/目录有效、可执行程序所属组必须具备可执行权限、显示占用的是所属组的x位置。

步骤

实现此案例需要按照如下步骤进行。

步骤一:创建/nsdpublic目录,将属组改为tarena

命令操作如下所示:

[root@localhost ~]# mkdir /nsdpublic           //创建测试目录
[root@localhost ~]# ls -ld /nsdpublic/         //查看权限及归属关系
drwxr-xr-x. 2 root root 4096 2月  27 11:27 /nsdpublic/
[root@localhost ~]# grep tarena /etc/group    //查看tarena组是否存在
tarena:x:502:gelin02,gelin01
[root@localhost ~]# chown :tarena /nsdpublic/ //更改目录所属组为tarena组
[root@localhost ~]# ls -ld /nsdpublic/         //查看是否修改成功
drwxr-xr-x. 2 root tarena 4096 2月  27 11:27 /nsdpublic/
步骤二:新建子目录nsd01、子文件test01.txt,查看两者的权限及归属

命令操作如下所示:

[root@localhost ~]# mkdir /nsdpublic/nsd01       //在nsdpublic目录下创建nsd01目录
[root@localhost ~]# touch /nsdpublic/test01.txt //在nsdpublic目录下创建测试文件
[root@localhost ~]# ls -l /nsdpublic/            //查看归属关系其属组均为root组
总用量 4
drwxr-xr-x. 2 root root 4096 2月  27 11:49 nsd01
-rw-r--r--. 1 root root    0 2月  27 11:50 test01.txt
步骤三:为此目录添加SGID权限,再新建子目录nsd02、子文件test02.txt

命令操作如下所示:

[root@localhost ~]# chmod g+s /nsdpublic/     //为nsdpublic添加SGID权限
[root@localhost ~]# ls -ld /nsdpublic/        //查看设置成功
drwxr-sr-x. 3 root tarena 4096 2月  27 11:50 /nsdpublic/
[root@localhost ~]# mkdir /nsdpublic/nsd02
[root@localhost ~]# touch /nsdpublic/test02.txt
[root@localhost ~]# ls -l /nsdpublic/          
总用量 8
drwxr-xr-x. 2 root root   4096 2月  27 11:49 nsd01
drwxr-sr-x. 2 root tarena 4096 2月  27 11:57 nsd02
-rw-r--r--. 1 root root      0 2月  27 11:50 test01.txt
-rw-r--r--. 1 root tarena    0 2月  27 11:57 test02.txt
分析: 可以看到当nsdpublic目录具备SGID权限时,之前创建的nsd01与test01.txt其所属组均为发生变化,但新创建的nsd02与test02.txt两者都继承的所属组身份及权限,其中还需注意的一点是我们也可以看到nsd02子目录也同样继承了SGID权限。
Sticky权限测试
问题

为/tarena/public/目录设权限777,并添加粘滞位t权限
以用户zhangsan登入,在/tarena/public/目录下创建文件zhsfile2
以用户lisi登入,在/tarena/public/目录下创建文件lsfile2 查看文件zhsfile2、lsfile2的权限和归属
尝试删除zhsfile2、lsfile2文件

方案

Sticky权限是Linux特殊权限的一种,主要用来对公共目录的w权限进行限制。

注意事项:适用于目录,用来限制用户滥用写入权、其他人必须具备可执行权限、显示占用的是其他人的x位置。

步骤

实现此案例需要按照如下步骤进行。

步骤一:为/tarena/public/目录设权限777,并添加粘滞位

命令操作如下所示:

[root@localhost ~]# mkdir -p /tarena/public   //创建多级目录
[root@localhost ~]# ls -R /tarena              //递归查看目录结构
/tarena:
public
/tarena/public:
[root@localhost ~]# ls -ld /tarena/public      //查看权限的划分情况
drwxr-xr-x. 2 root root 4096 2月  27 14:47 /tarena/public/
[root@localhost ~]# chmod 777 /tarena/public  //设置权限为777
[root@localhost ~]# ls -ld /tarena/public      //查看设置结果
drwxrwxrwx. 2 root root 4096 2月  27 14:47 /tarena/public/
[root@localhost ~]# chmod o+t /tarena/public   //设置特殊权限t权限
[root@localhost ~]# ls -ld /tarena/public      //查看设置结果
drwxrwxrwt. 2 root root 4096 2月  27 14:47 /tarena/public/
[root@localhost ~]#

步骤二:以用户zhangsan登入,在/tarena/public/目录下创建文件zhsfile2

命令操作如下所示:

[root@localhost ~]# id zhangsan                //查看zhangsan用户是否存在
uid=500(zhangsan) gid=500(zhangsan) 组=500(zhangsan)
[root@localhost ~]# su – zhangsan              //切换用户身份测试
[zhangsan@localhost ~]$ touch /tarena/public/zhsfile2
[zhangsan@localhost ~]$ ls -l /tarena/public  //测试是否创建成功
总用量 0
-rw-rw-r--. 1 zhangsan zhangsan 0 2月  27 14:57 zhsfile2
[zhangsan@localhost ~]$

步骤三:以用户lisi登入,在/tarena/public/目录下创建文件lsfile2

命令操作如下所示:

[root@localhost ~]# id lisi                 //查看lisi用户是否存在
uid=503(lisi) gid=504(lisi) 组=504(lisi)
[root@localhost ~]# su – lisi               //切换用户身份
[lisi@localhost ~]$ touch /tarena/public/lsfile2   
[lisi@localhost ~]$ ls -l /tarena/public   //测试是否创建成功
总用量 0
-rw-rw-r--. 1 lisi     lisi     0 2月  27 15:03 lsfile2
-rw-rw-r--. 1 zhangsan zhangsan 0 2月  27 14:57 zhsfile2
[lisi@localhost ~]$

步骤四:查看文件zhsfile2、lsfile2的权限和归属

命令操作如下所示:

[lisi@localhost ~]$ ls -l /tarena/public/ 
总用量 0
-rw-rw-r--. 1 lisi     lisi     0 2月  27 15:03 lsfile2
-rw-rw-r--. 1 zhangsan zhangsan 0 2月  27 14:57 zhsfile2
[lisi@localhost ~]$

步骤五:尝试删除zhsfile2、lsfile2文件(以lisi身份)

命令操作如下所示:

[lisi@localhost ~]$ whoami                    //查看当前用户身份
Lisi
[lisi@localhost ~]$ ls -ld /tarena/public    //查看目录权限
drwxrwxrwt. 2 root root 4096 2月  27 15:07 /tarena/public/
[lisi@localhost ~]$ ls -l /tarena/public
总用量 0
-rw-rw-r--. 1 lisi     lisi     0 2月  27 15:03 lsfile2
-rw-rw-r--. 1 zhangsan zhangsan 0 2月  27 14:57 zhsfile2
[lisi@localhost ~]$ rm -rf /tarena/public/lsfile2    //删除lisi自己文件
[lisi@localhost ~]$ rm -rf /tarena/public/zhsfile2   //删除其他用户的文件
rm: 无法删除"/tarena/public/zhsfile2": 不允许的操作
定义ACL控制策略
问题

创建账户:mike、john、kaka 创建文件:/data/file1.txt
mike对文件有读写权限,john只有读权限。其他用户没有任何权限 kaka具有与john相同权限
创建lily用户,lily对file1.txt具有读执行权限,其他用户没有任何权限

方案

并不是所有的分区都支持ACL策略设置,后续会学习怎样让一个分区支持ACL。在安装系统时划分的分区默认是支持ACL策略的,而如果该分区是在安装系统之后创建的默认是不支持的。

ACL策略应用的情况是,当所有者、所属组、其他人三个归属关系,三种身份的权限都不能满足某个用户或组的权限设置。这个时候ACL可以为这个用户或组单独设置权限,使Linux权限划分设置更加灵活。

步骤

实现此案例需要按照如下步骤进行。

步骤一:创建账户:mike、john、kaka

命令操作如下所示:

[root@localhost ~]# useradd mike
[root@localhost ~]# useradd john
[root@localhost ~]# useradd kaka

步骤二:创建文件:/data/file1.txt

命令操作如下所示:

[root@localhost ~]# touch /data/file1.txt
[root@localhost ~]# ls -l /data/file1.txt
-rw-r--r--. 1 root root 0 2月  27 15:38 /data/file1.txt

步骤三:mike对文件有读写权限,john只有读权限。其他用户没有任何权限

分析: 此题涉及到三种不同的权限,我们可以这样来做,让mike来做所有者,让john属于此文件所属组成员,当然其他人就好说了直接设置即可。

命令操作如下所示:

 [root@localhost ~]# ls -l /data/file1.txt              //查看权限及归属关系
-rw-r--r--. 1 root root 0 2月  27 15:38 /data/file1.txt
[root@localhost ~]# chown mike:john /data/file1.txt    //更改所有者与所属组
[root@localhost ~]# ls -l /data/file1.txt               //查看更改结果
-rw-r--r--. 1 mike john 0 2月  27 15:38 /data/file1.txt
[root@localhost ~]# chmod o= /data/file1.txt            //设置权限,其他人无权限
[root@localhost ~]# ls -l /data/file1.txt               //查看呢设置结果
-rw-r-----. 1 mike john 0 2月  27 15:38 /data/file1.txt
[root@localhost ~]#

步骤四:kaka具有与john相同权限

分析: 我们可以把kaka加入到john组里面

命令操作如下所示:

[root@localhost ~]# id kaka                //查询kaka用户信息
uid=506(kaka) gid=507(kaka) 组=507(kaka)
[root@localhost ~]# gpasswd -a kaka john  //将kaka用户加入到john组
Adding user kaka to group john
[root@localhost ~]# id kaka                //查询kaka用户信息
uid=506(kaka) gid=507(kaka) 组=507(kaka),506(john)
[root@localhost ~]#

步骤五:创建lily,lily对file1.txt具有读执行权限,其他用户没有任何权限

分析:
这个时候就出现基本权限及归属关系不能解决,首先所有者已确定是mike,所属组权限rw所以也不行,最后其他人上面题有要求无任何权限。所以ACL策略就派上用场了。

命令操作如下所示:

[root@localhost ~]# echo 123456 > /data/file1.txt  //写入测试文字
[root@localhost ~]# cat /data/file1.txt             //管理员测试
123456
[root@localhost ~]# id lily                          //查询是否存在lily用户
id: lily:无此用户
[root@localhost ~]# useradd lily                     //创建lily用户
[root@localhost ~]# su – lily                        //切换用户身份
[lily@localhost ~]$ cat /data/file1.txt       //测试在没有设置ACL前lily能否查看
cat: /data/file1.txt: 权限不够
[lily@localhost ~]$ exit                              //退到root用户身份
logout
[root@localhost ~]# getfacl /data/file1.txt         //查看文件ACL策略
getfacl: Removing leading '/' from absolute path names
#file: data/file1.txt
 owner: mike
 group: john
user::rw-
group::r--
other::---
[root@localhost ~]# setfacl -m u:lily:r /data/file1.txt   //设置ACL策略
[root@localhost ~]# getfacl /data/file1.txt                //查看ACL策略
	getfacl: Removing leading '/' from absolute path names
 file: data/file1.txt
#owner: mike
 group: john
user::rw-
user:lily:r--
group::r--
mask::r--
other::---
[root@localhost ~]# su – lily             //切换用户
[lily@localhost ~]$ cat /data/file1.txt  //测试是否具有r权限
123456

重要的事情说三遍

作为一个为linux奉献一生的码员,很是荣幸和骄傲,这里我总结了一些linux的精华,也就是速成文章,后面还会继续更新,望大家关注,绝对有用!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值