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

Linux系统比任何对手都要安全得多。在Linux中实现安全性的一种方式是用户管理策略,用户权限和普通用户无权执行任何系统操作。

如果普通用户需要执行任何系统更改,则需要使用' su '或' sudo '命令。

 - 本文更适用于基于Ubuntu的发行版,但也适用于大多数流行的Linux发行版。

 

'su'对比'sudo'

su '强制您将root密码分享给其他用户,而' sudo '则可以在不使用root密码的情况下执行系统命令。'sudo '可让您使用自己的密码执行系统命令,例如,无需root密码即可授权系统责任。

什么是'sudo'?

sudo '是一个根二进制setuid,代表授权用户执行root命令,用户需要输入自己的密码才能执行系统命令,然后执行' sudo '。

谁可以执行'sudo'?

我们可以运行' / usr / sbin / visudo '来添加/删除可以执行' sudo ' 的用户列表。

$ sudo / usr / sbin / visudo

/ usr / sbin / visudo '文件的屏幕截图如下所示:

SU-VS-须藤

该名单看起来像下面的字符串,默认情况下:

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。你有一个用户mark,它是一个数据库管理员。您应该只为他提供数据库服务器(beta.database_server.com)上的所有访问权限,而不是任何主机上的访问权限。

对于上述情况,' sudo '行可以写为:

mark beta.database_server.com=(ALL) ALL

Q2。 你有一个用户' tom ',该用户应该在上面Explained的同一个数据库服务器上以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 ...

如果这个命令列表变化到了范围内,那么根本无法手动输入每个命令,我们需要使用aliases。别名!是Linux实用程序,其中一个长长的命令或一个命令列表可以被称为一个小而简单的关键字。

几个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

可以指定一个代替用户的系统组(System Groups),属于该组,后缀只是后缀' %',如下所示:

%apacheadmin WEBSERVERS=(www) APACHE

Q5。如何在不输入密码的情况下执行' sudo '命令?

我们可以通过使用' NOPASSWD '标志来输入' sudo '命令而不用输入密码。

adam ALL=(ALL) NOPASSWD: PROCS

在这里,用户' adam '可以在“ PROCS ” 下执行aliased所有命令,而无需输入密码。

与“ su ” 相比,“ sudo ”为您提供了一个强大且安全的环境,并且具有很大的灵活性。而且“ sudo ”配置很容易。一些Linux 发行版默认启用了“ sudo ”,而今天的大多数发行版都需要您将其作为安全措施(Security Measure.)启用。

要将用户(bob)添加到sudo,只需以root身份运行以下命令。

adduser bob sudo

OK,张大发就先说到这儿。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

返回主页看更多
狠狠的抽打博主 支付宝 扫一扫