1.关于所有者、群组和其他人
在Linux系统中,每个文件都具有User、Group和Others三种身份的权限配置。那这三种身份分别表示什么意思呢?配置这三种身份的权限有啥意义呢?
(1)文件所有者(User)
由于Linux系统支持多人多任务,因此常常存在多个用户同时使用一个Linux系统的情况。那么,如何确认每个用户私密文件的访问控制呢?这就是文件所有者存在的原因。
Linux系统为每个用户提供一个用户主目录,用户的主目录为/home/<username>。例如,下图的/home/lienhua34是我的主目录,该目录下只有我能够添加文件和删除文件,其他人可以浏览,但是能不能查看我的文件内容就依具体的文件权限了。
每个Linux用户创建的文件的所有者都是自己。如果我有一个私密的文件,我当然不希望别人能够看到,于是我就这个文件放到我的主目录下,然后将文件的权限设置成只有文件所有者(即我自己)能够查看和修改。就算其他用户知道我有这个文件,但他还是不能查看、修改和删除。
(2)群组(Group)
试想这样子一个场景:你在一个团队中,团队中的每个成员都在同一台Linux机器上进行工作,该Linux机器的某个目录下存放你们团队的工作文档,团队中的每个成员都应该对这份文件具有查看和修改操作,同时又不希望这台机器上该团队之外的用户具有访问权限,那我们如何实现这种权限控制呢?这就需要用到群组的概念。
我们可以在Linux系统中为该团队建立一个群组,将该团队的所有成员添加到该群组中。然后将属于这个团队的文件所属群组设置为该群组,然后将文件的群组权限设置为可读写,于是该群组所有成员便都可以查看和修改,而不属于该群组的用户便没有这个权限。
(3)其他人(Others)
不属于文件所有者或文件所属群组成员的用户,便都是其他人。
当然,有个比较特殊的超级用户,即root。该用户可以访问Linux机器上的所有文件。
更详细的介绍可以参考鸟哥Linux私房菜:使用者和群组
2.修改所有者和群组
我们通过ls -l可以查看文件的属性,如下图所示,
其中,第3和第4列分别表示文件的所有者(lienhua34)和所属群组(lienhua34)。我们可以通过chown和chgrp分别来修改文件的所有者和所属群组。
(1)修改文件所属群组chgrp
chgrp即为change group的缩写。命令chgrp的用法如下,
chgrp [-R] GROUP FILE
要修改的群组名GROUP必须是一个已存在的群组,其中-R选项是否递归修改目录下的所有文件和子目录的所属群组。例如,下面修改了文件filea的所属群组为root,
lienhua34@test$ sudo chgrp root filea [sudo] password for lienhua34: lienhua34@test$ ls -l total 4 -rw-r--r-- 1 lienhua34 root 0 Dec 12 18:38 filea drwxr-xr-x 2 lienhua34 lienhua34 4096 Dec 12 18:38 subdir lienhua34@test$
(2)修改文件所有者chown
chown即为change owner的缩写。命令chown的简单用法如下所示,
chown [-R] OWNER[:[GROUP]] FILE
命令chown除了能够修改文件所有者,也能够同时修改文件的所属群组(通过在所有者后面紧着冒号(:)和群组名)。
样例:
将文件filea的所有者修改为root,
lienhua34@test$ sudo chown root filea lienhua34@test$ ls -l total 4 -rw-r--r-- 1 root root 0 Dec 12 18:38 filea drwxr-xr-x 2 lienhua34 lienhua34 4096 Dec 12 18:38 subdir
同时将文件filea的所有者修改为lienhua34以及所属群组修改为lienhua34,
lienhua34@test$ sudo chown lienhua34:lienhua34 filea lienhua34@test$ ls -l total 4 -rw-r--r-- 1 lienhua34 lienhua34 0 Dec 12 18:38 filea drwxr-xr-x 2 lienhua34 lienhua34 4096 Dec 12 18:38 subdir
(done)