文章目录
由于绝大多数用户使用的是个人计算机,使用者一般都是被信任的人(如家人、朋友等)。在这种情况下,大家都可以使用管理员身份直接登录。但在服务器上就不是这种情况了,往往运行的数据越重要(如游戏数据),价值越高(如电子商城数据、银行数据),则服务器中对权限的设定就要越详细,用户的分级也要越明确。
和 Windows 系统不同,Linux 系统为每个文件都添加了很多的属性,最大的作用就是维护数据的安全。举个简单的例子,在你的 Linux 系统中,和系统服务相关的文件通常只有 root 用户才能读或写,就拿 /etc/shadow 这个文件来说,此文件记录了系统中所有用户的密码数据,非常重要,因此绝不能让任何人读取(否则密码数据会被窃取),只有 root 才可以有读取权限。
此外,如果你有一个软件开发团队,你希望团队中的每个人都可以使用某一些目录下的文件,而非团队的其他人则不予以开放。通过前面的学习我们知道,只需要将团队中的所有人加入新的群组,并赋予此群组读写目录的权限,即可实现要求。反之,如果你的目录权限没有设置好,就很难防止别有用心之人。
比如说,本来 root 用户才能做的开关机、新增或删除用户等命令,一旦允许任何人拥有这些权限,系统很可能会经常莫名其妙的挂掉。而且,万一 root 用户的密码被其他人获取,他们就可以登录你的系统,从事一些只有 root 用户才能执行的操作,这是绝不允许发生的。
因此,在服务器上,绝对不是所有的用户都使用 root 身份登录,而要根据不同的工作需要和职位需要,合理分配用户等级和权限等级(基于角色的访问控制)
一、Linux文件系统权限管理
Linux最优秀的地方之一就是多任务环境,为了让各个使用者具有较为安全的文件数据,因此文件的权限管理变得尤为重要
在LInux中一般将文件的可存取身份分为3类,分别是owner/group/others我们称为权限对象,且这三类身份都具有read/write/execute等权限,称为权限类型
(一)权限对象
1、文件拥有者
文件拥有者,我们也称为文件的属主,由于Linux系统是一个多任务多用户的系统,因此会有很多人来使用这部主机,为了考虑每个人的隐私,文件所有者这个权限就尤为重要。
2、群组
群组是权限中最有用的功能之一,群组简单理解就是用户组,类似于我们公司的各个部门之间,或者学校的班级之间的划分,每一个班级就是一个群组,群组内的资源是共享的,群组之间是相互隔离的。
3、其他人
对于非文件的拥有者,或者文件的所属组以外的人,称为其他人
(二)权限类型
ls -al可以列出文件的长属性
[dxk@admin ~]$ ll
总用量 4
drwxrwxr-x. 2 dxk dxk 6 7月 29 16:16 222
-rw-rw-r--. 1 dxk dxk 2006 7月 27 14:25 mod_passwd.sh
文件信息分为:文件类型、权限、链接数、所属用户、所属用户组、文件大小、最后修改时间、文件名,具体的可以见下图。

文件类型:
-
d:文件夹
-
-:普通文件
-
l:链接(类似Windows的快捷方式)
-
b:块设备文件(例如硬盘、光驱等)
-
p:管道文件
-
c:字符设备文件(例如猫等串口设备)
-
s:套接口文件/数据接口文件

