adduser
和 useradd
对于 Debian 系系统的主要区别在使用方式上:
useradd
是一个指令。adduser
是一个 perl 脚本。通过交互式菜单设定一些用户参数。adduser <username>
后,会自动创建用户主目录 (并复制 /etc/skel 目录下的文件)、指定系统 shell,提示输入用户密码,操作很简单。对于 CentOS 来说是没有区别的,adduser 通过符号链接指向 useradd,即 CentOS 只有 useradd。
添加用户名为 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]
useradd 如果不使用任何选项,创建的用户将无密码、无主目录、没有指定 shell。
为了和 adduser 一样添加一个标准的普通用户,需要指定选项,或者手动进行额外操作。
所以对于 useradd 添加标准的普通用户有 使用选项 和 不使用选项 两种方式。
使用选项:
添加用户名为 lsz 的用户,输入命令添加用户、添加用户目录、bashell 为指定 shell:
sudo useradd -m -s /bin/bash lsz
然后 sudo passwd lsz
对该用户设置密码,输入命令后会提示输入两次密码。
不使用选项:
在不使用选项的情况下,添加一个标准普的通用户,需要全程手动操作,总共有 6 个步骤,很麻烦。
添加用户名为 lsz 的用户:
sudo useradd lsz
sudo passwd lsz
sudo mkdir /home/lsz
sudo cp -r /etc/skel/. /home/lsz
sudo chown -R lsz:lsz /home/lsz
sudo /bin/bashusermod -s /bin/bash lsz
删除 lsz 这个用户:
sudo pkill -u lsz
sudo userdel -r lsz
-r 表示删除用户的同时,将其宿主目录和系统内与其相关的内容删除。
如果系统中没有 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
赋予文件正确的权限。