sudo的使用和配置
1 sudo是什么
Sudo是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他特许用户才能完成的任务,比如:运行一些像mount,halt,su之类的命令,或者编辑一些系统配置文件,像/etc/mtab, /etc/samba/smb.conf等。这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性。
2 sudo的特点
sudo设计者的宗旨是:给用户尽可能少的权限但仍允许完成他们的工作。所以,sudo有以下特点:
- sudo能够限制指定用户在指定主机上运行某些命令。
- sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,且能将日志传到中心主机或者日志服务器。
- sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。
- sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”。
3 sudo的命令
3.1 sudo条目语法
who host=(runas) TAG:command
- who :运行者用户名
- host:主机
- runad:以那个身份运行
- TAG:标签
- command:命令
样例:
oracle ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel
注:上面的意思就是:oracle用户可以在任何地方以root身份无密码执行useradd有密码执行usermod。
3.2 别名(宏)
此外sudo还支持别名的定义,我们通过引用定义好的别名可以提供工作效率:
who User_Alias
which_hosts Host_Alias
runas Runas_Alias
command Cmnd_Alias
User_Alias | Host_Alias | Runas_Alias | Cmnd_Alias |
用户名 | 主机名 | 用户名 | 命令路径(全路径) |
组名(%) | IP 地址 | 组名(%) | 目录 |
其他User_Alias | 网络地址 | 其他Runas_Alias | 其他Cmnd_Alias |
其他Host_Alias |
3.3 使用visudo编辑配置文件(/etc/sudoers)
虽然我们可以使用vim直接来编辑sudo的配置文件,但sudo提供了更加智能的编辑命令visudo,它能在编辑配置文件的同时帮我们检查语法错误,并在错误时提供快捷的返回功能,相当nice。
注意在你使用visudo命令前,你有必要设置下EDITOR=vim来替换默认的vi,可以打开的时候语法高亮,看起来起来舒服多了。
[root@centos74 ~]$ vim ~/.bash_profile #编辑profile文件
# 添加如下行
export EDITOR=vim [root@centos74 ~]$ source ~/.bash_profile # 让其立即生效
/etc/sudoers是sudo的主配置文件,如果我们想设置sudo设置,建议在/etc/sudoers.d/下面创建文件编辑。
[root@centos74 sudoers.d]$ visudo -f /etc/sudoers.d/oracle2 # 这里我给oracle2用户一些sudo权限,命令会在sudoers.d目录下创建一个文件的。这个文件名貌似使用.conf结尾貌似不可以的。
3.4 常用选项
- -l:查看当前用户可以使用的所有sudo命令
- -g:以指定组执行
- -u:以指定用户身份执行
- -K:移除时间戳文件
- -k:时间戳为元年(下次就必须输入密码)
- -v:更新时间戳,时间戳默认5分钟,五分钟到就需要再次密码,使用-v可以续5分钟。
关于时间戳这个东西。我们默认使用sudo执行命令的时候,第一次是需要输入密码的,短时间内再次执行sudo命令是不需要再次输入密码的。这个时间是有时间戳控制的。我们可以指定-k修改时间戳为元年,下次在sudo执行命令就必须输入密码。
3.5常用实例讲解
3.5.1 oracle用户可以在任何地点以任何的身份执行所有命令,等同于root。
oracle ALL=(ALL) ALL
3.5.2 oracle2用户可以在任何地点以root的身份执行命令useradd(无需密码)和usermod(需要密码).
oracle2 ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel
这样oracle2就可以免密码useradd,有密码(密码为oracle2的自身密码)使用userdel。
使用方式如下
[oracle2@centos74 ~]$ useradd test001 # 直接使用命令是不可以的。
-bash: /usr/sbin/useradd: Permission denied
[oracle2@centos74 ~]$ sudo useradd test001 # 必须加sudo
[oracle2@centos74 ~]$ id test001 # 查看添加的用户信息
uid=(test001) gid=(test001) groups=(test001)
3.5.3 oracle3用户只能在192.168.1.120主机远程登录并以root身份执行ifconfig eth0命令。
Cmnd_Alias NETCMND = /sbin/ifconfig eth0
oracle3 192.168.1.120 = (root) NOPASSWD:NETCMND
3.5.4 oracle4用户可以执行/usr/sbin下的所有命令除了/usr/sbin/userdel
oracle4 ALL=(ALL) /usr/sbin/,!/usr/sbin/userdel
3.5.5 oracle5用户可以cat /var/log/secure*的文件
oracle5 ALL=(ALL) /bin/cat /var/log/secure*,!/bin/cat /var/log/secure* *
注意这个如果不加!后面的内容,用户可以执行如下命令cat /var/log/secure /etc/shadow 这样的命令随便查看系统的文件。很危险。
3.6 sudo的日志审计
为了能够明确的追究责任,sudo还提供了人性化的日志功能,在/var/log/secure日志文件中可以查看到,用于记录所有sudo类用户的所有动作。
sudo的使用和配置的更多相关文章
- sudo su 提示没有配置JDK environment
sudo su 提示没有配置JDK environment 最近工作遇到一问题,我通过SecureCRT远程登录服务器,部署web应用.将变更文件替换后,我需要切换到root用户,重启Tomcat.所 ...
- Sudo临时提权配置
目录 Sudo临时提权配置 参考 Sudo简介 Sudo配置文件 Sudo配置语法 Sudo配置实例 Sudo日志记录 Sudo临时提权配置
- Debian普通用户获取root权限|sudo的安装与配置
Debian系统的普通用户需要安装软件时,往往会收到“Permission denied”的提示,这时候需要root权限.那么如何在不登陆超级管理员账户的前提下拥有root权限呢?对于大多数Linux ...
- 配置sudo日志审计
1.检查sudo与syslog服务 centos [root@xiaoyuer ~]# rpm -qa|grep sudo sudo-1.8.6p3-24.el6.x86_64 [root@xiaoy ...
- SUDO_KILLER可以帮助你识别并利用错误的Sudo规则与配置
工具概述 SUDO_KILLER这款工具可以帮助我们通过多种渠道利用SUDO来在Linux环境下实现提权.该工具能够识别目标操作系统版本,并发现环境中sudo规则的错误配置.安全漏洞,以及不安全的代码 ...
- CentOS下sudo的使用和sudoers配置
一.sudo命令 sudo [参数选项] 命令 参数选项 -l:列出目前用户可执行与无法执行的指令: -v:延长密码有效期限5分钟: -u<用户>:以指定的用户作为新的身份.若不加上此参数 ...
- ubuntu-14.04-server配置Jexus --安装步骤记录
作者:郝喜路 个人主页:http://www.cnicode.com 博客地址:http://haoxilu.cnblogs.com 说明:我是Linux菜鸟,自己尝试配置Jexus服务 ...
- ubuntu 14.04LTS 环境下配置NFS服务
简言之,NFS(Network FileSystem,网络文件系统)用于在不同机器,不同操作系统之间通过网络互相分享各自的文件.NFS设计之初就是为了在不同的系统间使用,所以它的通讯协议设计与主机及操 ...
- niginx代理配置
常用关键词:rewrite.proxy_pass location ^~ /address/ { proxy_set_header Host xx.sohu.com; #设置header proxy_ ...
随机推荐
- SQL,group by分组后分别计算组内不同值的数量
select name as 姓名,sum( case when cargo='笔' then 1 else 0 end ) as 笔,sum( case when cargo='橡皮' then 1 ...
- bootstrap table使用参考
https://www.cnblogs.com/landeanfen/p/5821192.html 转载 阅读目录 一.x-editable组件介绍 二.bootstrapTable行内编辑初始方案 ...
- Activiti工作流数据库表详细介绍
Activiti的后台是有数据库的支持,所有的表都以ACT_开头. 第二部分是表示表的用途的两个字母标识. 用途也和服务的API对应. ACT_RE_*: 'RE'表示repository. 这个前缀 ...
- querySelectorAll选择器的js实现
自从标准浏览器增加了querySelector这个类JQ的方法后,选择一个元素变成了一件so easy的事情.但是某些浏览器还是不支持.使用jq库又有点太大,其实可以自己动手实现这个选择器,具体代码如 ...
- Converting Recursive Traversal to Iterator
In this article, I'm going to introduce a general pattern named Lazy Iterator for converting recursi ...
- 先序遍历DOM树的5种方法
DOM树由文档中的所有节点(元素节点.文本节点.注释节点等)所构成的一个树结构,DOM树的解析和构建是浏览器要实现的关键功能.既然DOM树是一个树结构,那么我们就可以使用遍历树结构的相关方法来对DOM ...
- 初探系列 — Pharbers用于单点登录的权限架构
一. 前言 就职公司 法伯科技是一家以数据科技为驱动, 专注于医药健康领域的循证咨询公司. 以数据科学家身份, 赋能医药行业. 让每位客户都能享受数据带来的价值, 洞察业务, 不止于数据, 让决策更精 ...
- Cobaltstrike、armitage联动
i 春秋作家:fengzi 原文来自:Cobaltstrike.armitage联动 在使用Cobaltstrike的时候发现他在大型或者比较复杂的内网环境中,作为内网拓展以及红队工具使用时拓展能力有 ...
- Java与Python比较心得01
Java 可以int + 字符串(str)输出,python则只可以用逗号 , 连接,或者字符串 + 字符串或int + int否则python会报错如下图:
- PHP调用百度地图API
//百度地理位置接口API $lat = 39.912108791024; $lng = 116.48299016095; $ak = "5slgyqGDENN7Sy7pw29IUvrZ&q ...