首页 > 系统相关 >linux基本权限

linux基本权限

时间:2023-10-11 15:34:58浏览次数:57  
标签:基本 zhangsan tarena ls linux 权限 root localhost

3 基本权限与归属

  • 读取:允许查看内容-read r
  • 写入:允许修改内容-write w
  • 可执行:允许运行和切换-excute x

对于文本文件:

r读取权限:cat、less、grep、head、tail

w写入权限:vim、> 、 >>

x可执行权限:Shell与Python

对于目录:

r读取权限:ls命令查看目录内容

w写入权限:能够创建、删除、修改等目录的内容

x 执行权限:能够cd切换到此目录下(进入此目录)

归属关系

  • 所有者(属主):拥有此文件/目录的用户-user
  • 所属组(属组):拥有此文件/目录的组-group
  • 其他用户:除所有者、所属组以外的用户-other

例如:zhangsan(所有者) zhangsan(所属组) 1.txt

4 查看数据权限

执行 ls -l或者ls -ld 命令查看

以-开头:文本文件

以d开头:目录

以l开头:快捷方式

  1. [root@localhost ~]# ls -ld /etc/
  2. [root@localhost ~]# ls -l /etc/passwd
  3. [root@localhost ~]# ls -ld /root
  4. [root@localhost ~]# ls -ld /tmp #有附加权限
  5. [root@localhost ~]# ls -l /etc/shadow
  6. [root@localhost ~]# useradd zhangsan
  7. [root@localhost ~]# ls -ld /home/zhangsan

Linux中判断用户具备的权限:

1. 查看用户,对于该数据所处的身份

2. 查看相应身份的权限位

5 修改权限

•chmod命令

格式:chmod [ugoa] [+-=][rwx] 文件...

•常用命令选项

-R:递归修改权限

  1. [root@localhost ~]# mkdir /nsd10
  2. [root@localhost ~]# ls -ld /nsd10
  3. [root@localhost ~]# chmod u-w /nsd10 #所有者去掉w权限
  4. [root@localhost ~]# ls -ld /nsd10    
  5. [root@localhost ~]# chmod u+w /nsd10 #所有者加上w权限
  6. [root@localhost ~]# ls -ld /nsd10
  7. [root@localhost ~]# chmod g+w /nsd10 #所属组加上w权限
  8. [root@localhost ~]# ls -ld /nsd10
  9. [root@localhost ~]# chmod g=r /nsd10 #所属组重新定义权限
  10. [root@localhost ~]# ls -ld /nsd10
  11. [root@localhost ~]# chmod a=rwx /nsd10 #a表示所有人
  12. [root@localhost ~]# ls -ld /nsd10
  13. [root@localhost ~]# chmod u=---,g=rx,o=rwx /nsd10
  14. [root@localhost ~]# ls -ld /nsd10

-R:递归修改权限

  1. [root@localhost ~]# mkdir -p /opt/aa/bb/cc
  2. [root@localhost ~]# chmod -R o=--- /opt/aa
  3. [root@localhost ~]# ls -ld /opt/aa
  4. [root@localhost ~]# ls -ld /opt/aa/bb
  5. [root@localhost ~]# ls -ld /opt/aa/bb/cc

案例:设置基本权限

1)以root身份新建/dir目录,在此目录下新建readme.txt文件

  1. [root@localhost ~]# mkdir /dir
  2. [root@localhost ~]# echo 123456 > /dir/readme.txt
  3. [root@localhost ~]# cat /dir/readme.txt

2)使用户zhangsan能够修改readme.txt文件内容

  1. [root@localhost ~]# chmod o+w /dir/readme.txt

3)使用户zhangsan不可以修改readme.txt文件内容

  1. [root@localhost ~]# chmod o-w /dir/readme.txt

4)使用户zhangsan能够在此目录下创建/删除子目录

  1. [root@localhost ~]# chmod o+w /dir/

5)调整此目录的权限,使任何用户都不能进入,然后测试用户zhangsan是否还能查看readme.txt内容(测试结果是不能,对父目录没有权限)

  1. [root@localhost ~]# chmod a-x /dir/

6)为此目录及其下所有文档设置权限 rwxr-x---

  1. [root@localhost ~]# chmod -R u=rwx,g=rx,o=--- /dir

权限利用数字方式表示

• 权限位的8进制数表示

– r、w、x分别对应4、2、1,后3组分别求和

分组: User权限 Group权限 Other权限

字符: r w x r - x r - x

数字: 4 2 1 4 0 1 4 0 1

求和: 7 5 5

  1. [root@localhost ~]# mkdir /nsd14
  2. [root@localhost ~]# ls -ld /nsd14
  3. [root@localhost ~]# chmod 700 /nsd14
  4. [root@localhost ~]# ls -ld /nsd14
  5. [root@localhost ~]# chmod 007 /nsd14
  6. [root@localhost ~]# ls -ld /nsd14
  7. [root@localhost ~]# chmod 750 /nsd14
  8. [root@localhost ~]# ls -ld /nsd14
  9. [root@localhost ~]# chmod 755 /nsd14
  10. [root@localhost ~]# ls -ld /nsd14

6 修改归属关系

•chown命令

–chown 属主 文件...

–chown 属主:属组 文件...

–chown :属组 文件...

  1. [root@localhost ~]# mkdir /nsd15
  2. [root@localhost ~]# ls -ld /nsd15
  3. [root@localhost ~]# groupadd tmooc #创建组tmooc
  4. [root@localhost ~]# useradd lisi #创建用户lisi
  5. [root@localhost ~]# chown lisi:tmooc /nsd15 #修改所有者与所属组
  6. [root@localhost ~]# ls -ld /nsd15
  7. [root@localhost ~]# chown zhangsan /nsd15 #仅修改所有者
  8. [root@localhost ~]# ls -ld /nsd15
  9. [root@localhost ~]# chown :root /nsd15 #仅修改所属组
  10. [root@localhost ~]# ls -ld /nsd15

•常用命令选项

-R:递归修改归属关系

  1. [root@localhost ~]# mkdir -p /opt/aa/bb/cc
  2. [root@localhost ~]# chown     -R zhangsan /opt/aa #递归修改归属关系
  3. [root@localhost ~]# ls -ld /opt/aa
  4. [root@localhost ~]# ls -ld /opt/aa/bb
  5. [root@localhost ~]# ls -ld /opt/aa/bb/cc
  6. [root@localhost ~]# chown     -R lisi:tmooc /opt/aa
  7. [root@localhost ~]# ls -ld /opt/aa
  8. [root@localhost ~]# ls -ld /opt/aa/bb
  9. [root@localhost ~]# ls -ld /opt/aa/bb/cc

Linux中判断用户具备的权限:

1.查看用户,对于该数据所处的身份,顺序所有者>所属组>其他人,原则是匹配及停止

2.查看相应身份的权限位

例如:

1.192.168.1.1可以进入

2.所有客户端不可以进入

例如:

1.所有人不能进入

2.牛老师可以进入

案例2:归属关系练习

1)利用root的身份新建/tarena目录,并进一步完成下列操作

  1. [root@localhost ~]# mkdir /tarena

