操作Ansible时,如何限制一般使用者在sudo权限下仅能执行某些特定指令?

我的问题是在使用Ansible时,如何限制一般使用者(regular user)在sudo权限下只能实行某些指令,而不是像root user一样无限制。

举例来说,如果在managed node中有个regular user叫做"ianyc",且sudoers file里这样规范:

"ianyc ALL=(ALL) /bin/ls"

代表此user仅能透过sudo执行ls指令。

然而在Ansible controller node中,如果我执行以下playbook:

###

  • hosts: linux become: yes become_method: sudo vars_files:
  • /etc/ansible/sensitiveData.yml vars: ansible_become_pass: "{{ linuxSudoPassword }}" tasks:
  • name: list the directory command: ls /root register: result
  • debug: var=result ###

其中linux代表managed node群组而sensitiveData是vault file,存着sudo password。会得到下列错误资讯:

"Sorry, user ianyc is not allowed to execute '/bin/sh -c echo BECOME-SUCCESS-orzksvkkqakoaplykpvjkycejidpddgv; /usr/bin/python /home/ianyc/.ansible/tmp/ansible-tmp-1554271272.93-107453846539342/AnsiballZ_setup.py' as root on localhost.localdomain."

请问这是什么意思以及为何会发生此错误?

除此之外,我亦尝试将"/bin/sh"加入到sudoer file中:

"ianyc ALL=(ALL) /bin/ls, /bin/sh"

如此一来,Ansible是可以执行的,但是问题就会变成...

"不止sudo ls可以执行,而是全部指令都可以执行"

因此,我想问在操作Ansible时,有没有什么方法可以限制regular user使用sudo权限时只能做特定的某些事?

1

1个回答

将/bin/sudoers 当中你添加的/bin/sh 修改成/usr/bin/bash 同时可以附加上NOPASSWD 这样可以免密码操作,反正执行的权限你已经控制了

