ianyc 2019-04-03 14:55 采纳率: 0%
浏览 817

操作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条回答 默认 最新

  • qq_34623929 2019-04-03 15:16
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 一道python难题
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度