2)将/tarena属主设为gelin01,属组设为tmooc组

  1. [root@localhost ~]# useradd gelin01
  2. [root@localhost ~]# groupadd tmooc
  3. [root@localhost ~]# chown gelin01:tmooc /tarena

3)使用户gelin01对此目录具有rwx权限,除去所有者与所属组之外的用户对此目录无任何权限

  1. [root@localhost ~]# chmod o=--- /tarena

4)使用户gelin02能进入、查看此目录内容

  1. [root@localhost ~]# useradd gelin02
  2. [root@localhost ~]# gpasswd -a gelin02 tmooc

5)将gelin01加入tmooc组,将/tarena目录的权限设为450,测试gelin01用户能否进入此目录(匹配及停止原则,不能进入)

  1. [root@localhost ~]# gpasswd -a gelin01 tmooc
  2. [root@localhost ~]# chmod 450 /tarena

7 ACL策略管理

•文档归属的局限性:

–任何人只属于三种角色:属主、属组、其他人

–针对特殊的人实现更精细的控制

•acl访问策略作用:

–能够对个别用户、个别组设置独立的权限

•setfacl命令

–格式:

setfacl [选项] u:用户名:权限 文件...

setfacl [选项] g:组名:权限 文件...

•常用命令选项

-m:修改ACL策略

-x:清除指定的ACL策略

-b:清除所有已设置的ACL策略

-R:递归设置ACL策略

  1. [root@localhost ~]# mkdir /nsd19
  2. [root@localhost ~]# chmod 770 /nsd19
  3. [root@localhost ~]# ls -ld /nsd19
  4. [root@localhost ~]# useradd dc
  5. [root@localhost ~]# su - dc
  6. [dc@localhost ~]$ cd /nsd19
  7. -bash: cd: /nsd19: 权限不够
  8. [dc@localhost ~]$ exit
  9. [root@localhost ~]# setfacl -m u:dc:rx /nsd19 #单独赋予dc用户权限
  10. [root@localhost ~]# getfacl /nsd19 #查看ACL策略
  11. [root@localhost ~]# su - dc
  12. [dc@localhost ~]$ cd /nsd19
  13. [dc@localhost ~]$ pwd
  14. [dc@localhost ~]$ exit

Linux中判断用户具备的权限:

1.首先查看该用户或者组是否有ACL策略

2.查看用户,对于该数据所处的身份,顺序所有者>所属组>其他人,原则是匹配及停止

3.查看相应身份的权限位

ACL命令的练习:

  1. [root@localhost ~]# mkdir /nsd22
  2. [root@localhost ~]# setfacl -m u:dc:rx /nsd22
  3. [root@localhost ~]# setfacl -m u:zhangsan:rwx /nsd22
  4. [root@localhost ~]# setfacl -m u:lisi:rx /nsd22
  5. [root@localhost ~]# setfacl -m u:gelin01:rwx /nsd22
  6. [root@localhost ~]# getfacl /nsd22
  7. [root@localhost ~]# setfacl -x u:zhangsan /nsd22 #删除指定用户ACL
  8. [root@localhost ~]# getfacl /nsd22
  9. [root@localhost ~]# setfacl -x u:dc /nsd22 #删除指定用户ACL
  10. [root@localhost ~]# getfacl /nsd22
  11. [root@localhost ~]# setfacl -b /nsd22 #清除目录所有ACL策略
  12. [root@localhost ~]# getfacl /nsd22

ACL策略-黑名单的使用(单独拒绝某些用户)

  1. [root@localhost ~]# mkdir /home/public
  2. [root@localhost ~]# chmod 777 /home/public
  3. [root@localhost ~]# setfacl -m u:lisi:--- /home/public
  4. [root@localhost ~]# getfacl /home/public

-R:递归设置ACL策略

  1. [root@localhost ~]# setfacl -Rm u:dc:rwx /opt/aa

8 附加权限(特殊权限)

•粘滞位,Sticky Bit 权限

–占用其他人(Other)的 x 位

–显示为 t 或 T,取决于其他人是否有 x 权限

–适用于目录,用来限制用户滥用写入权

–在设置了t权限的目录下,即使用户有写入权限,也不能删除或改名其他用户文档

  1. [root@localhost ~]# mkdir /nsd26
  2. [root@localhost ~]# chmod 777 /nsd26
  3. [root@localhost ~]# ls -ld /nsd26
  4. [root@localhost ~]# chmod o+t /nsd26
  5. [root@localhost ~]# ls -ld /nsd26

•Set GID权限(SGID权限)

–占用属组(Group)的 x 位

–显示为 s 或 S,取决于属组是否有 x 权限

–对目录有效

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

  1. [root@localhost ~]# mkdir /nsd18
  2. [root@localhost ~]# chown :tmooc /nsd18 #修改所属组
  3. [root@localhost ~]# ls -ld /nsd18
  4. [root@localhost ~]# chmod g+s /nsd18 #赋予SGID特殊权限
  5. [root@localhost ~]# ls -ld /nsd18
  6. [root@localhost ~]# mkdir /nsd18/abc01
  7. [root@localhost ~]# ls -ld /nsd18/abc01
  8. [root@localhost ~]# mkdir /nsd18/abc02
  9. [root@localhost ~]# ls -ld /nsd18/abc02
  10. [root@localhost ~]# touch /nsd18/1.txt
  11. [root@localhost ~]# ls -ld /nsd18/1.txt

9 总结补充内容

请问实现lisi用户可以读取/etc/shadow文件内容,您有几种办法?(至少写出三种以上)

1. 利用其他人身份

chmod o+r /etc/shadow

2. 利用所属组身份

chown :lisi /etc/shadow

chmod g+r /etc/shadow

3. 利用所有者身份

chown lisi /etc/shadow

chmod u+r /etc/shadow

4. 利用ACL策略

setfacl -m u:lisi:r /etc/shadow

附加权限Set UID(SUID)权限(了解)

占用属主(User)的 x 位

显示为 s 或 S,取决于属主是否有 x 权限

仅对可执行的程序有意义

当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限

  1. [root@localhost ~]# which mkdir
  2. /usr/bin/mkdir
  3. [root@localhost ~]# /usr/bin/mkdir /opt/abc01
  4. [root@localhost ~]# ls /opt/
  5. [root@localhost ~]# cp /usr/bin/mkdir /usr/bin/hahadir
  6. [root@localhost ~]# ls -l /usr/bin/hahadir
  7. [root@localhost ~]# /usr/bin/hahadir /opt/abc02
  8. [root@localhost ~]# ls /opt/
  9. [root@localhost ~]# chmod u+s /usr/bin/hahadir
  10. [root@localhost ~]# ls -l /usr/bin/hahadir
  11. [root@localhost ~]# su - zhangsan
  12. [zhangsan@localhost ~]$ /usr/bin/mkdir zs01
  13. [zhangsan@localhost ~]$ ls -l
  14. [zhangsan@localhost ~]$ /usr/bin/hahadir zs02
  15. [zhangsan@localhost ~]$ ls -l
  16. 创建目录时,指定目录的权限
  17. [root@localhost ~]# mkdir -m 700 /opt/cbd03
  18. [root@localhost ~]# ls -ld /opt/cbd03
  19. [root@localhost ~]# mkdir -m 777 /opt/cbd04
  20. [root@localhost ~]# ls -ld /opt/cbd04

