Linux系统同其他同类系统相比安全性更高,其中提高安全性的方法之一就是使用用户管理策略,普通用户无权执行任何操作。普通用户如果下执行任何系统范围更改,需用su或sudo命令。
基于ubuntu发行版中,su和sudo有哪些差异?Su强制用户和其他用户共享root密码,而sudo可在没有root密码情况下执行系统命令,sudo允许用户使用自己密码来执行系统命令,没有root密码情况下委托系统责任。
“sudo”是一个设置了setuid的root二进制文件,它代表授权用户执行root命令,用户需要输入自己的密码来执行跟在“sudo”之后的系统命令。
可以运行“ /usr/sbin/visudo ”来添加/删除可以执行“ sudo ”的用户列表。
$ sudo /usr/sbin/visudo
默认情况下, sudo列表类似于以下字符串:
root ALL=(ALL) ALL
需以root 身份才能编辑/usr/sbin/visudo文件。
很多时候系统管理员特别是新手系统管理员,会将字符串“ root ALL=(ALL) ALL ”作为模板,并授予其他人不受限制的访问权限,这可能会非常有害。将 ' /usr/sbin/visudo'文件编辑为类似以下模式的内容可能存在威胁,除非您完全相信所有列出的用户:
root ALL=(ALL) ALL
adam ALL=(ALL) ALL
tom ALL=(ALL) ALL
mark ALL=(ALL) ALL
sudo的配置非常的灵活,可以精确配置到所需命令数量。Sudo 配置语法:
User_name Machine_name=(Effective_user) command
User_name :这是“ sudo ”用户的名称。Machine_name:这是主机名,其中“ sudo ”命令有效。当您有许多主机时很有用。(有效用户):允许执行命令的“有效用户”。此列允许您允许用户执行系统命令。命令:用户可以运行的命令或一组命令。
相关问答:
问题1:如果现在有一个用户Mark作为数据库管理员,Mark将获得对beta.database_server.com数据库服务器的专有访问权限,而不是对任何其他主机的权限。怎么设置权限?
答:对于上述情况,sudo行可以写为:
mark beta.database_server.com=(ALL) ALL
问题2:有一个用户 ' tom ',该用户应该在同一数据库服务器上以 root 以外的用户身份执行系统命令,怎么配置权限?
答:对于上述情况,sudo行可以写为:
mark beta.database_server.com=(tom) ALL
问题3:有一个用户cat只能运行dog命令的配置方法?
答:对于上述情况,sudo行可以写为:
mark beta.database_server.com=(cat) dog
问题4:如需要授权用户多个命令方法?
答:用户需运行命令数少于10条,可以将所有命令放在旁边,并在它们之间留出空格,如下所示:
mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...
如果这个命令列表变化较大,可不手动输入每个命令,直接用别名。别名就是可以把长命令或者命令列表称为短而简单的关键字。一些别名示例,可用于代替“ sudo ”配置文件中的条目。
User_Alias ADMINS=tom,jerry,adam
user_Alias WEBMASTER=henry,mark
WEBMASTERS WEBSERVERS=(www) APACHE
Cmnd_Alias PROC=/bin/kill,/bin/killall, /usr/bin/top
可制定一个系统组替代这个组成员,直接后缀加%:
%apacheadmin WEBSERVERS=(www) APACHE
问题5:我可以不输入密码情况下执行sudo吗?
答:使用“ NOPASSWD ”标志执行“ sudo ”命令而无需输入密码。
adam ALL=(ALL) NOPASSWD: PROCS
用户 ' adam ' 可以执行“ PROCS ”下的所有命令,而无需输入密码。
与“su”不同,“sudo”提供了一个既强大又安全的权限管理环境,具有高度灵活性,并且配置简单。多数Linux发行版默认启用“sudo”或需要你手动启用以确保安全。
要将用户(如bob)添加到sudo组,需以root权限执行相应命令。
adduser bob sudo
更多技术资讯,关注华纳云!