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 '文件的屏幕截图如下所示:
该须藤名单看起来像下面的字符串,默认情况下:
根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
以上语法可以分为四个部分:
- User_name:这是' sudo '用户的名称。
- Machine_name:这是主机名,其中' sudo '命令有效。当你有很多主机时很有用。
- (Effective_user):允许执行命令的'有效用户'。此列允许您允许用户执行系统命令。
- 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,张大发就先说到这儿。
- 剑指OFFER之丑数(九度OJ1214)
- 剑指OFFER之把数组排成最小的数(九度OJ1504)
- 剑指OFFER之从1到n中出现1的次数(九度OJ1373)
- 剑指OFFER之最大子向量和(连续子数组的最大和)(九度OJ1372)
- 剑指OFFER之最小的K个数(九度OJ1371)
- 剑指OFFER之数组中出现次数超过一半的数字(九度OJ1370)
- 如何成为一名10x的数据分析师?
- 肥料生产商全套三拼在手:拟融资1.47亿元
- 《外媒Cointelegraph专访Qtum量子链Jordan Earls》—浅谈目前Dapps的主要问题
- ASP .Net Core 2.0 修改默认端口
- 不满一岁的潜力股:2017年3D打印机器人盘点
- Reporting Service报表开发
- 不要信任云:这不只是安全的问题
- C#温故而知新—闲话.Net
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 使用Samba在Linux服务器上搭建共享文件服务的方法
- CentOS Yum编译安装MySQL 5.6
- Linux中环境变量配置的步骤详解
- 详解Linux搭建DNS服务器
- 一篇文章弄懂Linux磁盘和磁盘分区
- Ubuntu 17.04系统下源码编译安装opencv的步骤详解
- 如何在Linux中自定义bash命令提示符
- 详解如何在Linux上一次性批量重命名一组文件
- 虚拟机中centos修改时间的方法
- Ubuntu 18.04 Server 设置静态IP 的方法
- 嵌入式Linux重启QT应用程序的简单办法(基于QT4.8 qws)
- CentOS下MySQL的彻底卸载的几种方法
- centos7中安装Android SDK的方法步骤
- centos配置ssh免密码登录后仍要输入密码的解决方法
- CentOS7.2安装Nginx的方法步骤