文件/目录的默认权限

• 新建文件/目录的默认权限

– 一般文件默认均不给 x 执行权限

– 其他取决于 umask(权限掩码) 设置

– 新建目录默认权限为755

– 新建文件默认权限为644

  1. [root@localhost ~]# umask
  2. 0022
  3. [root@localhost ~]# umask -S #显示新建目录的默认权限
  4. u=rwx,g=rx,o=rx
  5. [root@nb ~]# mkdir -m 777 /nsd26 #-m无视umask值创建数据指定数据的权限
  6. [root@nb ~]# ls -ld /nsd26
  7. 实现natasha用户新建数据,目录权限为700文件为600
  8. [root@nb ~]# useradd natasha
  9. [root@nb ~]# vim /home/natasha/.bashrc #修改家目录配置文件
  10. umask 077 #新增配置,指定权限掩码值
  11. [root@nb ~]# su - natasha
  12. 上一次登录:四 2月 23 17:26:16 CST 2023pts/0 上
  13. [natasha@nb ~]$ umask
  14. 0077
  15. [natasha@nb ~]$ mkdir abc
  16. [natasha@nb ~]$ ls -ld abc
  17. drwx------. 2 natasha natasha 6 2月 23 17:27 abc
  18. [natasha@nb ~]$ exit

常见故障:递归设置权限错误

  1. [root@nb ~]# mkdir /nsd26
  2. [root@nb ~]# mkdir /nsd26/haha
  3. [root@nb ~]# mkdir /nsd26/xixi
  4. [root@nb ~]# touch /nsd26/1.txt
  5. [root@nb ~]# touch /nsd26/2.txt
  6. [root@nb ~]# chmod -R a=--- /nsd26
  7. [root@nb ~]# ls -ld /nsd26
  8. [root@nb ~]# ls -l /nsd26
  9. [root@nb ~]# find /nsd26 -type d -exec chmod 755 {} \;
  10. [root@nb ~]# ls -l /nsd26
  11. [root@nb ~]# find /nsd26 -type f -exec chmod 644 {} \;
  12. [root@nb ~]# ls -l /nsd26

手动建立用户家目录

/etc/skel是新建用户时,会以此目录作为模板建立用户家目录

  1. ]# useradd natasha
  2. ]# rm -rf /home/natasha
  3. ]# cp -r /etc/skel /home/natasha
  4. ]# chown -R natasha:natasha /home/natasha
  5. ]# ls -lA /home/natasha
  6. ]# su - natasha
  7. [natasha@localhost ~]$

权限利用数字的方式表示

基本权限:

  • 利用数字4表示读取权限(r)
  • 利用数字2表示写入权限(w)
  • 利用数字1表示执行权限(x)

附加权限:了解

  • 利用数字4表示suid
  • 利用数字2表示sgid
  • 利用数字1表示t
  1. [root@nb ~]# mkdir /nsd35
  2. [root@nb ~]# ls -ld /nsd35
  3. [root@nb ~]# chmod 2755 /nsd35
  4. [root@nb ~]# ls -ld /nsd35
  5. [root@nb ~]# chmod 3755 /nsd35
  6. [root@nb ~]# ls -ld /nsd35

10 案例:设置基本权限

10.1 问题

  1. 新建/nsddir1/目录,在该目录下新建文件readme.txt
  2. 使用户zhangsan能够在/nsddir1/目录下创建/删除子目录
  3. 使用户zhangsan能够修改/nsddir1/readme.txt文件,调整/nsddir1/目录的权限,使任何用户都不能进入该目录,测试用户zhangsan是否还能修/nsddir1/readme.txt文件的内容
  4. 将/nsddir1/目录及其下所有内容的权限都设置为 rwxr-x---

10.2 方案

设置基本权限的命令主要是chmod,本实验要分清三个基本权限rwx的意义。用户在访问一个目录或文件时,由设置的访问权限+归属关系共同决定最终权限访问权限。

  • r 读取:允许查看内容-read
  • w 写入:允许修改内容-write
  • x 可执行:允许运行和切换-excute

若对目录有r权限,表示可列出该目录内容。

若对目录有w权限,表示可在该目录下新建/删除/移动文件或子目录。

若对目录有x权限,表示允许cd到该目录下。

10.3 步骤

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

步骤一:新建/nsddir1/目录,在该目录下新建文件readme.txt

命令操作如下所示:

  1. [root@localhost ~]# mkdir /nsddir1
  2. [root@localhost ~]# ls -ld /nsddir1/ //查看是否创建成功
  3. drwxr-xr-x. 2 root root 4096 2月 26 09:55 /nsddir1/
  4. [root@localhost ~]# touch /nsddir1/readme.txt
  5. [root@localhost ~]# ls -l /nsddir1/readme.txt //查看是否创建成功
  6. -rw-r--r--. 1 root root 0 2月 26 09:56 /nsddir1/readme.txt
  7. [root@localhost ~]#

步骤二:使用户zhangsan能够在/nsddir1/目录下创建/删除子目录(此题考查对目录w权限的理解)

命令操作如下所示:

  1. [root@localhost ~]# id zhangsan //查看zhangsan用户是否存在
  2. id: zhangsan:无此用户
  3. [root@localhost ~]# useradd zhangsan //创建zhangsan用户
  4. [root@localhost ~]# ls -ld /nsddir1/ //查看nsddir1目录的权限
  5. drwxr-xr-x. 2 root root 4096 2月 26 09:56 /nsddir1/

分析: 首先看zhangsan对于此目录具备有什么权限,zhangsan很明显属于其他人,权限对应为rx,要想让其能够创建、删除子目录,必须让其具备w权限

  1. [root@localhost ~]# su – zhangsan //切换zhangsan用户测试
  2. [zhangsan@localhost ~]$ mkdir /nsddir1/zhangdir //测试是否有权限创建
  3. mkdir: 无法创建目录"/nsddir1/zhangdir": 权限不够
  4. [zhangsan@localhost ~]$exit
  5. [root@localhost ~]# chmod o+w /nsddir1/ //为其他人添加W权限
  6. [root@localhost ~]# ls -ld /nsddir1/ //查看是否添加成功
  7. drwxr-xrwx. 2 root root 4096 2月 26 09:56 /nsddir1/
  8. [root@localhost ~]# su – zhangsan //再次切换到zhangsan用户测试
  9. [zhangsan@localhost ~]$ mkdir /nsddir1/zhangdir //测试是否有权限创建
  10. [zhangsan@localhost ~]$ ls /nsddir1/ //查看是否创建成功
  11. readme.txt zhangdir
  12. [zhangsan@localhost ~]$

步骤三:使用户zhangsan能够修改/nsddir1/readme.txt文件,调整/nsddir1/目录的权限,使任何用户都不能进入该目录,测试用户zhangsan是否还能修/nsddir1/readme.txt文件的内容。

分析: 首先要解决zhangsan用户能够修改readme.txt内容

