(k8s-king-king)Linux系统中文件及目录权限设定
3.1 案例目标
(1)掌握chmod和chown命令,修改文件和目录的权限及属性;
(2)掌握特殊权限的使用方法;
(3)掌握ACL权限的使用方法。
3.2 案例分析
(1)规划节点
服务器的节点规划,见表3-1。(线上实训平台会自动分配IP地址)
表3-1 IP地址信息
设备 | IP地址 |
---|---|
单节点服务器 | 172.16.59.99/24 |
(2)基础准备
最小化CentOS 7.5虚拟机一台,CentOS 7.5系统ISO镜像。
3.3 案例实施
(1) 将file1和file2文件的权限设置为所属组用户增加写入权限(file1和file2原有权限为-rw-r–r--)。
[root@localhost ~]# touch file1 file2
[root@localhost ~]# ll
total 4
-rw------- 1 root root 3302 Jun 1 2018 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Jan 12 08:30 file1
-rw-r--r-- 1 root root 0 Jan 12 08:30 file2
[root@localhost ~]# chmod g+w file[1-2]
[root@localhost ~]# ll
total 4
-rw------- 1 root root 3302 Jun 1 2018 anaconda-ks.cfg
-rw-rw-r-- 1 root root 0 Jan 12 08:30 file1
-rw-rw-r-- 1 root root 0 Jan 12 08:30 file2
(2)创建directory1目录,在此目录下创建file3,将directory1目录中所有文件设为任何用户均可写。
[root@localhost ~]# mkdir directory1
[root@localhost ~]# touch directory1/file3
[root@localhost ~]# ll directory1/
total 0
-rw-r--r-- 1 root root 0 Jan 12 08:33 file3
[root@localhost ~]# chmod -R a+w directory1/*
[root@localhost ~]# ll directory1/
total 0
-rw-rw-rw- 1 root root 0 Jan 12 08:33 file3
(3)将file1文件的权限修改为只有所有者拥有读写执行权限,所属组用户和其他人用户只有读权限:
[root@localhost ~]# chmod 744 file1
[root@localhost ~]# ll
total 4
-rw------- 1 root root 3302 Jun 1 2018 anaconda-ks.cfg
drwxr-xr-x 2 root root 27 Jan 12 08:33 directory1
-rwxr--r-- 1 root root 0 Jan 12 08:30 file1
-rw-rw-r-- 1 root root 0 Jan 12 08:30 file2
(4)分别创建用户和组zys,user1,将file1文件的用户属性更改成用户为zys,用户组为user1。
[root@localhost ~]# useradd zys
[root@localhost ~]# groupadd user1
[root@localhost ~]# chown zys:user1 file1
[root@localhost ~]# ll
total 4
-rw------- 1 root root 3302 Jun 1 2018 anaconda-ks.cfg
drwxr-xr-x 2 root root 27 Jan 12 08:33 directory1
-rwxr--r-- 1 zys user1 0 Jan 12 08:30 file1
-rw-rw-r-- 1 root root 0 Jan 12 08:30 file2
(5)在directory1目录中创建run.sh,并更改所有者强制位,使所有用户均可以root用户的身份来运行该文件。
[root@localhost ~]# touch directory1/run.sh
[root@localhost ~]# ll directory1/
total 0
-rw-rw-rw- 1 root root 0 Jan 12 08:33 file3
-rw-r--r-- 1 root root 0 Jan 12 08:35 run.sh
[root@localhost ~]# chmod u+s file1
[root@localhost ~]# ll
total 4
-rw------- 1 root root 3302 Jun 1 2018 anaconda-ks.cfg
drwxr-xr-x 2 root root 45 Jan 12 08:35 directory1
-rwsr--r-- 1 zys user1 0 Jan 12 08:30 file1
-rw-rw-r-- 1 root root 0 Jan 12 08:30 file2
(6)在/mnt目录下创建test子目录,该目录下所有用户均可以写入文件,但不允许用户删除除自己以外其他人的文件,这里需要创建2个用户分别是jack和mary,其中jack在/mnt/test目录中创建了file1文件,mary在/mnt/test目录中创建了file2文件,2个用户均不允许删除对方的文件,操作如所示:
[root@localhost ~]# mkdir -p /mnt/test
[root@localhost ~]# ls -ld /mnt/test
drwxr-xr-x 2 root root 10 Jan 12 08:36 /mnt/test
[root@localhost ~]# chmod 777 /mnt/test
[root@localhost ~]# ls -ld /mnt/test
drwxrwxrwx 2 root root 10 Jan 12 08:36 /mnt/test
[root@localhost ~]# chmod o+t /mnt/test
[root@localhost ~]# ls -ld /mnt/test
drwxrwxrwt 2 root root 10 Jan 12 08:36 /mnt/test
[root@localhost ~]# useradd jack
[root@localhost ~]# useradd mary
[root@localhost ~]# echo "123" | passwd --stdin jack //更改用户jack的密码。其中passwd意思所有的身份验证令牌已经成功更新。
[root@localhost ~]# echo "456" | passwd --stdin mary //更改用户mary的密码。
[root@localhost ~]# su - jack
[jack@localhost ~]$ touch /mnt/test/file1
[jack@localhost ~]$ su - mary
密码:
[mary@localhost ~]$ touch /mnt/test/file2
[mary@localhost ~]$ ls -l /mnt/test
total 0
-rw-rw-r-- 1 jack jack 0 Jan 12 08:40 file1
-rw-rw-r-- 1 mary mary 0 Jan 12 08:40 file2
[mary@localhost ~]$ ls -ld /mnt/test
drwxrwxrwt 2 root root 44 Jan 12 08:40 /mnt/test
[mary@localhost ~]$ rm -rf /mnt/test/file1
rm: cannot remove '/mnt/test/file1': Operation not permitted
//rm: 无法删除"/mnt/test/file1": 不允许的操作
[mary@localhost ~]$ exit
logout
[jack@localhost ~]$ exit
logout
(7)在/mnt/test目录中,创建file3.log文件,并追加设置改文件安全值为i,即不允许该文件被删除。
[root@localhost ~]# touch /mnt/test/file3.log
[root@localhost ~]# chattr +i /mnt/test/file3.log
[root@localhost ~]# rm -rf /mnt/test/file3.log
rm: cannot remove '/mnt/test/file3.log': Operation not permitted
(8)继续添加用户jones,并添加用户组user1,并将jack、mary和jones三个用户添加成为该用户组的组成员。在/mnt/test目录中创建file4文件(所有者为jack,所属组为user1),修改文件权限为rw-r–r--,通过设置ACL,将允许mary对该文件也拥有读写权限:
[root@localhost ~]# useradd jones
[root@localhost ~]# echo "789" | passwd --stdin jones
Changing password for user jones.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# usermod -G user1 jones
[root@localhost ~]# touch /mnt/test/file4
[root@localhost ~]# chown jack:user1 /mnt/test/file4
[root@localhost ~]# su - jack
Last login: Wed Jan 12 08:40:11 CST 2022 on pts/0
[jack@localhost ~]$ getfacl --omit-header /mnt/test/file4
getfacl: Removing leading '/' from absolute path names
user::rw-
group::r--
other::r--
[jack@localhost ~]$ setfacl -m user:mary:rw- /mnt/test/file4
[jack@localhost ~]$ getfacl --omit-header /mnt/test/file4
getfacl: Removing leading '/' from absolute path names
user::rw-
user:mary:rw-
group::r--
mask::rw-
other::r--
[jack@localhost ~]$ ls -l /mnt/test/file4
-rw-rw-r--+ 1 jack user1 0 Jan 12 08:44 /mnt/test/file4 //权限的最后有一个“+”,表示该文件使用了ACL属性设置
此时,mary用户对file4文件也拥有读写权限了,可以添加456内容至该文件中,操作如下:
[jack@localhost ~]$ su - mary
Password: //输入前文中mary的密码456
Last login: Wed Jan 12 08:40:41 CST 2022 on pts/0
[mary@localhost ~]$ echo 456 >> /mnt/test/file4
[mary@localhost ~]$ cat /mnt/test/file4
456
[mary@localhost ~]$ exit
Logout
[jack@localhost ~]$ exit
logout
切换至jones用户,则发现该用户对file4文件是没有写入权限的:
[root@localhost ~]# su - jones
[jones@localhost ~]$ echo "789" > /mnt/test/file4
-bash: /mnt/test/file4: Permission denied //权限不够
[jones@localhost ~]$ ls -l /mnt/test/file4
-rw-rw-r--+ 1 jack user1 4 Jan 12 08:46 /mnt/test/file4
[jones@localhost ~]$ getfacl --omit-header /mnt/test/file4
getfacl: Removing leading '/' from absolute path names
user::rw-
user:mary:rw-
group::r--
mask::rw-
other::r--
注意:虽然该文件的权限属性中,user1用户组的权限为rw-,且jones也属于user1用户组,但由于ACL中设定的group权限只有r权限,因此,原有文件属性中的组权限rw-的有效性不能高于ACL中group的r–权限,所以jones用户对该文件是没有写入权限的。
- 点赞
- 收藏
- 关注作者
评论(0)