【Linux】用户和权限
迪丽瓦拉
2025-05-30 23:08:35
0

目录

1. 用户

1.1 su命令

1.2 sudo命令

2. 用户、用户组管理

2.1 用户、用户组

2.2 用户组管理

2.3 用户管理

2.4 getent命令

2.4.1 查看当前系统中有哪些用户

2.4.2 查看当前系统中有哪些用户组

3. 查看文件权限

3.1 文件访问者

3.2 文件类型和权限

3.2.1 文件类型

3.2.2 权限

4. 查看/修改文件属性

4.1 chmod命令

4.2 chown命令

4.3 chgrp命令

4.4 umask命令

4.5 file命令

5. 目录的权限

5.1 粘滞位


1. 用户

Linux下有两种用户:

  • root用户(超级管理员)[命令提示符:#]
  • 普通用户[命令提示符:$]

root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的。

普通用户的权限,一般在其家目录内是不受限的。一旦出了家目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。

1.1 su命令

全称:switch user

语法:

su [-] [用户名]

功能:切换用户

-符号是可选的,表示是否在切换用户后加载环境变量,建议带上。

用户名:表示要切换的用户,用户名也可以省略,省略表示切换到root。

切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:Ctrl + D

使用普通用户,切换到其它用户需要输入密码;使用root用户切换到其它用户,无需密码,可以直接切换。

1.2 sudo命令

全称:super user do

语法:

sudo 其他命令

功能:为普通的命令授权,临时以root身份执行

在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权。但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证。

2. 用户、用户组管理

2.1 用户、用户组

Linux系统中可以:

  • 配置多个用户
  • 配置多个用户组
  • 用户可以加入多个用户组中

Linux中关于权限的管控级别有2个级别,分别是:

  • 针对用户的权限控制
  • 针对用户组的权限控制

比如,针对某文件,可以控制用户的权限,也可以控制用户组的权限。

2.2 用户组管理

以下命令需root用户执行。

创建用户组:

groupadd 用户组名

删除用户组:

groupdel 用户组名

2.3 用户管理

以下命令需root用户执行。

创建用户:

useradd [-gd] 用户名

  • -g 指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
  • -d 指定用户HOME路径,不指定,HOME目录默认在:/home/用户名

删除用户:

userdel [-r] 用户名

  • -r 删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留

查看用户所属组:

id [用户名]

  • 如果不提供用户名,则查看自身

修改用户所属组:

usermod -aG 用户组 用户名

  • 将指定用户加入指定用户组

2.4 getent命令

全称:get entries

功能:查看系统数据库中的记录信息

2.4.1 查看当前系统中有哪些用户

语法:

getent passwd

2.4.2 查看当前系统中有哪些用户组

语法:

getent group

3. 查看文件权限

3.1 文件访问者

  • 所有者 u(User)
  • 所属组 g(Group)
  • 其他用户 o(Other)

3.2 文件类型和权限

3.2.1 文件类型

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

3.2.2 权限

基本权限:

  • r 读,权限值为4
  • w 写,权限值为2
  • x 执行,权限值为1

权限值:

  • 0 ---
  • 1 --x
  • 2 -w-
  • 3 -wx
  • 4 r--
  • 5 r-x
  • 6 rw-
  • 7 rwx

文件的权限由9位表示,1-3位表示所有者权限,4-6位表示所属组权限,7-9位表示其他人权限。

上图dir1的所有者权限是:可读可写可执行;所属组权限是:可读可写可执行;其他人权限是:可读可执行但不可写;权限值为7。

4. 查看/修改文件属性

4.1 chmod命令

全称:change mode

语法:

chmod [选项] 模式 目录或文件

功能:修改权限(只有所有者和root才可以改变权限)

常用选项:

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

模式:

  • 文字设定法:[ugoa][+-=][rwx]
  • 数字设定法:01234567

其中,文字设定法:

  • u 所有者,g 所属组,o 其他用户,a 所有用户
  • + 增加权限,- 取消权限,= 赋予特定权限并取消其他权限
  • r 读,w 写,x 执行

4.2 chown命令

全称:change owner

语法:

chown [选项] [所有者][:][所属组] 目录或文件

功能:修改所有者或所属组

常用选项:

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

4.3 chgrp命令

全称:change group

语法:

chown [选项] 所属组 目录或文件

功能:修改所属组

常用选项:

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

4.4 umask命令

全称:user's mask

语法:

umask [选项] [权限掩码]

功能:查看或修改权限掩码

常用选项:

  • -S 以文字的方式来表示权限掩码

如果没有文件掩码,文件的默认访问权限为rw-rw-rw-(666),目录的默认权限为rwxrwxrwx(777)。权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。root用户默认文件掩码为022,普通用户默认文件掩码为002。

0002

0:暂时不看

0:所有者文件掩码

0:所属组文件掩码

2:其他用户文件掩码

目录的权限:777-002=775(rwxrwxr-x)

文件的权限:666-002=664(rw-rw-r--)

4.5 file命令

语法:

file [选项] 目录或文件

功能:辨识文件类型

常用选项:

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

5. 目录的权限

  • 可执行权限:如果目录没有可执行权限,则无法cd到目录中
  • 可读权限:如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容
  • 可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件

只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限。为了解决这个不科学的问题,Linux引入了粘滞位的概念。

5.1 粘滞位

粘滞位只能对目录设置,设置了粘滞位后,只有目录内文件的所有者或者root用户才可以删除或移动该文件。

一个目录具有粘滞位,则在other的x位会表现为t或T:

  • 原来x位上有x权限,有了粘滞位表现为t
  • 原来x位上没有x权限,有了粘滞位表现为T

设置粘滞位:

chmod o+t 目录 或  chmod +t 目录

删除粘滞位:

chmod o-t 目录  或  chmod -t 目录

相关内容