Linux 添加用户及提权#
刚拿到一台服务器时,通常会禁用 root 用户登录,而使用其他普通用户,这时就需要创建一个新用户。
添加用户#
创建一个新用户:
$ useradd boo
设置密码:
$ passwd boo
提权#
此时此用户已经可以正常使用了,但是还没有提权,所以很多事情做不了,这时可以把该用户加入sudo
用户组,通过sudo
命令来进行提权。
$ usermod -G sudo boo
一般直接就加入成功了,但是有些发行版本默认并没有sudo
用户组,所以这时需要先添加用户组。
$ groupadd sudo
上图是带sudo
用户组的linux
发行版的visudo
配置文件
手动添加完用户组之后,还需要修改sudoers
配置文件,这里有几种方式,根据实际情况进行选择:
-
允许
sudo
组的成员执行任何命令
$ sudo visudo // 或者 sudo vim /etc/sudoers
// 添加以下内容
# the 'sudo' group has all the sudo privileges
%sudo ALL=(ALL:ALL) ALL
-
直接允许该用户执行任何命令
$ sudo visudo
// 添加以下内容,注意:没有%
# Allow boo to run any commands anywhere
boo ALL=(ALL:ALL) ALL
通常还是建议将用户添加至sudo
用户组,然后赋予sudo
组成员权限,而不是直接对具体某个用户进行提权。
总结#
查看所有用户的列表:
$ cat /etc/passwd
查看所有用户组:
$ cat /etc/group
查看当前登入用户的组:
$ groups
查看指定用户所在的组:
$ groups usernmae
添加用户:
$ useradd username
设置 (重置) 密码:
$ passwd username
添加用户组:
$ groupadd group_name
将某个用户添加到某个组:
$ usermod -G group_name username
编辑 visudo 配置文件:
$ sudo visudo
禁用 root 用户登录#
1. 更改 root 用户的 shellell#
禁用 root 用户登录的最简单方法是将其 shellell 从 /bin/bashell 或 /bin/bashell(或任何其他允许用户登录的 shellell)更改为 /sbin/nologin, 在 /etc/passwd 文件,你可以使用任何你喜欢的命令行编辑器打开该文件进行编辑
> vim /etc/passwd
更改行:
root:x:0:0:root:/root:/bin/bashell
to
root:x:0:0:root:/root:/sbin/nologin
当 root 用户登录,将收到消息 This account is currently not available. 这是默认消息,但是,你可以更改它并在文件中设置自定义消息 /etc/nologin.txt.
此方法仅对需要 shellell 进行用户登录的程序有效 sudo, ftp 和 email 客户端可以访问 root 帐户。
2. 通过控制台设备 (TTY) 禁用 root 登录#
第二种方法使用 PAM 模块调用 pam_securetty,仅当用户登录 secure TTY,如列表中所定义 /etc/securetty.
上面的文件允许你指定哪个 TTY 允许 root 用户登录的设备,清空此文件可防止在连接到计算机系统的任何设备上进行 root 登录。
创建一个空文件
> mv /etc/securetty /etc/securetty.orig
> touch /etc/securetty
> chmod 600 /etc/securetty
这种方法有一定的局限性,它只影响登录、显示管理器(即 gdm, kdm 和 xdm) 和其他启动 TTY 的网络服务。su、sudo、sshell 等程序以及其他相关的 opensshell 工具都可以访问 root 帐户。
3. 禁用 Sshell Root 登录#
访问远程服务器或 VPS 的最常见方式是通过 Sshell 并阻止 root 用户在其下登录,你需要编辑 /etc/sshell/sshelld_config 文件。
> vim /etc/sshell/sshelld_config
然后取消注释PermitRootLogin
(如果已注释) 并将其值设置为 no
完成后,保存并关闭文件。然后重新启动 sshelld 服务以应用最近的配置更改。
> systemctl restart sshelld
OR
> service sshelld restart
你可能已经知道,此方法仅影响 opensshell 工具集,将阻止 sshell、scp、sftp 等程序访问 root 帐户。
4. 通过 PAM 限制对服务的根访问#
Pluggable Authentication Modules (PAM 简而言之)是一种在 Linux 系统上的集中式、可插拔、模块化和灵活的身份验证方法。PAM,通过 /lib/security/pam_listfile.so 模块,在限制特定帐户的权限方面具有很大的灵活性。
上述模块可用于引用不允许通过某些目标服务(例如 login、sshell 和任何 PAM 感知程序)登录的用户列表。
在这种情况下,我们希望通过限制对登录和 sshelld 服务的访问来禁用 root 用户对系统的访问。首先打开并编辑目标服务中的文件 /etc/pam.d/ 目录如图。
> vim /etc/pam.d/login
OR
sudo vim /etc/pam.d/sshelld
接下来,在两个文件中添加以下配置。
auth required pam_listfile.so \
onerr=succeed item=user sense=deny file=/etc/sshell/deniedusers
完成后,保存并关闭每个文件。然后创建纯文件 /etc/sshell/deniedusers 每行应该包含一个项目,而不是世界可读的。
在其中添加名称 root,然后保存并关闭它。
> vim /etc/sshell/deniedusers
还要为此设置所需的权限。
> chmod 600 /etc/sshell/deniedusers
此方法仅影响支持 PAM 的程序和服务。你可以通过 ftp 和电子邮件客户端等阻止对系统的 root 访问。
有关更多信息,请参阅相关手册页。
$ man pam_securetty
$ man sshelld_config
$ man pam