操作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"
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何设置允许某些用户执行sudo的命令
如何设置允许某些用户执行sudo的命令
ansible 普通用户执行root权限操作
ansible -h可以看到有 --become (-b) --become-method --become-user --ask-become-pass (-K)大写K 四个参数,利用这四个参数可以在ansible命令和playbook中用普通用户执行root操作。 命令:ansible 10.12.3.27,10.31.2.38 -m shell -a 'date' -...
sudo授权指定用户在指定主机上运行某些命令
sudo基本知识
ansible 切换用户建立ssh连接并使用sudo 权限执行程序
Ansible 是一款非常有用的统一集群管理工具,安装简单不需要再被控节点安装客户端。介绍Ansible的文章已经很多了,本文不再对ansible做基础介绍。欢迎拍砖指正。 由于项目需求,需要使用ansible在控制节点以root身份运行playbook,并在playbook中调用其他程序操作/etc下的文件,所以该程序需要使用sudo或者root权限运行。
为某用户设置sudo执行某命令的NOPASSWD权限
linux下为某用户设置sudo执行某命令的NOPASSWD权限在/etc/sudoers尾部添加#includedir /etc/sudoers.d这里的#号并不是注释然后在/etc/sudoers.d下存放具体的用户文件然后编辑这样就efa用户就可以使用sudo执行所有命令,并可以在执行/usr/local/sbin/EFA-Configure时,免密...
linux 实现普通用户只允许使用部分命令
linux 实现普通用户只允许使用部分命令 由于公司奇葩需求,需要给所有开发用户开通所有服务器的只能查看权限,结合现有jumpserver实现扩展,搭建jumpserver省略,推送一个普通用户 接下来的操作都是在系统里,这里我写了一个脚本用于实现,只允许check_user用户执行 cat ls tail tailf命令 #!/bin/bash User="check_user"...
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 普通用户执行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用户命令权限限制
有时候我们需要只允许特定用户操作某些指令 两个方式: 一. 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这个文
ansible生产环境通过普通用户账号切到root执行命令,使用sed修改密码过期时间
https://www.cnblogs.com/yum777/p/6491254.html 执行的ansible命令最好都重定向到 >>xxx 里面去吧, 好看有哪些错误的 ,每执行一个命令都进去检查下 1.检查jdk版本: 这个没办法 ,只能手动啦,我丢,反正进去要先登录一下,顺便看吧,丢 2.dev账号传文件 ansible weige -m copy -a “sr...
Linux 赋予普通用户执行特定权限sudo
sudo: switch user do something 可以让 某个user(WHO)以特定用户的身份权限(HOW),在什么机器上(Where),执行什么命令(What) 配置文件: /etc/sudoers 为保障语法的正确性,不建议vim直接编辑该配置文件; 编辑该配置文件使用visudo,visudo可以检查语法的正确性,相当于vi+sudo 如:   tony localh...
visudo限制普通用户的特权操作
ALL=(ALL)NOPASSWD:/usr/sbin/*,/sbin/*,/usr/bin/*,!/usr/sbin/user*,!/usr/bin/passwd,!/usr/bin/rm,!/usr/bin/ssh*,!/usr/sbin/visudo,!/usr/bin/vim /etc/sudoers  
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. 有时我们有这样的需求: 让一个普通用户以某个特定的用...
ansible 可以登入,执行不了命令
可以使用-c paramiko排查 发现clinet中的/etc/ssh/sshd_conf中路径有问题 Subsystem sftp /usr/libexec/sftp-server
新建hadoop用户以及用户组,给予sudo权限
1、首先新建用户,adduser命令   sudo adduser hadoop   passwd hadoop   输入密码之后,一路 y 确定。 2、添加用户组   在创建hadoop用户的同时也创建了hadoop用户组,下面我们把hadoop用户加入到hadoop用户组下面   sudo usermod -a -G hadoop hadoop   前面一个hadoop是组名,后...
visudo限制普通用户的特权操作sudo
在ubuntu系统中,一般常用sudo命令来临时获得root权限执行一些特权命令。这很方便,但是也有一个问题: 普通用户可以通过sudo命令完成用户的增删和密码的更改,甚至是对root用户的密码更改!!! 如:xxx@yyy$:sudo passwd root Input the new UNIX pass word: 这样,就可以直接越过root直接修改root 的密码。这是非常危险的。解决方法
SSRS部署報錯:授與使用者 'domain\username' 的權限不足,無法執行此作業
右鍵sql server data tools,選擇“以系統管理員身份”執行,然後再選擇開啟專案,這樣部署就可以了 猜測是os相關的權限問題,mark
赋予普通用户sudo执行权限
切换到root用户 vi /etc/sudoers 找到 ## Allow root to run any commands anywhere root    ALL=(ALL)       ALL pacey   ALL=(ALL)       ALL //添加该行
Linux基本防护措施 ;使用sudo分配管理权限;提高SSH服务安全
  1 Linux基本防护措施 1.1 问题 本案例要求练习Linux系统的基本防护措施,完成以下任务: 修改用户zhangsan的账号属性,设置为2015-12-31日失效(禁止登录) 锁定用户lisi的账户,使其无法登录,验证效果后解除锁定 锁定文件/etc/resolv.conf、/etc/hosts,以防止其内容被无意中修改 修改tty终端提示,使得登录前看到的第一行文本...
Linux下权限管理-文件系统属性权限chattr/sudo
一、 可以连root一块限制。 最有有了i属性,只能用lsattr才能查看,ls以及不行了。 结果如下: 二、sudo 第一个ALL,是指用户执行命令的机器。 这样就是只能执行这个带参数-r的命令。 首先,在/etc/sudoers/中添加需要的命令,仿照例子,然后执行上面的4即先切换用户,然后执行给
【Absible学习】Ansible普通用户sudo执行指令
最近公司将linux机器都禁止使用root直接远程登陆,而机器上项目都是在root下创建的,平时都是通过一台linux机器通过scp分发文件到多台linux机器,这样一来,就无法直接使用scp来分发文件,于是,我们用到了ansible来实现文件分发。 环境:Ansible服务端操作系统:CentOS Linux release 7.5.1804 (Core)Ansible服务端Ansible版本:...
Linux下如何让普通用户具备sudo执行权限
我这里的普通用户是hadoop第一步:切换到root下:su,并输入密码第二步:输入  vi /etc/sudoers,加入一行即可找到  root   ALL=(ALL)   ALL加入一行即可:将该普通用户加入权限:hadoop   ALL=(ALL)    ALL...
Python在Ubuntun环境执行subprocess以sudo权限执行命令
import subprocess     d = subprocess.Popen("sudo  -S chmod 777 /home/auto1/a.txt", stdin=subprocess.PIPE,                         stderr=subprocess.PIPE, stdout=subprocess.PIPE, universal_newlines=Tru...
ansible.cfg 参数配置
Ansible 配置是以ini格式存储数据的,在Ansible中,几乎所有配置都可以通过Ansible的Playbook或环境变量来重新赋值。在运行Ansible命令时,命令将会按照预先设定的顺序查找配置文件1)ANSIBLE_CONFIG:首先,Ansible命令会检查环境变量,及这个环境变量将指向的配置文件 2)./ansible.cfg:其次,将会检查当前目录下的ansible.cfg配置文
nginx 禁止特定目录执行php
location ~^/pup/upload/.*.(php|php5)$ { deny all; } location ~^/pup/ueditor/.*.(php|php5)$ { deny all; }  
PowerShell 如何让普通用户以管理员权限执行程序
Windows的客户端管理经常会遇见一个场景,用户需要升级某个软件,但是需要管理员权限,如果是那些没有通过组策略或者SCCM发布的程序,那么桌面支持需要亲自跑过去,输入管理员用户和密码提升权限进行操作。 那么怎么才能让普通的用户能够以管理员权限执行某个程序呢? 最简单的方法是创建个快捷方式,路径上指定runas的管理员账号和密码,文件的路径就可以执行了。不过这样的缺点是密码账号都是明文显示的,用户...
Linux下禁止root用户远程登录的方法和创建用户允许sudo权限
1)vi /etc/ssh/sshd_config,将PermitRootLogin的值改成no,并保存 2)service sshd restart   这样,就能用roo禁用ssh登录了。   创建用户允许sudo权限------ 创建一个用户比如:#useradd master 设置密码: #passwd master 添加master账号有sudo权限,如下: #vi...
5-1·Ansible的流程控制、错误判断、Handlers
一·构建流控制(Flow Control) 1)Ansible 循环: Ansible 支持许多循环格式,以迭代一个数组中定义的一组值 要将循环作为参数传递,需要将 item 关键字用于 Ansible 来解析该数组 2)Ansible 支持的循环: 简单循环:简单循环是 Ansible 读取并迭代的一组项目。它们通过将一组项目提供给 with_items 关键字来定义 h...
linux限制用户命令方法
linux 限制用户命令方法 linux 上想限制用户可以执行的命令,可以通过环境变量和安装lshell工具方式。 环境变量的方式 脚本放在 /etc/profile.d/ 下,每个用户登入的时候都交脚在这里的环境变量。 脚本中判断当前用户,root 用户不受权限。 二,lshell 工具 我的博客已经迁移到github上,请访问github地址:https://sukbeta.github.io...
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权限分配
2018-03-29 吴升 sudo权限统一分配 背景:linux的安全很大程度上依赖于权限的分配,而目前线上机器sudo权限的分配统一以ALL的形式分配,很容易因为误操作而造成一些不可恢复的错误,因此现在需要重新细化sudo权限,以保障linux环境的安全。 原理:linux /etc/sudoers中已为我们提供了权限细化的example,我们通过定义主机群,定义用户组,定义...
linux权限管理四——chattr和sudo权限控制
上篇文章介绍了ACL权限管理,通过设定 ACL ,我们可以为某个用户指定某个文件的特定权限。这篇文章说到的两个指令更加强大,甚至可以直接限制到root用户。 01、我的文件不想让别人动:chattr 001、设定文件的系统属性:chattr chattr [+-=][选项] 文件或目录名 +:增加权限 -:删除权限 ...
ansible自己练习,有点乱
一片比较简单但是比较完成的ansible介绍文档,大家可以看一下http://www.mamicode.com/info-detail-1428476.html   Ansible安装   pip install ansible Yum -y installl anbible   配置被管理主机的分组名称,IP地址,端口号,秘钥文件,ssh连接用户 [testhost]
Pycharm以root权限运行脚本
    因为权限不够,导致Pycharm在运行脚本时报错:socket.error: [Errno 1] Operation not permitted    网上有一些修改文件使得Pycharm运行脚本时可以不需要密码的以root权限运行。    但是大多操作雷同,估计是复制粘贴的,而且下方有几条评论表示IDE报错。    在跟随他操作到最后时发现无法继续,就干脆用简单粗暴的方式,以sudo启动...
centos 系统禁止普通用户使用crontab命令
cron计划任务默认root用户与非root用户都可以执行,当然如果在安全方面想禁用这部分用户,则可以通过两个文件来解决: cron.allow cron.deny cron.allow:定义允许使用crontab命令的用户 cron.deny:定义拒绝使用crontab命令的用户这两个文件有优先级,普通用户在执行crontab命令的时候 1、系统先检测cron.allow文件是否存在;如果存在
CentOS赋予用户使用sudo等命令的权利
CentOS赋予用户使用sudo等命令的权利   1. 取得root权限 su root   2. 编辑sudoers文件 命令:visudo或者vi /etc/sudoers   3. 为用户添加root所有权限 ## Next comes the main part: which users can run what software on ## which mach...
ansible命令执行模块使用
ansible命令执行模块使用 1、命令执行模块-command 在远程节点上运行命令。 命令模块使用命令名称,接上空格-的分割符作为参数使用,但是不支持管道符和变量等,如果要使用这些,那么可以使用shell模块。 参数 必填 默认 选项 说明 Chdir ...
linux在vim保存时获取sudo权限
有些时候用vim打开一些系统文件需要进行修改,改完之后发现没有进行sudo操作或者没有切到root权限下,通过网络搜索发现,其实在vim中是可以获取sudo权限并进行保存文件操作的。:w ! sudo tee %       命令:w ! {cmd},让vim执行一个外部命令{cmd},然后把当前缓冲区的内容从stdin出入。       tee是一个把stdin保存到文件的小工具。    
为什么执行ping命令时不需要root权限? 怎样让进程具有root权限?
     最近遇到一个问题, 需要让普通用户执行程序时具有root权限, 怎么办呢?     我们来看看ping, 它采用了raw socket, 需要root权限, 但是, 我们平常执行root命令的时候, 没有加sudo啊, 来探个究竟:ubuntu@VM-0-15-ubuntu:~/taoge/raw_soc$ ll `which ping` -rwsr-xr-x 1 root root 4...