作者:MiTu_-_
本帖内容著作权归作者所有,转载请务必保留本文链接
Linux 的组管理和权限管理
在上一帖 13 Linux 的用户管理 中已经详细地讲了用户管理,顺便也渗透了一些组管理的内容(学习本帖前,需要先对用户管理有一定的认识)。本帖就来详细介绍 组管理和权限管理 的相关内容。
1. 组管理和文件归属
Linux 是多用户多任务操作系统,所有的文件皆有其所有者(Owner)、所在组(group)和其他组的概念了。
我举个栗子吧:你有一本漫画,漫画的所有者就是你自己;如果你愿意和同班共享,那么所在组是你自己的班级,你可以赋予所在组(同班同学)一定权限,如可读不可写权限;如果你还愿意与外班共享,那么外班就是其他组了,你也可以赋予其他组(外班同学)一定权限,如可读不可写。
我现在是用户 xioamin,并创建了一个 1.txt 文件。使用命令
ls -ahl (any human list):查询文件归属。就可以看到文件的所有者和所在组了。
ls -ahl
-a(all):所有文件,可以显示隐藏文件。
-h(human):显示人可读出的文件大小。小于 1KB 以 B 显示;小于 1G 以 KB 显示。
-l(list):以长列表显示。
a. 所有者
1)chown(change owner):修改文件所有者(所有者改变,所在组不变)(以下指令都需要在自己目录下才可执行,如 /home/xiaomin,学完本帖便可以知道为此道理了,请学完后再回来理解这句意思)。
chown 用户名 文件名
例:chown Tom 1.txt
b. 所在组
1)groupadd:添加组。
groupadd 组名
例:groupadd student
2)useradd -g:添加用户时直接加入组中。(之后要 passwd 指定密码)
useradd -g 组名 用户名
例:useradd -g student xiaomin
3)chgrp:修改文件所在组。
chgrp 组名 文件名
例:chgrp teacher 1.txt
4)usermod:修改用户所在组或登录的初始目录。
usermod -g 组名 用户名
例:usermod -g teacher xioamin
usermod -d 目录名 用户名(改变改用户登录的初始目录)
c. 其他组
除文件所在组的其他附加组。
2. 权限管理
1)ls -l / ll 指令基本介绍
之前我们讲的指令 ls -l(或 ll)中,它会列出很多内容,其中就包括权限的情况,我们来深入了解这个指令。
1)ls -l(或 ll):列出当前目录文件详细信息。
结果:①文件类型 ②所有者权限 ③所在组权限 ④其他组权限 ⑤硬链接数 ⑥所有者 ⑦所在组 ⑧文件或目录大小 ⑨最后修改时间 ⑩文件名
rwx 权限详解
rwx 作用于不同文件类型产生的效果是不同的:
1)作用到文件:
- [ r ]:代表可读。
- [ w ]:代表可写:可以修改,但不代表可以删除文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才可以删除该文件。
- [ x ]:代表可执行:可以被执行。
2)作用到目录:
- [ r ]:代表可读。
- [ w ]:代表可写:可以修改(创建、删除、重命名)。
- [ x ]:可以执行:可以进入该目录。
rwx 还可以用数字来表示:r = 4,w = 2,x = 1,因此 rwx = 4+2+1 = 7.
具体了解更详细的 ls -l / ll 指令可以跳转此贴:ls -l / ll 指令详解。
2)权限管理
1)chmod(change file mode bits):修改文件或者目录的权限。
chmod 权限 文件或目录名
第一种方式:+ - = 改变权限
u(user):所有者 g(group):所在组 o(other):其他组 a(all):所有人(u、g、o 的总和)
例:
chmod u=rwx,g=rx,o=r 文件或目录名(文件所有者有读、写、执行权限;所在组用户有读、执行权限;其他组成员有读权限)
chmod o+w 文件或目录名(其他组用户可以有写权限)
chmod a-x 文件或目录名(文件的所有用户都无可执行权限)
第二种方式:通过数字改变权限,顺序为 u g o(二进制权 000 001(x) 010(w) 011 100(r ) 101 110 111)
r = 4 w = 2 x = 1 rwx = 4+2+1 = 7
例:
chmod 751 文件或目录名(相当于 rwxr-x–x )
下面的指令虽然在上面讲过了,但是在了解了之前的内容后,再来看,就会印象更深刻了。
2)chown(change owner):修改文件所有者 (+ 所在组)。
chown 用户名 文件或目录名
chown 用户名:所在组 文件或目录名
-R:如果是目录,则使其下所有子文件或目录递归生效
例:
chown xiaomin:student 1(将文件1 的所有者和所在组分别改为 xiaomin student)
chown -R xiaomin 1(将目录1 和 1下的所有文件的所有者改为 xioamin,所在组不变)
3)chgrp(change group):修改文件所所在组。
chown 所在组 文件或目录名
例:chgrp -R teacher 1(将目录1 和 1下的所有文件的所在组改为 teacher)
3.案例
1)有两个组:Class1、Class2
Class1 组里有Xiaomin 和 Xiaohon;Class2 组里有 Tom。老师是 root 用户。
2)Xiaomin 创建了一个文件 test.txt,权限为 rw-rw-r–
所以只有 Xiaomin 和 Xiaohon 可以对 test.txt 读写,而 Tom 只能读。但是Xiaohon 和 Tom 没有读Xiaomin 目录的权限,所以也就不知道 Xiaomin 里有 1.txt 这么个文件。
3)老师(root)将 Xiaomin 目录对本班用户开放可读可执行(x 是可以进入到 Xiaomin 目录,r 是可以读 Xiaomin 目录里的内容)。这时小红就可以进到 Xioamin 目录了。
4)Tom 想要也能写 1.txt 文件
此时有三种方法:
①Xiaomin 把 1.txt 文件给其他组写权限,Xiaomin 告诉 Tom 有1.txt 这么个文件
②但这样风险较大,Xiaomin 不想让 Classn 的成员听到这个消息,他让老师(root)将 Tom 修改到 Class1 组里。
这时要把 Tom 用户重新登录才可进 xiaomin 目录里。
③老师(root)把 Xiaomin 目录给其他组读和执行权限,并且 Xiaomin 把 1.txt 给其他组写权限。风险也大,Classn 组成员可能改动内容。
学完本帖请回到开头红色字体理解那句话的含义!!!相信你一定会大有收获 QoQ~~