su命令是一个切换用户的工具,经常用于将普通用户切换到超级用户下,当然也可以从超级用户切换到普通用户。为了保证服务器的安全,几乎所有服务器都禁止了超级用户直接登录系统,而是通过普通用户登录系统,然后再通过su命令切换到超级用户下,执行一些需要超级权限的工作。通过su命令能够为系统管理带来一定的方便,但是也存在不安全的因素,例如系统有10个普通用户,每个用户都需要执行一些有超级权限的操作,就必须把超级用户的密码交给这10个普通用户,如果这10个用户都有超级权限,通过超级权限可以做任何事,那么在一定程度上会对系统的安全造成威胁。因此在很多人都需要参与的系统管理中,使用su命令并不是最好的选择,超级用户密码应该掌握在少数人手中,此时sudo命令就派上用场了。
sudo命令允许系统管理员分配给普通用户一些合理的“权力”,并且不需要普通用户知道超级用户密码,就能让他们执行一些只有超级用户或其他特许用户才能完成的任务,比如系统服务重启、编辑系统配置文件等,通过这种方式不但能减少超级用户登录次数和管理时间,而且提高了系统安全性。因此,sudo命令相对于权限无限制性的su命令来说,还是比较安全的,这使得sudo也被称为受限制的su,另外sudo也是需要事先进行授权认证的,所以也被称为授权认证的su。
sudo执行命令的流程是:将当前用户切换到超级用户下,或切换到指定的用户下,然后以超级用户或其指定切换到的用户身份执行命令,执行完成后,直接退回到当前用户,而这一切的完成要通过sudo的配置文件/etc/sudoers来进行授权。
例如,普通用户是无法访问/etc/shadow文件的:
[user01@unknown ~]$ more /etc/shadow
/etc/shadow: Permission denied
如果要让普通用户user01可访问这个文件,可以在/etc/sudoers添加如下内容:
user01 ALL = /bin/more /etc/shadow
这样,通过如下方式user01用户就可访问/etc/shadow文件:
[user01@unknown ~]$ sudo more /etc/shadow
[sudo] password for user01:
执行这个命令后,需要输入user01用户的密码,然后就可访问文件内容了。在这里sudo使用时间戳文件来完成类似“检票”的系统功能,当用户输入密码后就获得了一张默认存活期为5分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码才能查看文件内容。
如果每次都需要输入密码,那么某些自动调用超级权限的程序就会出现问题,此时可以通过下面的设置让普通用户无需输入密码即可执行具有超级权限的程序。例如,要让普通用户centreon具有/etc/init.d/nagios脚本重启的权限,可以在/etc/sudoers添加如下设置:
CENTREON ALL = NOPASSWD: /etc/init.d/nagios restart
这样,普通用户centreon就可以执行重启nagios脚本而无需输入密码了。如果要让一个普通用户user02具有超级用户的所有权限,而又不想输入超级用户的密码,只需在/etc/ sudoers添加如下内容即可:
user02 ALL=(ALL) NOPASSWD: ALL
这样user02用户登录系统后,就可以通过执行如下命令切换到超级用户:
[user02@unknown ~]$ sudo su -
[root@unknown ~]# pwd
/root
设计sudo的宗旨是:赋予用户尽可能少的权限但仍允许他们完成自己的工作,这种设计兼顾了安全性和易用性,因此,强烈推荐通过sudo来管理系统账号的安全,只允许普通用户登录系统,如果这些用户需要特殊的权限,就通过配置/etc/sudoers来完成,这也是多用户系统下账号安全管理的基本方式。
多年建站经验,上千个成功案例,
为您提供一站式服务
大厂经验工程师对现有网站进行
改版,修复,维护。
微信小程序,支付宝小程序,
百度小程序
响应式网页设计可以与多种设备兼容,
如智能手机,平板电脑和PC