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
赋予文件正确的权限。