第三章 Linux用户和权限

发布时间:2026/7/19 22:53:41
第三章 Linux用户和权限 第三章 Linux用户和权限认知root用户P1 suswitch user 切换用户su的用法su 【用户名】或者su - 【用户名】-符号是可选的表示是否在切换用户后加载环境变量建议带上两种方式都能切换用户但是不加-切换的用户其shell还是之前用户的shell会导致一些命令不能执行。所以工作中一般用su - 【用户名】这种形式切换用户。“无杠环境旧有杠才干净脚本加 -c日志常审计。”语法su [选项] [-] [用户] [附加命令…]核心不带 - → 只切身份保留原环境$PATH 仍是旧的常踩坑。带 - → 模拟完整登录重新装一遍目标用户的 ~/.profile / ~/.bashrc 等。附加命令 → 执行完就退回适合脚本里“临时提权一行”。参数用户名表示要切换的用户用户名也可以省略省略表示切换到root命令含义su切换到root用户默认su username切换到指定用户su -切换到 root并完全加载 root 的环境su - username切换到指定用户并加载该用户的完整环境常用su - rootsu - atc //切换不同用户su - oracle切换用户后可以通过exit命令退回上一个用户也可以使用快捷键ctrl dP2 sudo命令普通用户如果临时需要以 root 权限执行某条命令sudo 其他命令在命令前写一个sudo即可为这一条命令临时赋予root授权但是并不是所有的用户都有权利使用sudo我们需要为普通用户配置sudo认证但是并不是所有的用户都有权利使用sudo我们需要为普通用户配置sudo认证为普通用户配置sudo认证切换到root用户执行visudo命令会自动通过vi编辑器打开/etc/sudoers在文件的最后添加atc ALL(ALL) NOPASSWD:ALL其中最后的NOPASSWD:ALL 表示使用sudo命令无需输入密码。最后通过 wq 保存切换回普通用户可以执行sudo 其他命令sudo su可以不用输密码就登录root用户的两种原因如果你执行sudo su时完全不需要输密码包括第一次说明管理员在/etc/sudoers中给你配置了NOPASSWD权限如果你最近用过 sudo通常 5-15 分钟内取决于配置sudo 甚至会缓存认证命令加载 root 环境当前目录环境变量sudo su❌ 否保持当前目录继承当前用户的环境sudo su -✅ 是切换到/root完全加载 root 的环境P3 root用户root用户拥有最大的系统操作权限而普通用户在许多地方的权限是受限的。普通用户的权限一般在其HOME目录内是不受限的一旦出了HOME目录大多数地方普通用户仅有只读和执行权限无修改权限。eg普通用户在其他的地方mkdir使用普通用户切换到其它用户需要输入密码如切换到root用户使用root用户切换到其它用户无需密码可以直接切换参数用户名表示要切换的用户用户名也可以省略省略表示切换到root用户、用户组管理P4 Linux中的用户、用户组设置- Linux中关于权限的管控级别有2个级别分别是针对用户的权限控制针对用户组的权限控制PS针对某文件可以控制用户的权限也可以控制用户组的权限。Linux可以支持多用户、多用户组、用户加入多个组P5 groupadd、groupdel命令用户组管理【以下命令需root用户执行】创建用户组groupadd 用户组名删除用户组groupdel 用户组名P6 useradd、userdel命令usermod -aG命令用户管理【以下命令需root用户执行】创建用户useradd [-g -d] 用户名选项-g指定用户的组指定-g需要组已经存在如已存在同名组必须使用-g。不指定-g会创建同名组并自动加入选项-d指定用户HOME路径。不指定HOME目录默认在/home/用户名删除用户userdel [-r] 用户名选项-r删除用户的HOME目录。不使用-r删除用户时HOME目录保留将指定用户加入指定用户组usermod -aG 用户组 用户名-aappend追加保留用户已有的附加组-Ggroups指定附加组不是主组usermod -g 组名 用户→ 修改主组primary group只改一个usermod -G 组名 用户→覆盖所有附加组危险usermod -aG 组名 用户→追加到附加组推荐后面是用户前面是用户组将用户alice加入docker组中sudo usermod -aG docker alice将用户alice加入前面的docker,sudo,adm这多个组中sudo usermod -aG docker,sudo,adm aliceP7 查看id、groups命令getent命令查看或验证是否生效groups 用户名# 查看用户所属的所有组id 用户名# 查看用户 ID 和组 IDPS参数都是用户名即被查看的用户。如果不提供被查看用户则查看自身getent命令get entries获取条目getent的全称是get entries获取条目。这是一个用于从系统的管理数据库如/etc/passwd、/etc/group、DNS、NIS、LDAP 等中查询指定条目的命令。名称直白地反映了它的功能从各种名称服务数据库中获取get条目entries。在getent的语境中entry条目指的是各种系统数据库中的一条记录。具体来说就是像下面这样的数据记录数据库一条 entry 的例子passwd用户root:x:0:0:root:/root:/bin/bashgroup用户组sudo:x:27:user1,user2hosts主机名127.0.0.1 localhostservices网络服务http 80/tcpprotocols网络协议ip 0 IP所以getent的本质就是根据你指定的数据库名称和查询键返回匹配的那一行/那条记录。比如getentpasswdroot# 查询 passwd 数据库中 root 的那条 entrygetent hosts google.com# 查询 hosts/DNS 中 google.com 的那条 entry“Entry” 在这里就是数据库表中的一行记录的意思。getent passwd列出所有用户可以查看当前系统中有哪些用户查看系统全部用户信息共有7份信息分别是用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)getent group列出所有组同样可以查看当前系统中有哪些用户组查看系统全部组信息包含3份信息组名称:组认证(显示为x):组ID语法getent [选项] 数据库 键…基本用法查询用户 root 的信息getent passwd root查询组 sudo 的信息getent group sudo查询域名对应的 IPgetent hosts google.com查询服务 ssh 的端口和协议getent services ssh列出所有用户getent passwd列出所有组getent group支持的数据库getent的优势在于它直接查询nsswitchName Service Switch配置的数据源所以无论用户信息存在/etc/passwd、LDAP 还是 NIS 中都能统一查询。数据库内容passwd用户账户信息group用户组信息hosts主机名与 IP 映射services网络服务与端口protocols网络协议networks网络名称与地址aliases邮件别名shadow密码哈希需要 root查看权限控制P8 认知权限信息ls -l 列出的权限信息权限控制信息、用户、用户组通过ls -l 可以以列表形式查看内容并显示权限细节序号1表示文件、文件夹的权限控制信息序号2表示文件、文件夹所属用户序号3表示文件、文件夹所属用户组P9 权限细节解读权限细节解读共10位1、3、3、3类型、用户权限、用户组权限、其它用户权限举例drwxr-xr-x表示这是一个文件夹首字母d表示所属用户(右上角图序号2)的权限是有r有w有xrwx所属用户组(右上角图序号3)的权限是有r无w有xr-x -表示无此权限其它用户的权限是有r无w有xr-xP10 rwx权限含义rwx权限含义r表示读权限针对文件可以查看文件内容针对文件夹可以查看文件夹内容如ls命令w表示写权限针对文件表示可以修改此文件针对文件夹可以在文件夹内创建、删除、改名等操作x表示执行权限针对文件表示可以将文件作为程序执行针对文件夹表示可以更改工作目录到此文件夹即cd进入修改访问权限 - chmodP11 chmod命令change mode语法chmod [-R] 权限 文件或文件夹参数-R对文件夹内的全部内容应用同样的操作功能使用chmod命令修改文件、文件夹的权限信息注意只有文件、文件夹的所属用户或root用户可以修改举例chmod urwx,grx,ox hello.txt 将文件权限修改为rwxr-x–x其中u表示user所属用户权限g表示group组权限o表示other其它用户权限chmod -R urwx,grx,ox test将文件夹test以及文件夹内全部内容权限设置为rwxr-x–x除此之外还有快捷写法chmod 751 hello.txt将hello.txt的权限修改为751那么问题来了751表示什么意思呢P12 权限的数字序号权重r记为4w记为2x记为1权限可以用3位数字来代表第一位数字表示用户权限第二位表示用户组权限第三位表示其它用户权限举例0无任何权限 即 —1仅有x权限 即 --x2仅有w权限 即 -w-3有w和x权限 即 -wx4仅有r权限 即 r–5有r和x权限 即 r-x6有r和w权限 即 rw-7有全部权限 即 rwx所以751表示 rwx(7) r-x(5) --x(1)chmod命令使用举例将hello.txt的权限修改为 r-x–xr-x数字序号为chmod 515 hello.txt将hello.txt的权限修改为 -wx-w-rw-数字序号为chmod 326 hello.txt修改所有者和所属组 - chownP13 chown命令change owner语法参数-R对文件夹内的全部内容应用同样的操作:用于分隔用户和用户组功能使用chown命令可以修改文件、文件夹的所属用户和用户组注意普通用户无法修改所属为其它用户或组所以此命令只适用于root用户执行举例chown root hello.txt将hello.txt所属用户修改为rootchown :root hello.txt将hello.txt所属用户组修改为rootchown root:itheima hello.txt将hello.txt所属用户修改为root用户组修改为itheimatyle“zoom:50%;” /参数-R对文件夹内的全部内容应用同样的操作:用于分隔用户和用户组功能使用chown命令可以修改文件、文件夹的所属用户和用户组注意普通用户无法修改所属为其它用户或组所以此命令只适用于root用户执行举例chown root hello.txt将hello.txt所属用户修改为rootchown :root hello.txt将hello.txt所属用户组修改为rootchown root:itheima hello.txt将hello.txt所属用户修改为root用户组修改为itheimachown -R root test将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则