Linux 新建sudo用户 Nov 5th 2018 Words: 545
This post is created 2 years ago, the content may be outdated.

新开的热乎VPS一般都会默认用root登录,并默认给root一个复杂的密码。拿到手的第一件事就是为自己建立一个具有sudo权限的普通用户。以下默认都是用root操作的。

添加新用户

adduser这条命令最简单,是交互式的无脑配置。

除此之外可以用useradd,这两个命令我经常记混。useradd有几个最常用参数,比如指定home目录地址,指定登录shell等。

例:新建一个可以登录的日常用户

1
useradd --home-dir /home/alice --shell /bin/bash alice

例:建立一个不可登陆的服务专用用户

1
useradd -m --shell /usr/sbin/nologin bob

执行完没有任何提示,cat /etc/passwd可以看到用户名就算成功了。

建立home

useradd不会为登录用户自动建立home,需要手动建立并复制进一些重要的东西。
我在创建大部分VPS实例时选择添加了SSH公钥,所以这里把authorized_keys一并复制,之后可以用原来的私钥登录新用户。

1
2
3
4
5
6
7
#建立home
mkdir /home/alice
# 以root用户为模板建立profile
cp -r /root/.ssh /home/alice # 复制authorized_keys
cp /root/.bashrc /home/alice/ # .bashrc不一定被执行,但.profile一定会,一般都在.profile中引用.profile
cp /root/.profile /home/alice/
chown -R alice:alice /home/alice # 改变属主为新用户

添加sudoer

Debian默认没装sudo,root下用apt install sudo一把梭搞定。
使用visudo命令可以看到哪些用户/用户组拥有sudo权限,一般默认会有个sudo用户组。
添加用户到sudo

1
usermod -aG sudo alice

默认情况下用户alice必须输入登录密码才能执行sudo,然而该用户可能用SSH密钥对登入,根本没有密码,这时要用visudo将alice设置为无需密码即可sudo

1
2
3
4
visudo

%sudo ALL=(ALL:ALL) ALL # 在这行之后添加
alice ALL=(ALL) NOPASSWD:ALL # 免密sudo用户

最后

su切换到新用户测试下包括sudo的功能,正常后就可以配置SSH了。编辑etc/ssh/sshd_config,关闭root登录与密码登录,以及开启禁止空密码登录等安全功能,此处不再赘述。


EOF