在Linux系统中,每个文件都有一个所有者和一个用户组。此外,系统还定义了一个“其他人”分类。
文件的所有者通常是创建该文件的用户,而用户组则是在创建该文件时指定的。如果没有指定,则默认为创建用户的主用户组。用户组可以在文件创建时指定,也可以在文件创建后通过chgrp命令来修改。
其他人:指的是除了所有者和用户组之外的其他用户,有的地方对于“其他人”也叫“公共”。
提问:上面提到的“创建用户的主用户组”是什么意思?
答:在Linux系统中,每个用户都有一个主用户组。每个用户账号都有一个用户ID(UID)和一个用户组ID(GID)。
当创建一个新用户时,系统会要求你指定该用户所属的主用户组。这个主用户组会在创建用户时被自动创建。
在Linux系统中,组(group)是多个用户的集合。在系统中创建组后,可以将用户添加到该组中。这样,所有属于该组的用户都会继承该组的权限。一个用户可以属于多个组,但只能有一个主用户组。
通常情况下,一个用户的主用户组的名称与其用户名相同,但这不是必须的。在创建用户时,可以使用-g选项指定该用户的主用户组。例如,使用以下命令创建一个名为myuser的用户,并将其主用户组设置为mygroup:
sudo useradd -g mygroup myuser
这会创建一个名为myuser的新用户,并将其添加到mygroup组中,同时设置mygroup组为myuser的主用户组。如果未指定-g选项,则默认使用与用户名相同的组作为主用户组。
由于每个文件都有所有者、用户组和其他人三个身份属性,那么其文件权限便被分为三种身份。
1 所有者的权限;
2 用户组的权限;
3 其他人的权限,也称“其他人”叫“公共”。
如下图所示:
从上面的截图中我们可以看出,每一种身份的权限有三个,分别为“读取、写入、执行”,我们可以用数字来表示权限允许情况,也可以用字母来表示权限允许情况。
先说用数字表示权限允许的情况:
每一种身份的权限用三个二进制位表示,如果该种权限被允许,则值为1,否则值为0。
上面截图中,文件所有者的权限为二进制值“111”,对应于十进制中的数字7;
上面截图中,文件用户组的权限为二进制值“101”,对应于十进制中的数字5;
上面截图中,公用用户组(别的用户组)的权限为二进制值“100”,对应于十进制中的数字4;
所以最终这个文件的权限值为:754
再说字母来表示权限允许的情况:
三种权限,即读取权限、写入权限、执行权限,分别用字母 r、w、x 表示。
如果没有该种权限,则用符号“-”表示。
比如上面的754权限用字母可以表示为:
rwxr-xr--
可以用命令“chmod”来改变文件的权限设置,“chmod”是“chage mode”的缩写,以下是一些示例:
chmod +x /opt/python_scripts/your_code.py
上面的命令将为所有用户(包括所有者、所属组和其他用户)添加可执行权限。其中符号“+”表示添加权限,字母“x”表示可执行权限,所以“+x”表示添加可执行权限。
如果只想给所有者添加可执行权限,可以使用命令:
chmod u+x /opt/python_scripts/your_code.py
其中,符号“u”表示用户(即文件所有者),字母“x”表示可执行权限,所以“u+x”表示为用户添加可执行权限。
如果我想使用数字的形式改变权限呢?该怎么写chmod语句。比如我想将文件your_code.py的权限调整为755,该怎么做?
要使用数字形式改变文件权限,可以使用命令:
chmod 755 /opt/python_scripts/your_code.py
关于数字755的含义,上面已经有介绍,这里就不再赘述。