Linux 文件/目录默认权限设置

2.文件/目录的默认权限
问题
1)以用户root登入,测试umask掩码值
查看当前的umask值
新建目录udir1、文件ufile1,查看默认权限
将umask设为077,再新建目录udir2、文件ufile2,查看默认权限
请把umask值重新设置为022
2)以用户zhangsan登入,查看当前的umask值
3)请问为什么普通用户的家目录权限都是700
方案
本题的主要目的主要是让大家能够记住并理解umask值的作用,它决定着这个Shell环境创建文件以及目录的默认权限。
步骤
实现此案例需要按照如下步骤进行。
步骤一:以用户root登入,测试umask掩码值
查看当前的umask值
新建目录udir1、文件ufile1,查看默认权限
将umask设为077,再新建目录udir2、文件ufile2,查看默认权限
请把umask值重新设置为022
命令操作如下所示:
[root@localhost ~]# whoami //确保自己登录身份是root
root
[root@localhost ~]# umask //查看当前umask值,需用最大权限777减去022
0022
[root@localhost ~]# umask –S //另外一种查看方式,-S选项是直接显示默认权限
u=rwx,g=rx,o=rx
分析: 查看创建目录以及文件的默认权限,是否与umask一致,注意文件默认安全起见没有赋予x执行权限
[root@localhost ~]# mkdir /udir1 //创建测试目录
[root@localhost ~]# touch /ufile1 //创建测试文件
[root@localhost ~]# ls -ld /udir1/ //查看是否与umask值相符合
drwxr-xr-x. 2 root root 4096 2月 26 16:37 /udir1/
[root@localhost ~]# ls -l /ufile1 //查看是否与umask值相符合
-rw-r–r--. 1 root root 0 2月 26 16:37 /ufile1
[root@localhost ~]# umask 077 //更改umask值
[root@localhost ~]# umask //查看是否修改成功
0077
[root@localhost ~]# umask –S
u=rwx,g=,o=
[root@localhost ~]# mkdir /udir2 //创建测试目录
[root@localhost ~]# touch /ufile2 //创建测试文件
[root@localhost ~]# ls -ld /udir2 //查看是否与umask值相符合
drwx------. 2 root root 4096 2月 26 16:43 /udir2
[root@localhost ~]# ls -l /ufile2 //查看是否与umask值相符合
-rw-------. 1 root root 0 2月 26 16:44 /ufile2
[root@localhost ~]# umask 022 //更改umask值为022
[root@localhost ~]# umask //查看是否修改成功
0022
步骤二:以用户zhangsan登入,查看当前的umask值(本题的目的主要是为了让大家知道管理员与普通用户的默认umask是不同的)
命令操作如下所示:
[root@localhost ~]# umask //查看root的umask值
0022
[root@localhost ~]# su – zhangsan //切换zhangsan用户身份
[zhangsan@localhost ~]$ umask //查看zhangsan的umask值
0002
步骤三:请问为什么普通用户的家目录权限都是700
分析: 本题主要考察,useradd这条命令在执行的时候,与那些默认配置文件相关,有两个配置文件分别为/etc/default/useradd、/etc/login.defs。
命令操作如下所示:
[root@localhost ~]# grep -v “^#” /etc/login.defs | grep -v "^KaTeX parse error: Unexpected character: '' at position 83: …mask值 3.设置归属关系 ̲问题 1)新建/tarena1… ls -l /tarena1/ //查看是否具备r权限
总用量 0
[gelin02@localhost ~]$ cd /tarena1/ //查看是否具备x权限
[gelin02@localhost tarena1]$ pwd
/tarena1
步骤五:请将gelin01加入tarena组,并将tarena1目录权限设置为450,测试gelin01用户能否进入该目录
命令操作如下所示:
[root@localhost ~]# grep tarena /etc/group //查看该组成员列表
tarena❌502:gelin02
[root@localhost ~]# gpasswd -a gelin01 tarena //将gelin01用户加入tarena组
Adding user gelin01 to group tarena
[root@localhost ~]# grep tarena /etc/group //查看该组成员列表是否加入成功
tarena❌502:gelin02,gelin01
[root@localhost ~]# ls -ld /tarena1/ //查看其权限划分情况
drwxr-x—. 2 gelin01 tarena 4096 2月 26 17:10 /tarena1/
[root@localhost ~]# chmod 450 /tarena1/ //更改权限
[root@localhost ~]# ls -ld /tarena1/ //查看其权限划分情况
dr–r-x—. 2 gelin01 tarena 4096 2月 26 17:10 /tarena1/
分析: 此时注意首先归属关系要清楚,gelin01是所有者而gelin01又属于tarena组,那接下来在看所有者权限是只读权限只有一个r权限,而所属组成员所具备的的是rx权限,这个时候我们要想一想了,现在权限发生不一致的情况,那么gelin01具备什么权限呢?是r还是rx。我们可以测试一下。
[root@localhost ~]# su - gelin01 //切换用户身份测试
[gelin01@localhost ~]$ ls /tarena1/ //查看是否具备r权限
[gelin01@localhost ~]$ //可以看到具备r权限
[gelin01@localhost ~]$ cd /tarena1/ //能够切换成功说明是rx,否则是只读r权限
-bash: cd: /tarena1/: 权限不够
分析: 很明显不能够切换成功,是只读权限。这里告诉大家Linux对于权限判别的一个优先顺序,是所有者>所属组>其他人,也就是说首先Linux系统判别的是你属于本目录的归属关系的哪一种,首先看你是不是所有者,再看你是不是所属组,最后看你是不是其他人。就拿本题来举例,首先看gelin01是不是所有者,可以看出gelin01是所有者那么权限直接就按照所有者的权限执行,也不会再看后面。也不会所有者权限与所属组权限取交或并,本题目的是让大家记住和体会Linux对于权限判别的一个优先顺序。

你可能感兴趣的:(原创)