su和sudo之间的区别以及如何在Linux中配置sudo

Linux系统比任何其对应的安全。在Linux中实现安全性的一种方式是用户管理策略和用户权限。

Linux的系统安全得多比任何其对应的。 其中一个的方式实现Linux安全是用户管理策略和用户权限。正常用户无权执行任何系统操作。 如果一个普通用户需要执行他需要用' su '或' Sudo '命令的任何系统范围的更改。
su和sudo在Linux

Linux:su v / s sudo

-本文是更适用于基于Ubuntu发行版,但也适用于最流行的Linux发行版。

'su'Vs'sudo'

su ”势力大家分享你的root密码给其他用户,而“ Sudo ”能够执行无root口令系统的命令。“Sudo '可以让你用你自己的密码来执行系统命令即代表制度中的责任,而不root密码。

什么是“sudo”?

' Sudo '是root二进制的setuid,这代表授权用户的root目录执行命令和用户需要输入自己的密码,执行系统命令,然后再' Sudo '。

谁能执行“sudo”?

我们可以运行“/ usr / sbin目录/ visudo命令 ”添加/删除谁可以执行“sudo的 ”用户列表。
$ sudo /usr/sbin/visudo
“/ usr / sbin目录/ visudo命令 ”文件中的屏幕截图,看起来是这样的: su-vs-sudo Sudo名单看起来像下面的字符串,默认情况下:
root ALL=(ALL) ALL
注意 :您必须是root编辑/ usr / sbin目录/ visudo命令文件。

授予sudo访问权限

在许多情况下, 系统管理员 ,特别是新的领域找到字符串“ 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 '是非常灵活的,并且需要运行可精确配置命令的数量。 配置' Sudo '行的语法是:
User_name Machine_name=(Effective_user) command
上述语法可以分为四部分:
  1. User_name:这是' Sudo '用户的名称。
  2. Machine_name :这是主机名,其中' Sudo '命令是有效的。当你有很多主机时很有用。
  3. (Effective_user):被允许执行的命令的“有效用户”。此列允许用户执行系统命令。
  4. Command :命令或一组用户可以运行的命令。
一些情况,以及它们的相应的“ Sudo '行的: Q1。你有一个用户标记这是一个数据库管理员。 你应该给他提供了数据库服务器(beta.database_server.com)而已,而不是在任何主机上的所有权限。 对于上述情况的' Sudo '线可以写成:
mark beta.database_server.com=(ALL) ALL
Q2。你有一个用户'tom '这是应该作为同一数据库服务器,上面解释的root以外的用户执行系统命令。 对于上述情况的' Sudo '线可以写成:
mark beta.database_server.com=(tom) ALL
Q3。你有一个Sudo用户' cat '这应该只运行命令' dog '。 为了实现上述情况,我们可以写“sudo”:
mark beta.database_server.com=(cat) dog
Q4。如果用户需要什么被授予多个命令? 如果命令的数目,用户应该运行是在10中,我们可以一起放置所有的命令,以在他们之间的空白,如下所示:
mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...
如果命令这个名单变化的范围,它是从字面上无法手动键入每个命令,我们需要使用别名 。别名!是Linux实用程序,其中长篇命令或命令列表可以被称为一个small和easy关键字。 一个 alias实施例,其可代替' 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
Q5。怎么样,而无需输入密码执行' Sudo '命令? 我们可以不使用'NOPASSWD'标志输入密码执行' Sudo '命令。
adam ALL=(ALL) NOPASSWD: PROCS
在这里,用户'adam '可以执行的“PROCS” 别名 ,而无需输入密码的所有命令。 “ sudo ”相比“ su ”为您提供了一个强大的和安全的环境,灵活的负载。 此外“sudo ”的配置很容易。 一些Linux发行版“ 命令 ”默认启用的,而今天大多数的发行版,你需要启用它作为一种安全措施 。 要将用户(bob)添加到sudo,只需以root身份运行以下命令。
adduser bob sudo
目前为止就这样了。我会再次与另一个有趣的文章。直到然后,保持调整和连接到Howtoing。不要忘记在我们的评论部分向我们提供您的宝贵反馈。