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里面即可。