权限管理命令
1.chown:改变文件或目录的所有者
chown [用户][文件或目录]
在上一节我们知道可以更改文件权限的有两个角色,一个是管理员root,一个是文件的所有者;但再更改文件或目录的所有者时,只有root用户才能更改文件或目录的所有者。如图所示,当前用户为谱图用户tangtang,他是文件watermelon的所有者,但是不可以更改watermelon的所有者,如把所有者由tangtang改变为root
登录到root用户下,修改普通用户tangtang创建文件watermelon的所有者
更改所有者的使用场景:
假设菜菜是root用户,他为了加深对Linux命令的理解,打算在Linux系统上写一个脚本,可是啊,她被Linda邀请去做演讲了,她不想脚本完成的时间推后,也不想拒绝Linda的邀请,怎么办呢?此时,他就可以把该脚本文件的所有者更改为唐唐,唐唐就可以在菜菜的基础上替她完成脚本的编写啦。
2.chgrp:改变文件或目录的所属组
chgrp [用户组][文件或目录]
chgrp tangtang watermelon
更改文件watermelon的用户组为tangtang
使用groupadd新增一个用户组pineapple,再把文件watermelon的用户组更改为pineapple
关于所有者,谁创建了该文件或目录,谁就是所有者,那所属组呢?一个用户可以属于多个组,但她只有一个默认组,每个用户在创建文件时,她就是该文件默认的所属组,每个用户只能有一个默认组。
在创建文件/目录时候我们没有设置文件/目录的读写执行权限,但是再查看文件的权限是,却显示有权限了,这是为什么呢??
3.umask:显示,设置文件的默认权限(缺省权限)
umask [-S]
-S 以rwx形式显示新文件的默认权限
显示文件的默认权限,如下所示:
设置文件的默认权限:
执行命令umask,可以看到0022,其中第一个0代表特殊权限,最后三个数字依次代表文件所有者,所属组,其他用户对应的权限。022表示权限:--- -w- -w-.
可以看到,当使用目录umask -S后,显示的权限与目录的权限一样,但相对于文件缺少了可执行权限x。这是因为再Linux权限管理中,文件时不具备可执行权限x的,任何新建的文件都会把可执行权限x去掉,因此文件中就没有了可执行权限x,这个如上图中文件apple的权限所示。
在执行命令umask时显示默认权限0022,第一个0表示特殊权限,第二个0用户具有权限rwx
第一个数字2表示所属组2号权限没有,即没有权限w,其所属组权限为rx
第二个数字2表示其他人2号权限没有,及没有权限w,其他用户权限为rx
当我们创建一个目录时,其初始权限默认为rwx r-x r-x,由于Linux中文件不具备执行权限x,所以其默认初始权限为rw- r-- r--
我们可以根据以下来阐述新建一个目录时,其默认权限
假设该文件具备权限为: 777 rwx rwx rwx
umask默认权限为: 022 --- -w- -w-
-------------------------------------------------------------------------
把两者做异或运算 744 rwx r-x r-x
异或运算:对应位置相同的为假,则新建文件不具备该权限,不同的为真,即新建文件具备该权限。这样操作后就可以得到新建文件的初始权限。如下图所示:
默认权限umask 0022是可以修改的,但一般不建议修改。如果想修改,可以继续往下看:
假设想要把文件的初始权限修改为 730 rwx r-- ---,该如何操作呢?
解:假设新建文件具有权限 777 rwx rwx rwx
文件初始权限 730 rwx r-- ---
-----------------------------------------------------------------------
做异或运算的默认权限 037 --- -wx rwx
即把默认权限umask修改为037,即可得到新建目录的初始权限730 rwx r-- ---
再次尝试后新建文件所有者权限为7部分也不能如异或运算得出的结果一样。
若还想再尝试可以试试默认权限改为077,这个符合上面阐述的异或操作得出的结果,若想尝试更多修改默认权限umask,可查阅相关资料。