Linux系统权限掌控

权限管理概述

无论是 Windows、macOS 还是 Linux,都采用多用户管理模式进行权限控制。

  • root 用户:Linux 系统中的超级管理员,拥有最高系统操作权限。
  • 普通用户:权限受限,一般只在自家的 HOME 目录(/home/用户名)下拥有完整权限;出了 HOME 目录,大多只有只读和执行权限,无法随意修改系统文件。

用户切换

su 命令(Switch User)

用于在用户之间切换。

语法:su [-] [用户名]
  • - 符号:可选,建议带上,表示切换用户的同时加载目标用户的环境变量。
  • 用户名:可选,省略则默认切换到 root 用户。
  • 切换后,可用 exit 命令或 Ctrl + D 退回上一个用户。

注意

  • 普通用户切换到其他用户(包括 root)需要输入目标用户密码。

  • root 用户切换到任何用户都无需密码


临时提权:sudo

sudo 命令允许普通用户临时以 root 身份执行特定命令。

语法:sudo 其他命令
  • 并不是所有用户都能使用 sudo,需要提前配置。

为普通用户配置 sudo 权限

  1. 切换到 root 用户。

  2. 执行 visudo 命令(自动用 vi 编辑器打开 /etc/sudoers 文件)。

  3. 在文件末尾添加一行:

    用户名 ALL=(ALL) NOPASSWD:ALL
    
    • NOPASSWD:ALL 表示使用 sudo 时无需输入密码(可选,也可不加)。
  4. 保存退出(:wq)。

  5. 切换回普通用户,此后该用户执行的命令前加 sudo 即可获得 root 权限执行命令。


用户与用户组管理

Linux 中权限管控分为两个级别:

  • 用户级别:针对特定用户的权限。
  • 用户组级别:针对用户组的权限,组内所有用户继承组权限。

一个用户可以加入多个用户组。

image-20230329190458305

用户组管理命令(需 root 执行)

命令 作用
groupadd 组名 创建用户组
groupdel 组名 删除用户组

用户管理命令(需 root 执行)

命令 作用
useradd [-g 组名] [-d 路径] 用户名 创建用户。 -g:指定用户主组(组必须已存在);不指定则创建同名组并加入。 -d:指定 HOME 目录路径;默认 /home/用户名
userdel [-r] 用户名 删除用户。 -r:同时删除用户的 HOME 目录。
id 用户名 查看用户所属组信息。
usermod -aG 组名 用户名 将用户添加到指定附加组(-aG 表示追加到组)。

权限信息解读

使用 ls -l 查看文件或文件夹时,第一列(如 drwxr-xr-x)表示权限信息,共 10 个字符

image-20230331105230091

位置 含义
第1位 文件类型- 表示普通文件,d 表示目录,l 表示符号链接等。
第2-4位 所属用户(owner)权限:依次为 r(读)、w(写)、x(执行)。
第5-7位 所属组(group)权限:同上。
第8-10位 其他用户(other)权限:同上。

权限字母含义(针对文件和目录略有不同):

权限 对文件的作用 对目录的作用
r 读取文件内容(如 cat 查看目录内容(如 ls
w 修改文件内容 在目录内创建、删除、重命名文件或子目录
x 将文件作为程序执行 进入目录(如 cd),或对该目录下的文件进行访问(取决于文件自身权限)

示例drwxr-xr-x

  • 类型:d(目录)
  • 所属用户:rwx(可读、写、进入)
  • 所属组:r-x(可读、进入,不可写)
  • 其他用户:r-x(可读、进入,不可写)

修改权限控制

注意:只有文件/文件夹的所属用户或 root 用户可以修改其权限。

chmod 命令:修改权限

方式一:符号模式
chmod [-R] u=权限,g=权限,o=权限 文件或文件夹
示例:chmod u=rwx,g=rx,o=x hello.txt   # 权限变为 rwxr-x--x
  • u:所属用户(user)

  • g:所属组(group)

  • o:其他用户(other)

  • -R:递归应用于目录内所有内容

方式二:数字模式
chmod 751 hello.txt   # 权限:rwx (7) r-x (5) --x (1)

权限可用三位八进制数字表示,每位数字对应一组权限(u/g/o),数字含义如下:

数字 对应权限 含义
0 --- 无权限
1 --x 仅执行
2 -w- 仅写
3 -wx 写+执行
4 r-- 仅读
5 r-x 读+执行
6 rw- 读+写
7 rwx 读+写+执行

chown 命令:修改所属用户和组

chown [-R] [所有者][:所属组] 文件或文件夹
  • -R:递归应用。
  • 可只修改所有者,或只修改所属组,或同时修改。

示例:

chown root hello.txt          # 将所有者改为 root
chown :root hello.txt         # 将所属组改为 root
chown root:KF hello.txt       # 所有者改为 root,所属组改为 KF
chown -R root test            # 将 test 文件夹及其内部所有内容的所有者改为 root

总结

Linux 权限管理核心在于:

  • 通过 root 和普通用户的区分实现系统安全。
  • 使用 susudo 灵活切换或提权。
  • 通过用户和用户组管理实现权限的批量控制。
  • 理解 rwx 权限位及其对文件/目录的不同含义。
  • 熟练运用 chmodchown 调整权限和归属。
posted @ 2023-04-07 17:07  克峰同学  阅读(205)  评论(0)    收藏  举报