命令操作如下所示:

  1. [root@localhost ~]# ls -ld /nsddir1/readme.txt //查看readme.txt文件的权限
  2. -rw-r--r--. 1 root root 0 2月 26 09:56 /nsddir1/readme.txt

分析: 首先看zhangsan对于此目录具备有什么权限,zhangsan很明显是其他人的权限是r权限,在想如何实现让zhangsan修改其内容,需加w权限

  1. [root@localhost ~]# su – zhangsan //切换zhangsan用户测试
  2. [zhangsan@localhost ~]$ echo 123 > /nsddir1/readme.txt //测试是否有权限写入
  3. -bash: /nsddir1/readme.txt: 权限不够
  4. [zhangsan@localhost ~]$ exit
  5. logout
  6. [root@localhost ~]# chmod o+w /nsddir1/readme.txt //添加w权限
  7. [root@localhost ~]# ls -l /nsddir1/readme.txt     //查看是否添加成功
  8. -rw-r--rw-. 1 root root 0 2月 26 09:56 /nsddir1/readme.txt
  9. [root@localhost ~]# su – zhangsan //切换zhangsan用户测试
  10. [zhangsan@localhost ~]$ echo 123 > /nsddir1/readme.txt //测试是否有权限写入
  11. [zhangsan@localhost ~]$ cat /nsddir1/readme.txt //查看写入成功
  12. 123

分析: zhangsan能够修改readme.txt内容了。现在设置/nsddir1权限是任何人都不能进入该目录,只需将所有人的x执行权限去掉即可。

命令操作如下所示:

  1. [root@localhost ~]# ls -ld /nsddir1/
  2. drwxr-xr-x. 2 root root 4096 3月 31 11:38 /nsddir1/
  3. [root@localhost ~]# chmod a-x /nsddir1/
  4. [root@localhost ~]# ls -ld /nsddir1/
  5. drw-r--r--. 2 root root 4096 3月 31 11:38 /nsddir1/
  6. [root@localhost ~]# su - zhangsan
  7. [zhangsan@localhost ~]$ cd /nsddir1/
  8. -bash: cd: /nsddir1/: 权限不够
  9. [zhangsan@localhost ~]$ echo 123 > /nsddir1/readme.txt //zhangsan用户无权限修改
  10. -bash: /nsddir1/readme.txt: 权限不够

步骤四:将/nsddir1/目录及其下所有内容的权限都设置为 rwxr-x---(本题主要考察选项-R,依然是利用chmod来完成)

命令操作如下所示:

  1. [root@localhost ~]# chmod -R 750 /nsddir1/         //-R为递归修改
  2. [root@localhost ~]# ls -ld /nsddir1/     //查看目录本身权限是否修改
  3. drwxr-x---. 3 root root 4096 2月 26 16:00 /nsddir1/
  4. [root@localhost ~]# ls -l /nsddir1/         //查看子目录子文件权限是否修改
  5. 总用量 8
  6. -rwxr-x---. 1 root root 4 2月 26 16:14 readme.txt
  7. drwxr-x---. 2 zhangsan zhangsan 4096 2月 26 16:00 zhangdir

11 案例:文件/目录的默认权限

11.1 问题

1)以用户root登入,测试umask掩码值

  • 查看当前的umask值
  • 新建目录udir1、文件ufile1,查看默认权限
  • 将umask设为077,再新建目录udir2、文件ufile2,查看默认权限
  • 请把umask值重新设置为022

2)以用户zhangsan登入,查看当前的umask值

3)请问为什么普通用户的家目录权限都是700

11.2 方案

本题的主要目的主要是让大家能够记住并理解umask值的作用,它决定着这个Shell环境创建文件以及目录的默认权限。

11.3 步骤

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

步骤一:以用户root登入,测试umask掩码值

  • 查看当前的umask值
  • 新建目录udir1、文件ufile1,查看默认权限
  • 将umask设为077,再新建目录udir2、文件ufile2,查看默认权限
  • 请把umask值重新设置为022

命令操作如下所示:

  1. [root@localhost ~]# whoami //确保自己登录身份是root
  2. root
  3. [root@localhost ~]# umask //查看当前umask值,需用最大权限777减去022
  4. 0022
  5. [root@localhost ~]# umask –S //另外一种查看方式,-S选项是直接显示默认权限
  6. u=rwx,g=rx,o=rx

分析: 查看创建目录以及文件的默认权限,是否与umask一致,注意文件默认安全起见没有赋予x执行权限

  1. [root@localhost ~]# mkdir /udir1 //创建测试目录
  2. [root@localhost ~]# touch /ufile1 //创建测试文件
  3. [root@localhost ~]# ls -ld /udir1/ //查看是否与umask值相符合
  4. drwxr-xr-x. 2 root root 4096 2月 26 16:37 /udir1/
  5. [root@localhost ~]# ls -l /ufile1 //查看是否与umask值相符合
  6. -rw-r--r--. 1 root root 0 2月 26 16:37 /ufile1
  7. [root@localhost ~]# umask 077 //更改umask值
  8. [root@localhost ~]# umask //查看是否修改成功
  9. 0077
  10. [root@localhost ~]# umask –S
  11. u=rwx,g=,o=
  12. [root@localhost ~]# mkdir /udir2 //创建测试目录
  13. [root@localhost ~]# touch /ufile2 //创建测试文件
  14. [root@localhost ~]# ls -ld /udir2 //查看是否与umask值相符合
  15. drwx------. 2 root root 4096 2月 26 16:43 /udir2
  16. [root@localhost ~]# ls -l /ufile2 //查看是否与umask值相符合
  17. -rw-------. 1 root root 0 2月 26 16:44 /ufile2
  18. [root@localhost ~]# umask 022 //更改umask值为022
  19. [root@localhost ~]# umask //查看是否修改成功
  20. 0022

步骤二:以用户zhangsan登入,查看当前的umask值(本题的目的主要是为了让大家知道管理员与普通用户的默认umask是不同的)

命令操作如下所示:

  1. [root@localhost ~]# umask //查看root的umask值
  2. 0022
  3. [root@localhost ~]# su – zhangsan //切换zhangsan用户身份
  4. [zhangsan@localhost ~]$ umask //查看zhangsan的umask值
  5. 0002

步骤三:请问为什么普通用户的家目录权限都是700

分析: 本题主要考察,useradd这条命令在执行的时候,与那些默认配置文件相关,有两个配置文件分别为/etc/default/useradd、/etc/login.defs。

命令操作如下所示:

  1. [root@localhost ~]# grep -v "^#" /etc/login.defs | grep -v "^$" | grep -i umask
  2. UMASK 077 //此配置文件规定创建用户家目录时,需遵循的umask值

12 案例:设置归属关系

12.1 问题

  1. 新建/tarena1目录
  2. 将属主设为gelin01,属组设为tarena组
  3. 使用户gelin01对此目录具有rwx权限,其他人对此目录无任何权限
  4. 使用户gelin02能进入、查看/tarena1文件夹
  5. 请将gelin01加入tarena组,并将tarena1目录权限设置为450,测试gelin01用户能否进入该目录

12.2 方案

大家要记得更改归属关系是利用chown命令来完成的,其中要特别注意的是此命令既可以更改所有者,也可以更改所属组。要分清所有者与所属组的位置,并以冒号或者点隔开。

