У меня есть вопрос о том, как запускать команды от имени пользователя root. Playbook действительно прост, создайте папку и после этого смените владельца и группу
- 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
Но он все еще не работает, потому что разрешения, при запуске команды ansible с -vvv, я думаю, что строка виновника ниже 1
<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.
Я думаю, мне нужно сделать что-то вроде перенаправления команды в новую корневую оболочку, но я не смог этого сделать, я попытался с 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