前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >su和sudo之间的区别以及如何在Linux中配置sudo

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

作者头像
Solli
发布2018-05-11 15:14:46
2K0
发布2018-05-11 15:14:46
举报
文章被收录于专栏:张子赫

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

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

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

'su'对比'sudo'

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

什么是'sudo'?

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

谁可以执行'sudo'?

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

代码语言:javascript
复制
$ sudo / usr / sbin / visudo

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

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

代码语言:javascript
复制
根ALL =(ALL)ALL

注意:您必须是root用户才能编辑/ usr / sbin / visudo文件。

授予sudo访问权限

在许多情况下,系统管理员,特别是新的领域找到字符串“root ALL=(ALL) ALL ”为他人这可能是可能非常有害的模板,并授予不受限制的访问。

编辑“ /usr/sbin/visudo’”文件类似下面的模式可能真的是很危险,除非你相信所有列出的用户完全。

代码语言:javascript
复制
root ALL=(ALL) ALL
adam ALL=(ALL) ALL
tom ALL=(ALL) ALL
mark ALL=(ALL) ALL
sudo的参数

正确配置的'sudo '非常灵活,需要运行的命令数量可以精确配置。

配置好的 ' sudo '行的语法是:

代码语言:javascript
复制
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 '行可以写为:

代码语言:javascript
复制
mark beta.database_server.com=(ALL) ALL

Q2。 你有一个用户' tom ',该用户应该在上面Explained的同一个数据库服务器上以root用户身份执行系统命令。

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

代码语言:javascript
复制
mark beta.database_server.com=(tom) ALL

Q3。你有一个sudo用户'cat ',它应该只运行命令'dog '。

为了实现上述情况,我们可以将'sudo'写为:

代码语言:javascript
复制
mark beta.database_server.com=(cat) dog

Q4。如果用户需要被授予几个命令会怎么样?

如果用户应该运行的命令的数量在10以下,我们可以将所有命令放在一起,它们之间有空格,如下所示:

代码语言:javascript
复制
mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...

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

几个alias例子,它可以代替“条目来使用sudo 配置文件。

代码语言:javascript
复制
User_Alias ADMINS=tom,jerry,adam
user_Alias WEBMASTER=henry,mark
代码语言:javascript
复制
WEBMASTERS WEBSERVERS=(www) APACHE
Cmnd_Alias PROC=/bin/kill,/bin/killall, /usr/bin/top

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

代码语言:javascript
复制
%apacheadmin WEBSERVERS=(www) APACHE

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

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

代码语言:javascript
复制
adam ALL=(ALL) NOPASSWD: PROCS

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

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

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

代码语言:javascript
复制
adduser bob sudo

OK,张大发就先说到这儿。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年4月25日2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 'su'对比'sudo'
  • 什么是'sudo'?
  • 谁可以执行'sudo'?
  • 授予sudo访问权限
  • sudo的参数
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档