文件权限管理
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
从上图我们可以看到用户对main.c文件的权限为-rw-rw-rw-,r代表可读,w代表可写,x代表可执行,而-代表不具有此权限,所以这里的main.c是可以给文件所有者、用户组里的其他用户、其他用户读和写,但都不能执行main.c
chmod(Change mode):控制用户对文件的权限的命令
Q:哪些用户可以修改文件权限?
A:只有文件所有者和超级用户可以修改文件或目录的权限。
我们有两种命令形式去指定文件的权限:
1、使用绝对模式(八进制数字模式)
我们可以把文件权限认为10位二进制数,把位是r或w或x的位当做1,-当做0,所以main.c的二进制为0110110110,转换为八进制即为666。如果我想把main.c的文件权限变为-rw-r–r–,其二进制为0110100100,转换为八进制即为644,所以我们可以通过键入如下指令进行文件权限的更改:
chmod 644 main.c
这里我们可以用ls -l main.c
查询main.c文件的详细信息,可以看到Group和Other Users已经失去了可写的权限
2、使用符号模式(此时main.c文件的原始权限依然是-rw-rw-rw-)
符号模式相对来说更简单,把文件所有者(Owner)当做符号"u"、把用户组(Group)当做符号"g"、其它用户(Other Users)当做符号"o"、把这三种用户的统称即all当做符号"a"
假如我想给文件所有者所在组的其他组内用户(符号"g")移除(符号"-“)对main.c可写(符号"r”)的权限,可以键入:
chmod g-r main.c
我们可以从上图看到Group已经失去了对main.c可写的权限
相对的假如我想给文件所有者所在组的其他组内用户(符号"g")重新赋予(符号"+“)对main.c可写(符号"r”)的权限,可以键入:
chmod g+r main.c
我们可以从上图看到Group已经重新被赋予了对main.c可写的权限
同理给文件所有者赋予对main.c可执行的的权限即为:
chmod u+x main.c
除此之外,我们还可以对文件权限进行批量修改,只需之间添加","即可,即:
chmod g-w,o-w main.c
除了"+“与”-“外,还可以对文件权限进行赋值(即符号”=")
例如:
chmod u=rw-,g=rw-,o=rw- main.c
经过如上操作,main.c的权限变为-rw-rw-rw-,这与键入如下命令目的相同:
chmod a=rw- main.c
chown(Change owner):设置文件所有者和文件关联组的命令
如果我现在想把main.c文件的文件所有者从Ubuntu更改为Debian,可以键入:
sudo chown Debian main.c
这样该文件的所有者就从Ubuntu变为了Debian,但是其文件所有的用户组依旧未变,要想更改成用户组名为Unix的用户组,可以键入:
sudo chown .Unix main.c
如果我想把main.c的文件所有者和文件所有用户组都进行更改,可以键入:
sudo chown "用户名"."用户组名" main.c
chown -R
:处理指定目录以及其子目录下的所有文件,意思是将其目录及目录的所有文件都进行文件所有者或文件所有用户组的更改,也就是递归