12.3 步骤

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

步骤一:新建/tarena1目录

命令操作如下所示:

  1. [root@localhost ~]# mkdir /tarena1

步骤二:将属主设为gelin01,属组设为tarena组

命令操作如下所示:

  1. [root@localhost ~]# ls -ld /tarena1/ //想查看归属关系
  2. drwxr-xr-x. 2 root root 4096 2月 26 17:10 /tarena1/
  3. [root@localhost ~]# id gelin01 //检查是否有gelin01用户
  4. id: gelin01:无此用户
  5. [root@localhost ~]# grep tarena /etc/group //检查是否有tarena组
  6. [root@localhost ~]#
  7. [root@localhost ~]# useradd gelin01 //创建用户gelin01
  8. [root@localhost ~]# groupadd tarena //创建组tarena
  9. [root@localhost ~]# id gelin01 //检查是否创建成功
  10. uid=501(gelin01) gid=501(gelin01) 组=501(gelin01)
  11. [root@localhost ~]# grep tarena /etc/group //检查是否创建成功
  12. tarena:x:502:
  13. [root@localhost ~]# chown gelin01:tarena /tarena1/ //更改其归属关系
  14. [root@localhost ~]# ls -ld /tarena1/ //查看是否更改成功
  15. drwxr-xr-x. 2 gelin01 tarena 4096 2月 26 17:10 /tarena1/
  16. [root@localhost ~]#

步骤三:使用户gelin01对此目录具有rwx权限,其他人对此目录无任何权限(更改时需注意对象要弄清,不要弄混)

命令操作如下所示:

  1. [root@localhost ~]# ls -ld /tarena1/ //查看其权限划分情况
  2. drwxr-xr-x. 2 gelin01 tarena 4096 2月 26 17:10 /tarena1/

分析:想要gelin01用户权限为rwx,那么首先看gelin01是属于哪一种归属关系。可以看出是所有者身份。

  1. [root@localhost ~]# chmod u=rwx /tarena1/ //更改所有者权限为rwx
  2. [root@localhost ~]# ls -ld /tarena1/ //查看是否更改成功
  3. drwxr-xr-x. 2 gelin01 tarena 4096 2月 26 17:10 /tarena1/

分析: 其他人无任何权限,利用命令chmod o= /tarena1/

  1. [root@localhost ~]# ls -ld /tarena1/ //查看其权限划分情况
  2. drwxr-xr-x. 2 gelin01 tarena 4096 2月 26 17:10 /tarena1/
  3. [root@localhost ~]# chmod o= /tarena1/ //更改权限o没有任何权限
  4. [root@localhost ~]# ls -ld /tarena1/ //查看其权限划分情况
  5. drwxr-x---. 2 gelin01 tarena 4096 2月 26 17:10 /tarena1/
  6. [root@localhost ~]#

步骤四:使用户gelin02能进入、查看/tarena1文件夹

命令操作如下所示:

  1. [root@localhost ~]# ls -ld /tarena1/ //查看其权限划分情况
  2. drwxr-x---. 2 gelin01 tarena 4096 2月 26 17:10 /tarena1/

分析: 首先gelin02这个用户对于tarena1目录的归属关系,因属于其他人,如果想让其能够查看必须要有r权限,想要进入必须要有x权限。可能有同学会想到利用chmod o=rx /tarena1 命令来完成此题,但这样做与上题相违背,所以不可。我们可以换一种方式,我们可以看到此目录的所属组具备rx权限,所以我们可以把gelin02加入到tarena组里,才是此题的正解。

  1. [root@localhost ~]# id gelin02 //查看是否有gelin02用户
  2. id: gelin02:无此用户
  3. [root@localhost ~]# useradd gelin02 //创建gelin02用户
  4. [root@localhost ~]# gpasswd -a gelin02 tarena //将gelin02用户加入组tarena
  5. Adding user gelin02 to group tarena
  6. [root@localhost ~]# grep tarena /etc/group //查看是否加入成功
  7. tarena:x:502:gelin02
  8. [root@localhost ~]# su - gelin02 //切换身份测试
  9. [gelin02@localhost ~]$ ls -l /tarena1/ //查看是否具备r权限
  10. 总用量 0
  11. [gelin02@localhost ~]$ cd /tarena1/ //查看是否具备x权限
  12. [gelin02@localhost tarena1]$ pwd
  13. /tarena1

步骤五:请将gelin01加入tarena组,并将tarena1目录权限设置为450,测试gelin01用户能否进入该目录

命令操作如下所示:

  1. [root@localhost ~]# grep tarena /etc/group //查看该组成员列表
  2. tarena:x:502:gelin02
  3. [root@localhost ~]# gpasswd -a gelin01 tarena //将gelin01用户加入tarena组
  4. Adding user gelin01 to group tarena
  5. [root@localhost ~]# grep tarena /etc/group //查看该组成员列表是否加入成功
  6. tarena:x:502:gelin02,gelin01
  7. [root@localhost ~]# ls -ld /tarena1/ //查看其权限划分情况
  8. drwxr-x---. 2 gelin01 tarena 4096 2月 26 17:10 /tarena1/
  9. [root@localhost ~]# chmod 450 /tarena1/ //更改权限
  10. [root@localhost ~]# ls -ld /tarena1/ //查看其权限划分情况
  11. dr--r-x---. 2 gelin01 tarena 4096 2月 26 17:10 /tarena1/

分析: 此时注意首先归属关系要清楚,gelin01是所有者而gelin01又属于tarena组,那接下来在看所有者权限是只读权限只有一个r权限,而所属组成员所具备的的是rx权限,这个时候我们要想一想了,现在权限发生不一致的情况,那么gelin01具备什么权限呢?是r还是rx。我们可以测试一下。

  1. [root@localhost ~]# su - gelin01 //切换用户身份测试
  2. [gelin01@localhost ~]$ ls /tarena1/ //查看是否具备r权限
  3. [gelin01@localhost ~]$ //可以看到具备r权限
  4. [gelin01@localhost ~]$ cd /tarena1/ //能够切换成功说明是rx,否则是只读r权限
  5. -bash: cd: /tarena1/: 权限不够

分析: 很明显不能够切换成功,是只读权限。这里告诉大家Linux对于权限判别的一个优先顺序,是所有者>所属组>其他人,也就是说首先Linux系统判别的是你属于本目录的归属关系的哪一种,首先看你是不是所有者,再看你是不是所属组,最后看你是不是其他人。就拿本题来举例,首先看gelin01是不是所有者,可以看出gelin01是所有者那么权限直接就按照所有者的权限执行,也不会再看后面。也不会所有者权限与所属组权限取交或并,本题目的是让大家记住和体会Linux对于权限判别的一个优先顺序。

13 案例:SUID权限测试

13.1 问题

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

13.2 方案

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

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

