Linux常用命令--用户管理
摘要
-
文本介绍linux中用户的维护及其相关命令
-
本文基于
CentOS8(x86_64)
一.配置文件说明
-
1./etc/passwd :用户信息文件
vipw
:编辑/etc/passwd文件
pwck
:检查/etc/passwd内容是否有效,比如宿主目录是否存在等等
1 | root:x:0:0:root:/root:/bin/bash |
-
2./etc/shadow :密码文件
1 | root:!!:18755:0:99999:7::: |
-
3./etc/group :用户组文件
vigr
:编辑/etc/group文件
grpck
:检查/etc/group内容是否有效
1 | root:x:0: |
-
4./etc/gshadow :组密码文件
1 | root::: |
-
5./etc/skel/* :新用户环境变量文件
-
6./etc/login.defs :使用useradd默认创建用户时的缺省配置,比如UID范围,GID范围,密码有效期,密码长度限制,是否自动创建Home目录,密码加密方式等等
-
7./etc/default/useradd :使用useradd默认创建用户时的缺省配置,比如Home目录位置,默认shell,默认使用的新用户环境变量文件位置(/etc/skel),等等
二.添加、删除用户
-
1.通过
useradd
命令创建用户,并使用passwd
设置用户密码
1 | # root创建用户 |
-
2.通过编辑配置文件创建
- 1)分别在/etc/passwd、/etc/group和/etc/shadow中增加一行记录
密码设置:echo 123456 | sha512sum
- 2)创建宿主目录
- 3)拷贝默认的配置文件到宿主目录:
cp -rf /etc/skel/* dir
- 4)设置用户初始密码
- 1)分别在/etc/passwd、/etc/group和/etc/shadow中增加一行记录
-
3.删除用户
1 | userdel -r 用户名 |
-
4.修改用户
1 | # 将用户添加到附加组中,这个命令会将用户从原来的所有组中移除,并将其添加到指定的组中。也就是说,用户将只属于指定的组。 |
三.添加、删除组
-
1.创建组
1 | groupadd 组名 |
-
2.删除组
1 | groupdel 组名 |
-
3.修改组名称
1 | groupmod -n newname oldname |
-
4.设置组密码
1 | 设置密码:gpasswd 组名 |
-
5.其它组命令
1 | # 将用户加入组 |
四.用户管理命令
1 | whoami :显示当前用户名称 |
五.用户禁用与恢复
-
禁用:锁定用户,不能登录
1 | usermod -L 用户名 :/etc/shadow中对应的密码前面增加一个`!` |
-
恢复:解锁
1 | usermod -U 用户名 |
六.sudo
-
配置文件/etc/sudoers
1 | 格式: A B = (C) D E |
-
visudo
:编辑/etc/sudoers,需要root权限 -
sudo command
:执行命令,需要输入当前用户密码(配置了NOPASSWD就可以不需要输入密码了) -
sudo -l
:查看当前用户可以使用sudo执行哪些命令 -
sudo su
:切换到root用户,当前用户需要拥有sudo权限 -
sudo -i
:(推荐)切换到root用户,当前用户需要拥有sudo权限
sudo su
与sudo -i
的区别
sudo su
和sudo -i
都是用于以root用户身份执行命令的sudo命令的变体,但它们之间有一些区别:
-
环境变量的加载:
sudo su
: 使用sudo su
切换到root用户时,当前用户的环境变量不会被改变,因此可能导致一些环境变量丢失或不正确。默认情况下,sudo su
不会执行root用户的登录脚本(例如/root/.bashrc或/root/.profile,以及/etc/profile)。sudo -i
: 使用sudo -i
时,会模拟一个完整的登录过程,包括执行root用户的登录脚本。这意味着环境变量会被正确加载,并且会像在一个新的登录会话中一样。
-
工作目录的切换:
sudo su
: 使用sudo su
切换到root用户时,当前工作目录不会改变,您将保持在当前目录下。- sudo -i: 使用
sudo -i
时,会切换到root用户的家目录(/root),因此当前工作目录会改变为root用户的家目录。
-
shell的选择:
sudo su
: 使用sudo su
默认会使用root用户的默认shell,通常是/bin/bash。sudo -i
: 使用sudo -i
时,会使用root用户的默认登录shell,通常是/bin/bash或/bin/sh。
综上所述,如果您需要以root用户身份执行命令,并且希望加载完整的root用户环境(包括环境变量和登录脚本),建议使用sudo -i
。
如何快速配置普通用户拥有sudo权限
-
默认情况下,在许多Linux发行版中,包括CentOS,任何具有sudo权限的用户都可以使用
sudo su
或sudo -i
来切换到root用户。这是通过/etc/sudoers文件中的配置来实现的。 -
在/etc/sudoers文件中,通常会有一行类似于以下的条目:
1 | %wheel ALL=(ALL) ALL |
-
这表示用户组wheel中的成员可以使用sudo执行任何命令。默认情况下,CentOS中第一个创建的用户通常会被添加到wheel组中。
-
如果要允许其他用户也能切换到root用户,您可以将这些用户添加到wheel组中,或者直接修改
/etc/sudoers
文件以允许特定用户执行sudo su
或sudo -i
。但请务必小心修改/etc/sudoers文件,因为格式错误可能会导致系统无法使用sudo。 -
要将用户添加到wheel组中,可以使用以下命令(假设要添加的用户名为username):
1 | sudo usermod -aG wheel username |
-
这会将用户添加到wheel组中,使其具有sudo权限。然后该用户就可以使用sudo su或sudo -i切换到root用户。
-
请注意,对/etc/sudoers文件的修改应该通过visudo命令进行,这样可以避免格式错误,并且可以在编辑期间进行验证。
七.批量添加用户,适用于少量添加,大量可以编写个脚步
1 | 1.编辑一个用户信息文件,比如user.info,格式与/etc/passwd相同 |
八.查看当前登录的用户
1 | # 列出当前session |