【Linux】权限

发布于:2025-06-27 ⋅ 阅读:(15) ⋅ 点赞:(0)

Linux用户的分类和切换 

Linux下有两种用户:超级用户(root)、普通用户。

超级用户:可以在linux系统下做任何事情,不受权限限制
普通用户:(通过 adduser 添加的用户)在linux下做有限的事情。
超级用户的命令行提示符是 “#” ,普通用户的命令行提示符是 “$” 。

用户身份的切换

命令:su [选项][用户名] 
功能:切换用户。
例如,要从root用户可以随意切换到任意普通用户 user,使用 su user。 要从普通用户 user 切换到 root 用户则使用 su root(root可以省略),此时系统会提示输入 root 用户的密码。普通用户 user 切换到另一普通用户,使用 su user,此时系统会提示输入另一普通用户的密码

常用选项:

- 以登陆的方式来切换用户(切换用户后处于用户的家目录)

Ctrl + D :退回到切换前的用户

指令的暂时提权

使用 sudo 指令对普通用户的指令暂时提权

使用 adduser 新建的用户,系统默认不信任,没有办法执行 sudo 指令,除非将该用户添加到系统信任的白名单中。

Linux权限的概念

什么是权限

一件事情是否允许被你做

1、权限认证的是身份(权限和“人”有关)

在文件眼中,人的身份分为三种:拥有者、所属组、其他人(这些身份可以由 root 用户、普通用户来“扮演”)

即:root 用户可以是文件的拥有者、所属组、其他人,普通用户也可以是文件的拥有者、所属组、其他人。但是 root 用户不管是文件的拥有者、所属组、还是其他人,都无视权限限制。

Linux权限管理

1.文件访问者的分类

上文已经说明:

文件和文件目录的所有者:u---User
文件和文件目录的所有者所在的组的用户:g---Group
其它用户:o---Others 

2.文件类型和访问权限

在用 ll 指令列出文件的详细信息后,会看到以下下字符:

其中,第一个字符表示文件的类型 

d:目录
-:普通文件(文本、可执行程序、库等等)
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘文件、光驱等)
p:管道文件(用来进行通信的)
c:字符设备文件(例如显示器、键盘(/dev/tty)等设备)
s:套接口文件

文件名后缀的意义

在 Linux 系统中,文件名后缀(比如.c、.txt、.exe等等)没有直接的意义,比如即使将一个以 .exe 结尾的可执行程序命名为 file ,使用 ./file 依然可以运行该程序。

但是,对于在 Linux 上运行的软件(比如 gcc 编译器), 文件名后缀(比如.c、.txt、.exe等等)就有直接的意义。( gcc 不能编译 .txt 的文本文件)

第 2 到 9 共九个字符三三为一组,分别表示拥有者、所属组、其他人对于该文件的权限

文件权限值的表示方法

a)字符表示方法

b)8进制数值表示方法

以 drwxr-xr-x 2 root root 4096 Jan 12 03:44 account 为例:

其中,文件大小以字节为单位。上图中,文件的拥有者和所属组都标明了,哪文件访问者的其他人呢?其他人是在用户访问文件时才确定的,当用户访问一个文件时,系统识别用户是否是文件的拥有者或所属组,如果都不是,那就是其他人。 

如果做出超出本用户所拥有的权限以外的请求,会被系统驳回(Permisson denied)

文件的访问者只能是拥有者、所属组、其他人三种身份中的一个。即使是文件的拥有者,也不是文件的所属组,如果所属组拥有对文件写的权限,而拥有者没有,那么拥有者也不能编写文件。

目录的权限

1、可执行权限: 如果目录没有可执行权限, 则无法 cd 到目录中但可以 ls 目录.这也决定了一个文件是否能被删除,如果一个目录的可执行权限对其他人开放,即使其他人不具有该目录下的某文件的读写权限,其他人仍然可以删除该文件。

2、可读权限: 如果目录没有可读权限, 可以cd到目录中但无法用ls等命令查看目录中的文件内容.

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

4、粘滞位(特殊的 x 权限):(共享目录)如果一个目录具有该权限,那么其他人可以在该目录下创建、删除自己的文件,但不能删除其他人创建的文件。

3修改文件权限

chmod 指令

功能:设置文件的访问权限
格式:chmod [用户字符表示+或-权限字符表示] [用户字符表示+或-权限字符表示] 文件名

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

常用选项:

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

用户字符表示:   
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户(如果 chmod 指令后面的用户字符表示没有,表示所有用户)


+:增加权限
-:取消权限
=:赋予权限

chmod 指令后面的用户字符表示没有,表示所有用户:

使用三位8进制数值表示权限:

chown 指令

功能:修改文件的拥有者
格式:chown [参数] 新拥有者 [ : 新用户组名] 名 文件名

说明:将文件给他人要征得他人的同意,可以使用 sudo 强制将文件给他人。该指令可以将文件的拥有者和所属组一次性修改。

chgrp 指令

功能:修改文件或目录的所属组
格式:chgrp [参数] 新用户组名 文件名

常用选项:-R 递归修改文件或目录的所属组

4.文件的默认权限

创建一个文件时,观察它的权限:

为什么目录的默认权限是 rwxrwxr-x(8进制数值表示方法:775),普通文件是 rw-rw-r-- (8进制数值表示方法:664)?实际上,目录的默认权限是 777,普通文件的默认权限是 666,但要经过权限掩码的作用

权限掩码

0002:开头 0 表示八进制数,002 是二进制 000 000 010,凡是在 umask 出现的权限,不会在最终的文件权限中出现。 

以普通文件为例:

普通文件的默认权限是 rw-rw- rw- (110 110 110),umask 不允许其他人的 w(写)权限出现在默认权限中,所以普通文件的默认权限是 rw-rw-r--。

修改权限掩码

只需要在 umask 指令后跟新的权限掩码即可:

权限掩码是如何作用的

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


网站公告

今日签到

点亮在社区的每一天
去签到