13.3 步骤

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

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

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

  1. [root@localhost ~]# which mkdir //利用which找到mkdir命令的绝对路径
  2. /bin/mkdir
  3. [root@localhost ~]# cp /bin/mkdir /bin/mymd1 //复制并改名
  4. [root@localhost ~]# ls -l /bin/mymd1 //查看是否生成mymd1
  5. -rwxr-xr-x. 1 root root 49384 2月 27 10:34 /bin/mymd1
  6. [root@localhost ~]# chmod u+s /bin/mymd1 //添加SUID权限
  7. [root@localhost ~]# ls -l /bin/mymd1 //查看是否添加成功
  8. -rwsr-xr-x. 1 root root 49384 2月 27 10:34 /bin/mymd1

步骤二:以用户zhangsan登入,做下列测试:在其家目录下分别使用mkdir、mymd1命令尝试创建snew01、snew02

  1. [root@localhost ~]# id zhangsan //查看zhangsan用户是否存在
  2. uid=500(zhangsan) gid=500(zhangsan) 组=500(zhangsan)
  3. [root@localhost ~]# su – zhangsan //切换用户身份测试
  4. [zhangsan@localhost ~]$ ls -l /bin/mkdir //查看mkdir命令程序权限的划分
  5. -rwxr-xr-x. 1 root root 49384 10月 17 2013 /bin/mkdir //可以看到没有SUID
  6. [zhangsan@localhost ~]$ mkdir snew01 //创建测试目录snew01
  7. [zhangsan@localhost ~]$ ls -ld snew01/ //查看snew01权限及归属关系
  8. drwxrwxr-x. 2 zhangsan zhangsan 4096 2月 27 10:40 snew01/ //属主与属组均是zhangsan
  9. [zhangsan@localhost ~]$ ls -l /bin/mymd1 //查看mymd1命令程序权限的划分
  10. -rwsr-xr-x. 1 root root 49384 2月 27 10:34 /bin/mymd1 //可以看到具备SUID
  11. [zhangsan@localhost ~]$ mymd1 snew02 //创建测试目录snew02
  12. [zhangsan@localhost ~]$ ls -ld snew02 //查看snew02权限及归属关系
  13. drwxrwxr-x. 2 root zhangsan 4096 2月 27 10:47 snew02

分析: 可以看到归属关系中所有者发生变化,继承了mymd1命令程序的所有者root。

14 案例:SGID权限测试

14.1 问题

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

14.2 方案

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

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

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

14.3 步骤

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

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

命令操作如下所示:

  1. [root@localhost ~]# mkdir /nsdpublic //创建测试目录
  2. [root@localhost ~]# ls -ld /nsdpublic/ //查看权限及归属关系
  3. drwxr-xr-x. 2 root root 4096 2月 27 11:27 /nsdpublic/
  4. [root@localhost ~]# grep tarena /etc/group //查看tarena组是否存在
  5. tarena:x:502:gelin02,gelin01
  6. [root@localhost ~]# chown :tarena /nsdpublic/ //更改目录所属组为tarena组
  7. [root@localhost ~]# ls -ld /nsdpublic/ //查看是否修改成功
  8. drwxr-xr-x. 2 root tarena 4096 2月 27 11:27 /nsdpublic/

步骤二:新建子目录nsd01、子文件test01.txt,查看两者的权限及归属

命令操作如下所示:

  1. [root@localhost ~]# mkdir /nsdpublic/nsd01 //在nsdpublic目录下创建nsd01目录
  2. [root@localhost ~]# touch /nsdpublic/test01.txt //在nsdpublic目录下创建测试文件
  3. [root@localhost ~]# ls -l /nsdpublic/ //查看归属关系其属组均为root组
  4. 总用量 4
  5. drwxr-xr-x. 2 root root 4096 2月 27 11:49 nsd01
  6. -rw-r--r--. 1 root root 0 2月 27 11:50 test01.txt

步骤三:为此目录添加SGID权限,再新建子目录nsd02、子文件test02.txt

命令操作如下所示:

  1. [root@localhost ~]# chmod g+s /nsdpublic/ //为nsdpublic添加SGID权限
  2. [root@localhost ~]# ls -ld /nsdpublic/ //查看设置成功
  3. drwxr-sr-x. 3 root tarena 4096 2月 27 11:50 /nsdpublic/
  4. [root@localhost ~]# mkdir /nsdpublic/nsd02
  5. [root@localhost ~]# touch /nsdpublic/test02.txt
  6. [root@localhost ~]# ls -l /nsdpublic/
  7. 总用量 8
  8. drwxr-xr-x. 2 root root 4096 2月 27 11:49 nsd01
  9. drwxr-sr-x. 2 root tarena 4096 2月 27 11:57 nsd02
  10. -rw-r--r--. 1 root root 0 2月 27 11:50 test01.txt
  11. -rw-r--r--. 1 root tarena 0 2月 27 11:57 test02.txt

分析: 可以看到当nsdpublic目录具备SGID权限时,之前创建的nsd01与test01.txt其所属组均为发生变化,但新创建的nsd02与test02.txt两者都继承的所属组身份及权限,其中还需注意的一点是我们也可以看到nsd02子目录也同样继承了SGID权限。

15 案例:Sticky权限测试

15.1 问题

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

15.2 方案

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

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

15.3 步骤

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

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

命令操作如下所示:

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

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

命令操作如下所示:

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

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

命令操作如下所示:

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

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

命令操作如下所示:

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

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

命令操作如下所示:

  1. [lisi@localhost ~]$ whoami //查看当前用户身份
  2. Lisi
  3. [lisi@localhost ~]$ ls -ld /tarena/public //查看目录权限
  4. drwxrwxrwt. 2 root root 4096 2月 27 15:07 /tarena/public/
  5. [lisi@localhost ~]$ ls -l /tarena/public
  6. 总用量 0
  7. -rw-rw-r--. 1 lisi lisi 0 2月 27 15:03 lsfile2
  8. -rw-rw-r--. 1 zhangsan zhangsan 0 2月 27 14:57 zhsfile2
  9. [lisi@localhost ~]$ rm -rf /tarena/public/lsfile2 //删除lisi自己文件
  10. [lisi@localhost ~]$ rm -rf /tarena/public/zhsfile2 //删除其他用户的文件
  11. rm: 无法删除"/tarena/public/zhsfile2": 不允许的操作

16 定义ACL控制策略

16.1 问题

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

16.2 方案

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

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

16.3 步骤

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

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

命令操作如下所示:

  1. [root@localhost ~]# useradd mike
  2. [root@localhost ~]# useradd john
  3. [root@localhost ~]# useradd kaka

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

命令操作如下所示:

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

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

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

命令操作如下所示:

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

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

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

命令操作如下所示:

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

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

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

