su命令

su:切换用户的命令。root用户切换到任何用户都不需要密码,普通用户切换到其他用户或者root用户都需要密码。

whoami:查看当前是哪个用户。

id:查看当前是哪个用户并列出详细信息。


su 和 su - 的区别:su - 会彻底切换到某个用户,包括家目录、环境变量等等。一般切换用户就使用su - 用户名。直接su - 是切换到root用户。


su - -c  "命令"  用户名:以某个用户的身份去执行某个命令。(不切换到用户)


sudo命令

sudo:使某个指定的用户可以使用某些root的命令。这样就可以不用告诉他root的密码也能执行一些权限较高的命令,更安全。

visudo:打开sudo的配置文件。相当于vi /etc/sudoers。不建议后一种方法,最好使用visudo这个命令,因为可以检测到语法错误,不容易出错。


找到 root  ALL=(ALL)  ALL 这一行,在这一行的下方添加条目。格式为:

用户  ALL=(ALL)  命令的绝对路径:让前面的这个用户可以执行后面的命令。(命令之间用逗号隔开)


使用这些命令前一定要加sudo,而且第一次使用时会提示输入用户的密码,之后就不需要了。

如果不想提示输入密码,则可以在配置文件里做如下修改:


在vi编辑器里,进入底行模式,输入set nu,即可显示行号。输入set nonu,即可取消显示行号。


visudo里面可以设置别名,可以设置用户别名和命令别名,方便批量管理。具体格式如下:

除了别名可以批量管理,也可以通过组来管理,把需要sudo的用户都放到一个组里,然后再在visudo里面设置,如下:


限制root用户远程登陆

vi /etc/ssh/sshd_config,打开ssh的配置文件。找到 #PermitRootLogin yes 这一行,去掉前面的#号,把yes改为no,保存退出。重启sshd服务 systemctl restart sshd。重新打开一个终端,连接服务器,发现无法登陆root用户,但普通用户可以正常登陆。登陆普通用户后可以正常切换到root用户。

若想实现某个普通用户切换到root用户不需要密码,则把su命令添加到sudo里面即可。