0


【Linux】用户分类+权限管理+umask+粘滞位说明


我们对权限并不陌生,权限代表着限制。对于某些用户做一些事情是可以的,但其他人却不行。

同样的,在Linux中也存在着权限的概念。既然是限制,那就得针对用户身份,所以Linux中,对于用户身份也有着分类。

1.用户分类

Linux下有两种用户:

超级用户(root):可以再linux系统下做任何事情,不受限制;

普通用户:在linux下做有限的事情。

其中,超级用户只能有一个,而普通用户可以有很多个。如何添加普通用户我之前已经提到过这里就不作赘述,链接:如何添加普通用户。

su指令

功能:用来切换用户身份;(例如,有些时候,作为普通用户没有权限做某些事,可以临时切换为root身份)

语法:su + [用户名字] (su root 此时root可以省略);

2.认识Linux权限

当我们用 ll(等于ls -l)显示文件的详细信息时:

我们并不知道红色方框中的内容代表什么意思,但是有些能大概猜出来。例如,7 表示的是文件名;6 代表的是文件创建时间;5 代表文件的大小(单位:字节)。

至于其他的内容我们并不清楚,接下来的内容就是认识它们。

2.1 文件访问者的分类

当我们要访问某个文件时,我们的身份又有了重新的划分:

文件和文件目录的所有者:u---User;

文件和文件目录的所有者所在的组的用户:g---Group;

其它用户:o---Others ;

对于不同身份的文件访问者,都有各自的权限;

2.2 文件类型和访问权限

我们之前看到的第 1 个红框中,有这些符号:

其中第一列代表的是文件类型,其余的代表访问权限。

a. 文件类型

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

file指令

功能:查看文件类型;

语法: file [选项] 目标文件或目录;

常用选项:

-c :详细显示指令执行过程,便于排错或分析程序执行的情形;
-z :尝试去解读压缩文件的内容;

实际上Linux系统并不会识别你自己取得文件后缀(例如 test.txt 和t est.c),在系统眼中,它们都是普通文件。但是系统不关心并不代表某些软件不关心(例如不能用gcc编译 .txt文件),所以文件后缀一般还是不要省略。

b. 访问权限

除了第一列,剩下得每 3 个为一组,分为三组。

第一组表示文件和文件目录的所有者(user)的权限;

第二组表示文件和文件目录的所有者所在的组的用户(group)的权限;

第三组表示其他用户(other)的权限。

2.3 文件权值的表示方法

a. 字母表示法

b. 八进制表示法

3.如何修改文件访问者的权限及相关指令

1. chmod指令

功能:设置文件的访问权限;

语法:chmod [选项] 目标文件;

常用选项:

-R :递归修改目录文件的权限

说明:只有文件的拥有者和root才可以改变文件的权限。

chmod指令的不同格式:

① 用户表示符+/-权限字符

+:向权限范围增加权限代号所表示的权限;
-:向权限范围取消权限代号所表示的权限;
=:向权限范围赋予权限代号所表示的权限;
用户符号:
u:拥有者
g:拥有者同组用户
o:其它用户
a:所有用户

示例:

chmod u+r test.txt
chmod u-w test.txt
chmod u+r,u+w,o+x test.txt
chmod a+r test.txt
chmod a-w test.txt

②三位8进制数字

示例:

chmod 000 test.txt
chmod 777 test.txt
chmod 667 test.txt

2. chown指令

功能:修改文件的拥有者;

语法: chown [选项] username 目标文件 ;

常用选项:

-R :递归修改目录文件的拥有者

示例:

chown root test.txt
chown -R hxy mydir

3. chgrp指令

功能:修改文件或目录的所属组;

语法: chgrp [选项] 用户所属组名 目标文件 ;

常用选项:

-R :递归修改目录文件的所属组

示例:

chgrp root test.txt
chgrp -R hxy mydir

4.权限掩码与umask指令

文件的权限生成其实是有一个过程的,有这样一个问题,为什么我们创建一个新文件时,它的权限是我们看到的那个样子?我们能修改这个默认的权限吗?

我们最终所看到的权限就是默认权限也叫最终权限,它的生成经过这样的过程:

最终权限 = 起始权限 & (~umask) (umask为权限掩码)。

起始权限:系统设定的,及文件一出生系统认为应该带有的权限。普通文件:666;目录文件:777。

权限掩码:三位八进制数字,用来控制最终权限的生成。

umask指令

功能:查看或修改文件掩码;

语法: umask 权限值 ;

示例:

4.目录的权限

可执行权限 x :如果目录没有可执行权限,则无法cd到目录中;

可读权限 r :如果目录没有可读权限, 则无法用 ls 等命令查看目录中的文件内容;

可写权限 w :如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件。

有个疑问:故事如下:

在公司里,张三和李四共同掌管一个共享目录。该共享目录由老板 root 创建,且对于other有rwx权限(意味着谁都可以在共享目录创建或删除文件)。

张三在共享目录下创建了一个文件,对other的权限只开放了 r 与 x;意味着李四只能读文件而不能修改内容。但是李四心生歹意,你不让我写。我就删掉你的文件。结果该文件被删除,对张三乃至公司造成了极大的损失...

那么有什么办法能限制其他人不能在共享目录删除我的文件呢?

答案是,当然有,就是给共享目录添加粘滞位。

粘滞位

添加方法:

chmod +t 目标文件

当一个目录被设置为"粘滞位",则该目录下的文件只能由

▶ 超级管理员删除;

▶ 该目录的所有者删除;

▶ 该文件的所有者删除。

本章完!

标签: linux 运维 服务器

本文转载自: https://blog.csdn.net/gllll_yu/article/details/129110945
版权归原作者 花想云 所有, 如有侵权,请联系我们删除。

“【Linux】用户分类+权限管理+umask+粘滞位说明”的评论:

还没有评论