命令操作如下所示:

  1. [root@localhost ~]# echo 123456 > /data/file1.txt //写入测试文字
  2. [root@localhost ~]# cat /data/file1.txt //管理员测试
  3. 123456
  4. [root@localhost ~]# id lily //查询是否存在lily用户
  5. id: lily:无此用户
  6. [root@localhost ~]# useradd lily //创建lily用户
  7. [root@localhost ~]# su – lily //切换用户身份
  8. [lily@localhost ~]$ cat /data/file1.txt //测试在没有设置ACL前lily能否查看
  9. cat: /data/file1.txt: 权限不够
  10. [lily@localhost ~]$ exit //退到root用户身份
  11. logout
  12. [root@localhost ~]# getfacl /data/file1.txt //查看文件ACL策略
  13. getfacl: Removing leading '/' from absolute path names
  14. # file: data/file1.txt
  15. # owner: mike
  16. # group: john
  17. user::rw-
  18. group::r--
  19. other::---
  20. [root@localhost ~]# setfacl -m u:lily:r /data/file1.txt //设置ACL策略
  21. [root@localhost ~]# getfacl /data/file1.txt //查看ACL策略
  22. getfacl: Removing leading '/' from absolute path names
  23. # file: data/file1.txt
  24. # owner: mike
  25. # group: john
  26. user::rw-
  27. user:lily:r--
  28. group::r--
  29. mask::r--
  30. other::---
  31. [root@localhost ~]# su – lily //切换用户
  32. [lily@localhost ~]$ cat /data/file1.txt //测试是否具有r权限
  33. 123456

17 基础练习:

练习1:chmod权限设置

1)以root用户新建/nsddir/目录,在该目录下新建文件readme.txt

2)使用户zhangsan能够在/nsddir/目录下创建/删除子目录

3)使用户zhangsan能够修改/nsddir/readme.txt文件的容

练习2:chown归属设置

1)新建/tarena1目录

a)将属主设为gelin01,属组设为tarena组

b)使用户gelin01对此目录具有rwx权限,其他人对此目录无任何权限

2)使用户gelin02能进入、查看/tarena1文件夹(提示:将gelin02加入所属组)

3)新建/tarena2目录

a)将属组设为tarena

b)使tarena组的任何用户都能在此目录下创建、删除文件

4)新建/tarena/public目录

a)使任何用户对此目录都有rwx权限

b)拒绝zhangsan进入此目录,对此目录无任何权限(提示ACL黑名单)

练习3:权限设置(参考答案)

1、 创建文件夹/data/test,设置目录的访问权限,使所有者和所属组具备读写执行的权限;其他人无任何权限。

  1. [root@A ~]# mkdir -p /data/test
  2. [root@A ~]# chmod 770 /data/test

2、 递归修改文件夹/data/test的归属使所有者为zhangsan,所属组为tarena。

  1. [root@A ~]# chown -R zhangsan:tarena /data/test
  2. [root@A ~]# ls -ld /data/test

3、 请实现在test目录下,新建的所有子文件或子目录的所属组都会是tarena。

  1. [root@A ~]# chmod g+s /data/test
  2. [root@A ~]# mkdir /data/test/abc
  3. [root@A ~]# ls -ld /data/test/abc

4、为lisi创建ACL访问权限,使得lisi可以查看/etc/shadow文件

  1. [root@A ~]# setfacl -m u:lisi:r /etc/shadow
  2. [root@A ~]# getfacl /etc/shadow

练习4:虚拟机 上操作

将文件 /etc/fstab 拷贝为 /var/tmp/fstab,并调整文件 /var/tmp/fstab权限

满足以下要求:

– 此文件的拥有者是 root

– 此文件对任何人都不可执行

– 用户 natasha 能够对此文件可以读和写操作 (利用ACL策略)

– 用户 harry 对此文件既不能读,也不能写 (利用ACL策略)

练习5:虚拟机上操作

创建一个共用目录 /home/admins,要求如下:

– 此目录的所属组是 adminuser

– adminuser 组的成员对此目录有读写和执行的权限,并且其他用户没有任何权限

– 在此目录中创建的文件,其所属组会自动设置为 属于 adminuser 组

答案参考:

练习1:chmod权限设置

1)以root用户新建/nsddir/目录,在该目录下新建文件readme.txt

2)使用户zhangsan能够在/nsddir/目录下创建/删除子目录

3)使用户zhangsan能够修改/nsddir/readme.txt文件的容

  1. [root@A ~]# mdkir /nsddir
  2. [root@A ~]# echo haha >> /nsddir/readme.txt
  3. [root@A ~]# chmod o+w /nsddir
  4. [root@A ~]# su - zhangsan
  5. [zhangsan@A ~]$ mkdir /nsddir/zhangsan
  6. [zhangsan@A ~]$ ls /nsddir
  7. [zhangsan@A ~]$ exit
  8. [root@A ~]# chmod o+w /nsddir/readme.txt
  9. [root@A ~]# su - zhangsan
  10. [zhangsan@A ~]$ echo xixi >> /nsddir/readme.txt
  11. [zhangsan@A ~]$ cat /nsddir/readme.txt
  12. [zhangsan@A ~]$ exit

练习2:chown归属设置

1)新建/tarena1目录

a)将属主设为gelin01,属组设为tarena组

b)使用户gelin01对此目录具有rwx权限,其他人对此目录无任何权限

  1. [root@A ~]# mkdir /tarena1
  2. [root@A ~]# useradd gelin01
  3. [root@A ~]# groupadd tarena
  4. [root@A ~]# chown gelin01:tarena /tarena1
  5. [root@A ~]# ls -ld /tarena1
  6. [root@A ~]# chmod o=--- /tarena1
  7. [root@A ~]# ls -ld /tarena1

2)使用户gelin02能进入、查看/tarena1文件夹(提示:将gelin02加入所属组)

  1. [root@A ~]# useradd gelin02
  2. [root@A ~]# gpasswd -a gelin02 tarena
  3. [root@A ~]# id gelin02
  4. [root@A ~]# su - gelin02
  5. [gelin02@A ~]$ cd /tarena1
  6. [gelin02@A tarena1]$ cd /tarena1
  7. [gelin02@A tarena1]$ ls
  8. [gelin02@A tarena1]$ exit

3)新建/tarena2目录

a)将属组设为tarena

b)使tarena组的任何用户都能在此目录下创建、删除文件

  1. [root@A ~]# mkdir /tarena2
  2. [root@A ~]# chown :tarena /tarena2
  3. [root@A ~]# chmod g+w /tarena2
  4. [root@A ~]# ls -ld /tarena2
  5. [root@A ~]# useradd ceshi
  6. [root@A ~]# gpasswd -a ceshi tarena
  7. [root@A ~]# id ceshi
  8. [root@A ~]# su - ceshi
  9. [ceshi@A ~]$ mkdir /tarena2/ceshi
  10. [ceshi@A ~]$ ls /tarena2
  11. [ceshi@A ~]$ exit

4)新建/tarena/public目录

a)使任何用户对此目录都有rwx权限

b)拒绝zhangsan进入此目录,对此目录无任何权限

  1. [root@A ~]# mkdir /tarena/public
  2. [root@A ~]# chmod 777 /tarena/public
  3. [root@A ~]# ls -ld /tarena/public
  4. [root@A ~]# setfacl -m u:zhangsan:--- /tarena/public
  5. [root@A ~]# su - zhangsan
  6. [zhangsan@A ~]$ ls /tarena/public
  7. [zhangsan@A ~]$ cd /tarena/public
  8. [zhangsan@A ~]$ exit

练习3:权限设置

1、创建文件夹/data/test,设置目录的访问权限,使所有者和所属组具备读写执行的权限;其他人无任何权限。

2、递归修改文件夹/data/test的归属使所有者为zhangsan,所属组为tarena。

3、请实现在test目录下,新建的所有子文件或目录的所属组都会是tarena。

