Linux 用户管理
Table of Contents
1. 添加用户
adduser 和 useradd 对于 Debian 系系统的主要区别在使用方式上:
useradd是一个指令。- 如果不使用任何选项,创建的用户将无密码、无主目录、没有指定 shell。
- 想正常使用这个账户,还需要设置密码、创建家目录等额外操作。
adduser是一个 perl 脚本。通过交互式菜单设定一些用户参数。- 输入
adduser <username>后,会自动创建用户主目录 ( 并复制 /etc/skel 目录下的文件 )、指定系统 shell,提示输入用户密码,操作很简单。
- 输入
对于 CentOS 来说是没有区别的,adduser 通过符号链接指向 useradd,即 CentOS 只有 useradd。
1.1. 使用 adduser 添加用户
添加用户名为 lsz 的用户 sudo adduser lsz 然后会提示输入密码,之后一路回车即可,非常简单。
Adding user `lsz' ...
Adding new group `lsz' (1002) ...
Adding new user `lsz' (1001) with group `lsz' ...
Creating home directory `/home/lsz' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for lsz
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
1.2. 使用 useradd 添加用户
useradd 如果不使用任何选项,创建的用户将无密码、无主目录、没有指定 shell。
为了和 adduser 一样添加一个标准的普通用户,需要指定选项,或者手动进行额外操作。
所以对于 useradd 添加标准的普通用户有 使用选项 和 不使用选项 两种方式。
使用选项:
添加用户名为 lsz 的用户,输入命令添加用户、添加用户目录、bashell 为指定 shell:
sudo useradd -m -s /bin/bash lsz
-m自动创建用户的家目录,并将 /etc/skel 中的文件复制到家目录中。-s指定用户登入后所使用的 shell。
然后 sudo passwd lsz 对该用户设置密码,输入命令后会提示输入两次密码。
不使用选项:
在不使用选项的情况下,添加一个标准普的通用户,需要全程手动操作,总共有 6 个步骤,很麻烦。
添加用户名为 lsz 的用户:
- 输入命令添加用户
sudo useradd lsz - 设置密码
sudo passwd lsz - 创建家目录
sudo mkdir /home/lsz - 将
/etc/skel目录下的文件复制到该用户目录sudo cp -r /etc/skel/. /home/lsz - 更改家目录归属
sudo chown -R lsz:lsz /home/lsz - 指定 Shell:
sudo /bin/bashusermod -s /bin/bash lsz
2. 删除用户
删除 lsz 这个用户:
- 首先终结该用户所有进程
sudo pkill -u lsz - 然后输入删除命令
sudo userdel -r lsz
-r 表示删除用户的同时,将其宿主目录和系统内与其相关的内容删除。
3. 用户组
3.1. 赋予用户 sudo 权限的正确方式
如果系统中没有 sudo,需要先安装 apt install sudo -y ,然后 usermod -aG sudo <username> 添加用户到 sudo 用户组。
修改 sudo 配置文件。尽管可以直接改动 /etc/sudoers,但添加配置文件到 /etc/sudoers.d 目录更合适。/etc/sudoers.d 目录中的文件是 /etc/sudoers 文件的补充。
如果要取消用户的 sudo 权限,直接删除 /etc/sudoers.d 中的文件即可,不用修改 /etc/sudoers 文件,不影响系统默认配置。
sudo 权限配置的基本格式是:
# Who Where As whom Tag What User_List Host_List = [(User_List)] [NOPASSWD:|PASSWD:] Cmnd_List
tee /etc/sudoers.d/lsz <<< 'lsz ALL=(ALL) ALL' 可以赋予用户 sudo 权限。
如果不想输入每次 sudo 都输入密码,可以设置免密:
tee /etc/sudoers.d/lsz <<< 'lsz ALL=(ALL) NOPASSWD: ALL'
服务器最好不设免密码,不安全。
最后执行 chmod 440 /etc/sudoers.d/lsz 赋予文件正确的权限。