0
ianyc
ianyc 试过了还是一样呢,网上搜到有人说在ansible.cfg文件添加executable = /bin/bash。结果Ansible是可以执行的,但之后的问题一样: 变成所有指令皆可执行而不仅仅是sudoers file里规范的"ls"
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何设置允许某些用户执行sudo的命令
如何设置允许某些用户执行sudo的命令
sudo授权指定用户在指定主机上运行某些命令
sudo基本知识
为某用户设置sudo执行某命令的NOPASSWD权限
linux下为某用户设置sudo执行某命令的NOPASSWD权限在/etc/sudoers尾部添加#includedir /etc/sudoers.d这里的#号并不是注释然后在/etc/sudoers.d下存放具体的用户文件然后编辑这样就efa用户就可以使用sudo执行所有命令,并可以在执行/usr/local/sbin/EFA-Configure时,免密...
ansible 切换用户建立ssh连接并使用sudo 权限执行程序
Ansible 是一款非常有用的统一集群管理工具,安装简单不需要再被控节点安装客户端。介绍Ansible的文章已经很多了,本文不再对ansible做基础介绍。欢迎拍砖指正。 由于项目需求,需要使用ansible在控制节点以root身份运行playbook,并在playbook中调用其他程序操作/etc下的文件,所以该程序需要使用sudo或者root权限运行。
Linux 赋予普通用户执行特定权限sudo
sudo: switch user do something 可以让 某个user(WHO)以特定用户的身份权限(HOW),在什么机器上(Where),执行什么命令(What) 配置文件: /etc/sudoers 为保障语法的正确性,不建议vim直接编辑该配置文件; 编辑该配置文件使用visudo,visudo可以检查语法的正确性,相当于vi+sudo 如:   tony localh...
sudo给某些用户添加以root权限运行某些命令
给用户Li以root权限运行iptables、iotop、iftop命令 ps:User_Alias、Cmnd_Alias后的别名需为大写的字母组成的名称,否则保存时会报错 visudo然后添加一下几行: # User_Alias ADMINS = jsmith, mikem User_Alias NET_USERS = Li # Cmnd_A
Ansible普通用户sudo执行指令
一、应用场景 1.linux机器都禁止使用root远程登陆,需要ansible来实现切换用户文件分发。 二、实验步骤 1、配置资源清单hosts文件 [root@master playbook]# cat /etc/ansible/hosts [test_su] 192.168.1.232 ansible_ssh_user=saas ansible_ssh_pass='xE#bH2bm...
限制用户sudo所能执行的命令
<br />最近需要监控的同事登到一台服务器上重启apache和mysql,出于安全性的考虑,只能允许他们以root权限执行这两个操作。sudo可以做到这一 点。<br /> 首先创建一个监控用户monitor.<br /> 编辑/etc/sudoers,这个文件只能用visudo来编辑。<br /><br /> ##添加一个用户别名:<br /> User_Alias MONITOR = monitor<br /><br /> ##定义两个命令别名<br /> ## Restart http
linux用户命令权限限制
有时候我们需要只允许特定用户操作某些指令 两个方式: 一. chmod 1.指令降权:chmod -R o-x /bin/*  2.然后会发现其他用户无法登陆,接着 chmod o+x /bin/bash,就好了  (*表示所有,别学我胡搞,我这是虚拟机) 就这样其他用户组,无法执行所有/bin下面的命令,这个可得根据实际情况搞,别影响业务 二. setfacl(路由器,交换机也有
利用sudo控制用户对系统命令的使用权限
sudo相关概念普通用户涉及到超级权限的运用,管理员如果想让该普通用户通过su来切换到root获得超级权限,就必须把root权限密码告诉用户。但是如果普通用户有了root权限,可以通过root权限做任何事,这会对系统的安全造成一定的威胁。sudo是一种权限管理机制,管理员可以授权于一些普通用户去执行一些root执行的操作,而该普通用户而不需要知道root的密码,它依赖于/etc/sudoers这个文
linux 实现普通用户只允许使用部分命令
linux 实现普通用户只允许使用部分命令 由于公司奇葩需求,需要给所有开发用户开通所有服务器的只能查看权限,结合现有jumpserver实现扩展,搭建jumpserver省略,推送一个普通用户 接下来的操作都是在系统里,这里我写了一个脚本用于实现,只允许check_user用户执行 cat ls tail tailf命令 #!/bin/bash User="check_user"...
ansible 普通用户执行root权限 su
[root@web-10 ~]# ansible  -i /etc/ansible/hosts rt01 -s -m shell -a "netstat -tunpl" 加-s hosts配置文件添加ansible_su_pass 10.0.0.177 ansible_ssh_pass=xxxxx   ansible_su_pass=xxxx
linux限制ssh用户使用命令
假设有机器A和B,分别有帐户a和b,现在希望允许a能以b的身份登陆B,但是限制a仅能访问$HOME/bin下面的命令(比如作为中转机,要求只能使用ssh命令),可以如下操作:       1、在A上帐户a下生成RSA密匙对,并把公钥写入B的帐户b下的~/.ssh/authorized_keys中。       2、编辑~/.ssh/authorized_keys,在前面加上语句: comma
Linux限制普通用户只能使用某命令
[root@xiaolizi ~]# vim /etc/sudoers 例如 只给 cat 用户 只给 ls  命令权限   测试:
新建hadoop用户以及用户组,给予sudo权限
1、首先新建用户,adduser命令   sudo adduser hadoop   passwd hadoop   输入密码之后,一路 y 确定。 2、添加用户组   在创建hadoop用户的同时也创建了hadoop用户组,下面我们把hadoop用户加入到hadoop用户组下面   sudo usermod -a -G hadoop hadoop   前面一个hadoop是组名,后...
ansible 可以登入,执行不了命令
可以使用-c paramiko排查 发现clinet中的/etc/ssh/sshd_conf中路径有问题 Subsystem sftp /usr/libexec/sftp-server
SHELL实现跳板机,只允许用户执行少量允许的命令
整理自:http://blog.chinaunix.net/uid-22101889-id-3167454.html 注意:请谨慎使用,到现在为止,还没找到改回去的方法。  SHELL实现跳板机,只允许用户执行少量允许的命令  两个问题。 第一、很多大公司的服务器都不允许直接登录,而是通过一个跳板机才能登录过去。在跳板机中,通常只能执行几个少数命
增加普通用户的sudo权限,禁止root用户登录
假如增加用户zhangsan的sudo权限。 修改/etc/sudoers文件,在root下增加如下一行。     增加用户名zhangsan:     禁止root用户登录: 修改/etc/ssh/sshd_config文件, 将 PermitRootLogin前的#号去掉,yes改为no,重启network。     按照以上方法,root用户将不能登录,则使
[centos]给予用户sudo命令的权限
新增用户useradd username设置密码passwd username加入sudo,打开sudo配置文件visudo找到下面这两行,并在下面新增红色部分## Allow root to run any commands anywhere root ALL=(ALL) ALL username ALL=(ALL) ALL
初学ansible,执行ansible命令时,用到的host里面被管理机的账号密码问题,测试
参考文档 http://blog.51cto.com/191226139/2066936 安装完ansible后进行了第一个非常小的实验,用ping测试被管理机的状态: 本人在hosts里面设置了两个IP,登录密码和管理机的密码全都是一样的,在执行命令输入密码时产生了疑惑: 我输入的密码到底是管理机的密码,还是被管理机的密码? 被管理机的root密码和普通用户密码有区别吗? 带着这个疑...
赋予普通用户sudo执行权限
切换到root用户 vi /etc/sudoers 找到 ## Allow root to run any commands anywhere root    ALL=(ALL)       ALL pacey   ALL=(ALL)       ALL //添加该行
linux sudo权限分配
2018-03-29 吴升 sudo权限统一分配 背景:linux的安全很大程度上依赖于权限的分配,而目前线上机器sudo权限的分配统一以ALL的形式分配,很容易因为误操作而造成一些不可恢复的错误,因此现在需要重新细化sudo权限,以保障linux环境的安全。 原理:linux /etc/sudoers中已为我们提供了权限细化的example,我们通过定义主机群,定义用户组,定义...
普通用户执行sudo命令方法
xxx is not in the sudoers file.This incident will be reported.的解决方法 1.切换到root用户下,怎么切换就不用说了吧,不会的自己百度去. 2.添加sudo文件的写权限,命令是: chmod u+w /etc/sudoers 3.编辑sudoers文件 vi /etc/sudoers 找到这行 ro
ansible常用命令
ad-hoc常用命令是用来解决一些常用的简单的配置命令,而且这些命令的执行速度很快。adhoc可以不用写playbooks,使用方便简单。 man ansible ansible [-f forks] [-m module] [-a args] ARGUMENTS     pattern         组名,或者主机名,匹配hosts文件。 OPTIONS     -
ansible小结(十一)ansible普通用户su切换问题
在之前我曾总结了一点ansible系列博文,本篇还承接之前的篇幅吧。在现网应用中,安全加固后的主机是不允许直接以root用户登陆的,而很多命令又需要root用户来执行,在不改造现网的情况下。希望通过一个普通用户先登陆,再su切到root执行。而且每台主机的普通用户和root用户的密码又不同。希望在通过ansible执行的时候不需要交互输入密码,而是直接执行后输出结果。 一、ansible h
sudo 命令与权限配置讲解
sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。sudo命令的配置文件位于 /etc/sudoers 当然也可以将不同的用户以不同文件进行分别配置sudo权限,这样便于批量控制
linux 下普通用户无法使用sudo命令的解决方法
装完linux系统,发现普通用户无法使用sudo 命令,下普通用户无法使用sudo命令的解决方法" alt="linux 下普通用户无法使用sudo命令的解决方法" src="http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___6719EN00SIGG.gif" type="face"> 提示:xinhuan(普通用户)is not in the
ansible普通用户使用chown改变文件所属人和所属组权限不够问题
~/test&amp;gt; pwd /home/was_wcm/test ~/test&amp;gt; ll total 0 -rw------- 1 testuser testuser 0 Dec 19 17:46 a.txt ~/test&amp;gt; chown -R nginx:nginx a.txt  chown: changing ownership of `a.txt': Operation...
Centos下普通用户设置sudo权限
若执行sudo命令的用户没有sodu权限,则会报一下错误violet is not in the sudoers file.This incident will be reported若想让violet用户拥有sudo权限,则需要修改sudoers文件# 首先切换为root用户 su root# 修改sudoers文件 vim /etc/sudoers# 找到权限设置,如下 root ALL=
Linux下权限管理-文件系统属性权限chattr/sudo
一、 可以连root一块限制。 最有有了i属性,只能用lsattr才能查看,ls以及不行了。 结果如下: 二、sudo 第一个ALL,是指用户执行命令的机器。 这样就是只能执行这个带参数-r的命令。 首先,在/etc/sudoers/中添加需要的命令,仿照例子,然后执行上面的4即先切换用户,然后执行给
如何把一个命令加入到某个用户sudo的列表中
如何把一个命令加入到某个用户sudo的列表中 标签: uservim 2011-09-22 18:51 4577人阅读 评论(2) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载。            有时候我们只需要执行一条root权限的命令也要su到root,是不是有些不方便?这时可以用sudo代替。默认新建的用户不在sudo组,需要编辑/etc/sudoers文件将
SSRS部署報錯:授與使用者 'domain\username' 的權限不足,無法執行此作業
右鍵sql server data tools,選擇“以系統管理員身份”執行,然後再選擇開啟專案,這樣部署就可以了 猜測是os相關的權限問題,mark
树莓派上php通过sudo执行root权限的程序
1、问题和原因         树莓派上的PHP主页无法运行具有root权限的命令或脚本原因,并不是PHP无法执行,而是Apache的权限不够!!!! 2、PHP运行shell脚本或Python的方法        php给我们提供了system(),exec(),passthru()这三个函数来调用外部的命令.        虽然这三个命令都能执行linux系统的shell命令,
Linux中限制用户访问权限的3种方法
Linux中限制用户访问权限的3种方法
centos给用户添加sudo权限
linux给用户添加sudo权限:  有时候,linux下面运行sudo命令,会提示类似:  xxxis not in the sudoers file.  This incident will be reported.  这里,xxx是用户名称,然后导致无法执行sudo命令,这时候,如下解决: 1进入超级用户模式。也就是输入"su -",系统会让你输入超级用户密码,输入密码后就进
centos 中特定用户用sudo 执行命令不需要输入密码的设置
java用户在执行下面命令时不需要手动输入密码sudo /usr/local/nginx/sbin/nginx -s reload 在/etc/sudoers文件中添加:java ALL=(ALL) NOPASSWD: /usr/local/nginx/sbin/nginx 添加后的文件如下:## Next comes the main part: which users can run
Linux:sudo选择特定用户身份执行某命令(集)
Linux:sudo选择特定用户身份执行某命令(集) sudo = switch user do sudo allows a permitted user to execute a command as the superuser or another user, as specified by the security policy. 有时我们有这样的需求: 让一个普通用户以某个特定的用...
linux下普通用户使用sudo不用输入密码的方法
如果想让meki用户使用sudo不用输入密码只要在该文件后面添加"meki ALL = NOPASSWD: ALL"这样一行即可。 如果想让 meki用户sudo不用密码即可执行某几个命令,可这样写"meki ALL = NOPASSWD: /usr/bin/abc.sh, /usr/sbin/adduser"。
FTP用户权限的限制配置方法
    这篇是关于ftp的文档,其作用是在ftp中创建用户时,对其权限进行限定。使创建的用户只能在指定文件夹下上传文件和下载文件,这样可以加强ftp的安全性。    具体操作步骤如下: 创建用于ftp的帐户:#mkdir /home/ftp                                          #创建ftp根目录#useradd  -d   /home/ftp
Ansible 使用普通用户远程执行playbook
设置ansible使用普通用户jsxge远程连接执行playbook 1. ansible控制端创建普通用户jsxgecd /homeuseradd jsxgechown -R jsxge.wheel jsxgeecho &quot;123456&quot; | passwd --stdin jsxge 2. ansible控制端创建jsxge用户keycd /homemkdir -p jsxge/.ssh/chmo...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 大数据培训一般几个月 一般java培训时间

相似问题

1
操作Ansible时,如何限制一般使用者在sudo权限下仅能执行某些特定指令?
1
Ubuntu系统Pycharm安装Scrapy相关的包libxml2dom时报了个错SyntaxError: invalid syntax
0
RF框架运行自动化脚本,如何自动加载flash???
1
如何把下面的代码改成能测试一个文件夹下所有的图片?
2
python groupby问题,如何取出现过最多的人名和所有人的平均成绩
2
python如何抽取txt文件中用tab分隔的第一个字符串并去重?
1
OpenOPC只能读取OPC服务器初始数据,如何解决?
0
vgg16计算反向传播时,无法读取全连接层
1
等高线图如何只画出负值区?(读取的nc文件为4维数值)
0
自动化测试脚本报错之使用第三方账号登录时,selenium定位不到元素“Unable to locate element”
2
如何解决pandas新建excel表中,卡号出现科学计数数字的问题?
2
python爬虫中用xpath总是获取不到内容,希望大家帮我看看这两个网页中所需内容如何定位?谢谢~
1
使用unittest框架编写的自动化测试代码,中在调用执行测试用例问题,急用
2
python如何把字符串"24 Mar 2019”转化成标准的日期格式2019-03-24
1
win8 卸载 python3.7,使用原来安装包卸载出现()x80070643-安装时发生严重错误?
0
Linux 下 FreeCAD 如何导出图纸
1
Python:如何读取CSV里1000个网页,然后按序存1000个网页HAR data,自动化
2
excel如何把一行分成多行 大约是10行分成2个五行 不是在一个单元格里面的数据
3
在书上看到这样一段代码 不知道这段1代码如何运行。
0
MatPlotLib中如何设置坐标轴主刻度线和次刻度线在图的里面呢