4、为lisi创建ACL访问权限,使得lisi可以查看/etc/shadow文件

  1. [root@A ~]# mkdir /data/test
  2. [root@A ~]# chmod u=rwx,g=rwx,o=--- /data/test 或者 chmod 770 /data/test
  3. [root@A ~]# ls -ld /data/test
  4. [root@A ~]# chown -R zhangsan:tarena /data/test
  5. [root@A ~]# ls -ld /data/test
  6. [root@A ~]# chmod g+s /data/test
  7. [root@A ~]# mkdir /data/test/abc
  8. [root@A ~]# ls -ld /data/test/abc
  9. [root@A ~]# setfacl -m u:lisi:r /etc/shadow
  10. [root@A ~]# getfacl /etc/shadow
  11. [root@A ~]# su - lisi
  12. [lisi@A ~]$ cat /etc/shadow
  13. [lisi@A ~]$ exit

练习4:虚拟机 server0上操作

将文件 /etc/fstab 拷贝为 /var/tmp/fstab,并调整文件 /var/tmp/fstab权限

满足以下要求:

– 此文件的拥有者是 root

– 此文件对任何人都不可执行

– 用户 natasha 能够对此文件执行读和写操作

– 用户 harry 对此文件既不能读,也不能写

  1. [root@A ~]# cp /etc/fstab /var/tmp/fstab
  2. [root@A ~]# ls -l /var/tmp/fstab
  3. [root@A ~]# setfacl -m u:natasha:rw /var/tmp/fstab
  4. [root@A ~]# getfacl /var/tmp/fstab
  5. [root@A ~]# su - natasha
  6. [natasha@A ~]$ cat /var/tmp/fstab
  7. [natasha@A ~]$ echo ceshi >> /var/tmp/fstab
  8. [natasha@A ~]$ cat /var/tmp/fstab
  9. [natasha@A ~]$ exit
  10. [root@A ~]# setfacl -m u:harry:--- /var/tmp/fstab
  11. [root@A ~]# getfacl /var/tmp/fstab
  12. [root@A ~]# su - harry
  13. [harry@A ~]$ cat /var/tmp/fstab
  14. [harry@A ~]$ echo ceshi >> /var/tmp/fstab
  15. [harry@A ~]$ exit

练习5:虚拟机操作

创建一个共用目录 /home/admins,要求如下:

– 此目录的所属组是 adminuser

– adminuser 组的成员对此目录有读写和执行的权限,并且其他用户没有任何权限

– 在此目录中创建的文件,其所属组会自动设置为 属于 adminuser 组

 
  1. [root@A ~]# mkdir /home/admins
  2. [root@A ~]# groupadd adminuser
  3. [root@A ~]# chown :adminuser /home/admins
  4. [root@A ~]# ls -ld /home/admins
  5. [root@A ~]# chmod g+s /home/admins
  6. [root@A ~]# ls -ld /home/admins
  7. [root@A ~]# mkdir /home/admins/ceshi
  8. [root@A ~]# ls -ld /home/admins/ceshi

标签:基本,zhangsan,tarena,ls,linux,权限,root,localhost
From: https://www.cnblogs.com/jianganming/p/17757306.html

相关文章

  • 天堂2服务器基本设置
    [system]server_name=LocalServer——〉服务器名称server_rules=PvPhttp_host=127.0.0.1——〉HTTP注册页面(需先搭建IIS服务器)http_port=8080rs_host=127.0.0.1——〉填IPrs_port=3724ws_host=127.0.0.1——〉填你的IPws_port=8085world_sleep_ms=500——〉照字面来看是白天的......
  • Ubuntu使用教程:轻松掌握Linux操作系统
    今天要和大家分享一份Ubuntu使用教程,帮助大家快速掌握这个功能强大、易于上手的Linux操作系统。无论是对于新手还是已有一定Linux基础的用户,这篇教程都将提供清晰的步骤和详细的内容,让您轻松上手Ubuntu。第一步:安装Ubuntu1.从Ubuntu官网下载适合您的版本(如最新的Ubuntu20.04LTS版......
  • Linux操作系统 no.1
    一.基本指令:  目录操作1.创建目录  mkdir2.查看目录  pwd3.删除目录  rmdir 文件操作1.创建文件  touch2.查看文件  cat3.显示文件内容  more4.对文件进行分页输出  less5.查看文件头几行  head6.查看文件后几行  tail7.指定查找 ......
  • Linux读写执行权限
    1、Linux读写执行权限Linux将访问文件的用户分为3类,分别是文件的拥有者,所属组(也就是文件所属的群组)以及其他用户。最常见的文件权限有3种,即对文件的读(用r表示)、写(用w表示)、执行(用x表示,针对可执行文件或目录)权限。 r:读取权限,数字代号为"4"。 w:写入权限,数字代号为"2"......
  • linux服务器中文文件名打包之后到windows上解压乱码
    0:背景,服务器文件名是gbk编码,使用tarczf 打包,然后在windows上解包其中的中文文件名乱码。1:最终方式 #zip-r20231010.zip20231010 在服务器上压缩整个目录(里面有中文文件名)在windows上使用360压缩进行解压。就可以解决乱码问题。2:踩过的坑2.1 不能使用tarczf 创建*t......
  • openpyxl基本操作
    fromopenpyxl.stylesimportFont,PatternFill,Border,Side,Alignment,Protectionfromopenpyxl.stylesimportnumberswb=Workbook()ws=wb.activews.cell(row=1,column=1,value='宋体').font=Font(name=u'宋体',size=12,bold=True,col......
  • Linux 磁盘空间异常爆满的排查和处理
    一、问题现象在服务验证中,遇到磁盘空间使用率接近100%,业务操作出现异常具体:测试升级过程中,磁盘分区的容量空间使用殆尽,导致升级失败,手动操作删除一些文件后,磁盘空间仍旧没有释放,具体查看的时候确实没有多大大文件 二、问题排查思路:1.通过  df-Hl命令查看  2.查看......
  • Linux (Ubuntu)安装 cuda 11.7
    使用的Linux系统为 Ubuntu18.04,显卡为GeForceRTX3060,驱动版本号为515.57,安装CUDA11.7。第一步:查看显卡是否正常,显示如下则表示没有问题。(版本要对应正确)命令:lspci|grepNVIDIA 第二步:选择下载对应的CUDA包,官网地址为:CUDA。或者CUDAToolkitArchive|NVIDIADevelop......
  • 关于linux:Android的/ storage / emulated / 0和/ data / media / 0的不同权限
     Android/storage/emulated/0and/data/media/0differentpermissions我有LGG3智能手机。在文件系统探索期间,我发现/storage/emulated/0/...目录(从系统接收到我的本地用户)具有不允许chmod和chown操作的权限。当我尝试将某些文件更改为777时,我收到了0个结果......
  • Qt_C++读写NFC标签Ntag支持windows国产linux操作系统
    本示例使用的发卡器:ntag2标签存储结构说明#include"mainwindow.h"#include"./ui_mainwindow.h"#include<QDebug>#include"QLibrary"#include"QMessageBox"//本示例可在windows、linux系统内编译、运行//判断windows、linux系统,声明动态库函数---------------......