【发布时间】:2019-10-29 19:21:48
【问题描述】:
我有一个关于如何以 root 身份运行命令的问题。剧本很简单,创建一个文件夹,然后更改所有者和组
- name: install-home-db | Create scatch directory only if it is needed
become: yes
file:
path: "{{ scratch_patch }}/oracle_{{ db_version | replace('.', '_') }}"
mode: 775
owner: "{{ oracle_user }}"
group: "{{ oracle_group }}"
state: directory
register: oracle_medias
创建文件夹没有问题,问题是要设置用户和组
在远程服务器我没有权限运行任何 sudo 命令,但如果启动命令我可以成为 root 用户
sudo rootsh -i -u root
请注意,如果我只运行此命令,我只能成为 root 用户
sudo rootsh -u root
不起作用并返回
Sorry, user fcruzloz is not allowed to execute '/usr/bin/rootsh -u root' as root on dcplnx22121944.
那么我怎样才能使用 root 用户运行命令呢? 我尝试在 ansible.cfg 中设置以下参数
[defaults]
host_key_checking = false
# ask_pass = True
inventory = inventory/hosts
allow_world_readable_tmpfiles = true
remote_user = fcruzloz
executable = /bin/bash
timeout = 50
[privilege_escalation]
become_exe = sudo rootsh
become_user = root
become_flags = -i
但它仍然失败,因为权限,当运行带有 -vvv 的 ansible 命令时,我认为罪魁祸首行低于一个
<2a00:da9:2:21ca:111:0:427:1> SSH: EXEC ssh -o ControlMaster=no -o ServerAliveInterval=50 -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="fcruzloz"' -o ConnectTimeout=50 -tt 2a00:da9:2:21ca:111:0:427:1 '/bin/bash -c '"'"'sudo rootsh -i -u root /bin/bash -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-eybzqcaxfeytghcwykijkpeqdlpzphdq ; /usr/bin/python /home/admin/fcruzloz/.ansible/tmp/ansible-tmp-1570663425.52-9612101629719/AnsiballZ_file.py'"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
在检查 /var/log/messages 中的错误时这是有道理的
2019-10-09T16:24:15.472458-07:00 dcplnx22121944 sudo: fcruzloz : command not allowed ; TTY=pts/14 ; PWD=/home/admin/fcruzloz ; USER=root ; COMMAND=/usr/bin/rootsh -i -u root /bin/bash -c echo BECOME-SUCCESS-eybzqcaxfeytghcwykijkpeqdlpzphdq ; /usr/bin/python /home/admin/fcruzloz/.ansible/tmp/ansible-tmp-1570663425.52-9612101629719/AnsiballZ_file.py
2019-10-09T16:24:15.625928-07:00 dcplnx22121944 sshd[16027]: Connection closed by 2a00:da9:ffa0:8601::2
如果我直接在服务器中运行 ansible 命令,我的意思是如下所示(它不是完全相同的命令),它会失败
fcruzloz@dcplnx22121944:/home/admin/fcruzloz> sudo rootsh -i -u root /bin/bash -c 'echo test'
Sorry, user fcruzloz is not allowed to execute '/usr/bin/rootsh -i -u root /bin/bash -c echo test' as root on dcplnx22121944.
我想我需要做一些事情,比如将命令重定向到新的 root shell,但我不能这样做,我尝试使用 openvt 但我没有得到它
那么你有什么想法吗? 非常感谢您的帮助
我的控制机制低于 linux 风格
NAME="SLES"
VERSION="12-SP2"
VERSION_ID="12.2"
PRETTY_NAME="SUSE Linux Enterprise Server 12 SP2"
ID="sles"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:suse:sles:12:sp2"
SUSE Linux Enterprise Server 12 (x86_64)
VERSION = 12
PATCHLEVEL = 2
【问题讨论】:
标签: ansible