Linux权限基于UGO模型进行控制;U代表User,G代表Group,O代表Other;每一个文件的权限基于UGO进行设置 Linux的基本权限分为读、写、执行(r、w、x),可用数字4、2、1来表示
权限位由9位组成,前3位表示文件拥有者的权限,中间3位表示文件所属用户组的权限,后3位表示其他用户的权限
属主:用户若是文件的主人,则匹配属主的权限,权限在文件的左三位,即第一个rwx
属组:用户与属组在同一个组,则匹配属组的权限,权限在文件的中三位,即第二个rwx
其他:用户既不是属主也不是属组,则匹配其他的权限,权限在文件的右三位,即第三个rwx
-:某一位置为空时显示-,表示不具备这个权限
比如:
drwxr-xr-x 2 root mail 4096 1月 12 03:44 account
表示文件夹account,root是他的所属拥有者,具有可读可写可执行的权限;mail是他的所属用户组,具有可读、可执行的权限,不具备可写的权限;其他用户针对这个文件夹具有可读、可执行的权限,不具备可写的权限
r、w、x权限说明
1.对于文件而言
| 权限 | 说明 |
|---|---|
| r | 可获取文件的数据 |
| w | 可修改文件数据 |
| x | 可以将此文件运行为进程 |
2.对于目录而言
| 权限 | 说明 |
|---|---|
| r | 可以使用ls命令获取其下的所有文件列表 |
| w | 可修改此目录下的文件列表;即创建或删除文件; |
| x | 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息 |
3.文件权限判断逻辑
①判断用户对文件的权限
前提条件:用户能够成功进入到文件所在的目录,即对操作的文件所在目录有x权限
例:这个test/目录,other即使有w权限(无x权限)不能在test/目录中删除、创建、修改文件
#删除文件:看用户是否具备对目录的w权限
(1)先判断用户是以什么身份删除文件,按照owner->group->other顺序进行匹配
(2)若是目录的属主,目录权限的左三位有w权限,删除文件成功,无w权限,删除失败
(3)若不是目录属主,但在目录的属组中,如果目录权限的中三位有w权限,则删除文件成功,无则失败
(4)若不是目录属主,也不在目录的属组中,如果目录权限的右三位有w权限,则删除文件成功,无则失败
#创建文件:和用户删除文件判断逻辑一致
#修改文件:看用户是否具备对修改的文件的w权限
(1)先判断用户是以什么身份修改文件,按照owner->group->other顺序进行匹配
(2)若是文件的属主,文件权限的左三位有w权限,修改文件成功,无w权限,修改失败
(3)若不是文件属主,但在文件的属组中,如果文件权限的中三位有w权限,则修改文件成功,无则失败
(4)若不是文件属主,也不在文件的属组中,如果文件权限的右三位有w权限,则修改文件成功,无则失败
②判断用户对目录的权限
前提条件:用户能够成功进入到目录所在的目录,即对操作的目录所在的目录有x权限
注:想要删除、创建、修改test/目录下的test/dir/目录,前提条件是对test/目录有x权限
#删除目录:看用户是否具备对上一级目录的w权限
(1)先判断用户是以什么身份删除文件,按照owner->group->other顺序进行匹配
(2)若是上一级目录的属主,上一级目录权限的左三位有w权限,删除目录成功,无w权限,删除失败
(3)若不是上一级目录属主,但在上一级目录的属组中,如果上一级目录权限的中三位有w权限,则删除目录成功,无则失败
(4)若不是上一级目录属主,也不在上一级目录的属组中,如果上一级目录权限的右三位有w权限,则删除目录成功,无则失败
#创建目录:和用户删除目录判断逻辑一致(包括改名、改时间戳)
#修改目录(在目录下创建、删除文件):看用户是否具备对修改的目录的w权限,与上一级目录是否有w权限无关
(1)先判断用户是以什么身份修改目录,按照owner->group->other顺序进行匹
(2)若是目录的属主,目录权限的左三位有w权限,修改目录成功,无w权限,修改失败
(3)若不是目录属主,但在目录的属组中,如果目录权限的中三位有w权限,则修改目录成功,无则失败
(4)若不是目录属主,也不在目录的属组中,如果目录权限的右三位有w权限,则修改目录成功,无则失败
二、权限管理命令
(一)chmod命令
修改文件或目录的权限
普通用户使用该命令修改文件权限的前提是该文件的所有者必须是自己,root用户不受限制
1.chmod命令使用数字修改文件权限
Linux 系统中,文件的基本权限由 9 个字符组成,以 rwxrw-r-x 为例,我们可以使用数字来代表各个权限,各个权限与数字的对应关系如下:
r --> 4
w --> 2
x --> 1
由于这 9 个字符分属 3 类用户,因此每种用户身份包含 3 个权限(r、w、x),通过将 3 个权限对应的数字累加,最终得到的值即可作为每种用户所具有的权限
拿 rwxrw-r-x 来说,所有者、所属组和其他人分别对应的权限值为:
所有者 = rwx = 4+2+1 = 7
所属组 = rw- = 4+2 = 6
其他人 = r-x = 4+1 = 5
所以,此权限对应的权限值就是 765。
使用数字修改文件权限的 chmod 命令基本格式: chmod [-R] 权限值 文件名
-R(注意是大写)选项表示连同子目录中的所有文件,也都修改设定的权限
【例 1】
任何人对该文件都具有读、写、执行权限
[dxk@admin ~]$ ls -al mod_passwd.sh
---x-w---x. 1 dxk dxk 2006 7月 27 14:25 mod_passwd.sh
[dxk@admin ~]$ chmod 777 mod_passwd.sh
[dxk@admin ~]$ ls -al mod_passwd.sh
-rwxrwxrwx. 1 dxk dxk 2006 7月 27 14:25 mod_passwd.sh
【例 2】
不让其他人查看和修改该文件
[dxk@admin ~]$ chmod 771 mod_passwd.sh
[dxk@admin ~]$ ls -al mod_passwd.sh
-rwxrwx--x. 1 dxk dxk 2006 7月 27 14:25 mod_passwd.sh
2.chmod命令MODE表示法修改文件权限
既然文件的基本权限就是 3 种用户身份(所有者、所属组和其他人)搭配 3 种权限(rwx),chmod 命令中用 u、g、o 分别代表 3 种身份,还用 a 表示全部的身份(all 的缩写)。另外,chmod 命令仍使用 r、w、x 分别表示读、写、执行权限。
基本格式:

①赋权表示法:直接操作一类用户的所有权限位rwx
u=
g=
o=
a=
赋权表示法会将指定的用户身份的之前的权限直接覆盖为等号右边所指定的权限,以前的权限便不存在
【例 1】
-rwxrwx--x. 1 dxk dxk 2006 7月 27 14:25 mod_passwd.sh
[dxk@admin ~]$ chmod u=r mod_passwd.sh #修改属主只有读权限
[dxk@admin ~]$ ls -al mod_passwd.sh
-r--rwx--x. 1 dxk dxk 2006 7月 27 14:25 mod_passwd.sh
[dxk@admin ~]$ chmod g=w mod_passwd.sh #修改属组只有写权限
[dxk@admin ~]$ ls -al mod_passwd.sh
-r---w---x. 1 dxk dxk 2006 7月 27 14:25 mod_passwd.sh
[dxk@admin ~]$ chmod o=w mod_passwd.sh #修改取他人只有写权限
[dxk@admin ~]$ ls -al mod_passwd.sh
-r---w--w-. 1 dxk dxk 2006 7月 27 14:25 mod_passwd.sh
[dxk@admin ~]$ chmod a=w mod_passwd.sh #修改所有人都只有执行权限
[dxk@admin ~]$ ls -al mod_passwd.sh
--w--w--w-. 1 dxk dxk 2006 7月 27 14:25 mod_passwd.sh
【例 2】
[dxk@admin ~]$ chmod u=rw,g=x,o=r mod_passwd.sh #属主具有读写权限,属组具有写权限,其他人具有读权限
[dxk@admin ~]$ ls -al mod_passwd.sh
-rw---xr--. 1 dxk dxk 2006 7月 27 14:25 mod_passwd.sh
②授权表示法:直接操作一类用户的一个权限位r,w,x
u+, u-
g+, g-
o+, o-
【例 1】
-rw---xr--. 1 dxk dxk 2006 7月 27 14:25 mod_passwd.sh
[dxk@admin ~]$ chmod u+x mod_passwd.sh #给属主增加写权限
[dxk@admin ~]$ ls -al mod_passwd.sh
-rwx--xr--. 1 dxk dxk 2006 7月 27 14:25 mod_passwd.sh
[dxk@admin ~]$ chmod g+r,o+w mod_passwd.sh #属组增加读权限,其他人增加写权限
[dxk@admin ~]$ ls -al mod_passwd.sh
-rwxr-xrw-. 1 dxk dxk 2006 7月 27 14:25 mod_passwd.sh
[dxk@admin ~]$ chmod u-wx,g-x,o-w mod_passwd.sh #属主去掉写、执行权限;属组去掉执行权限;其他人去掉执行权
Linux文件系统通过UGO模型细致控制权限,包括属主、属组和其他人的读写执行权限。权限管理涉及chmod、chown等命令,其中chmod使用数字或符号修改文件权限,chown改变文件所有者和组。文章还介绍了进程安全上下文、基本权限ACL以及SUID、SGID等特殊权限的概念和应用,强调了权限管理在系统安全中的重要性。
最低0.47元/天 解锁文章

793

被折叠的 条评论
为什么被折叠?



