Автоматическое переключение пароля пользователя в скрипте

Я должен написать скрипт, и он требует привилегий суперпользователя для запуска некоторых комманд Linux и остановки & amp; начать некоторые услуги. Меня попросили полностью отключить доступ sudo для всех пользователей (поскольку обычные пользователи могут получить доступ к root с помощью команды 'sudo -s'), и я сделал это. Поэтому я ищу сценарий для автоматизации смены пароля пользователя (su), который не требует вмешательства пользователя.

РЕДАКТИРОВАТЬ : 1

В ходе дальнейших исследований я получил следующий сценарий, который мне нужен:

#!/usr/bin/python
import pexpect
import os
passwd = "my-root-password-here"
child = pexpect.spawn('su root')
child.expect('Password:')
child.sendline(passwd)
child.expect(' 

Я проверил этот сценарий выполнив вход вручную как обычный пользователь, и он без проблем переключился на root. Но когда я набираю exit/ctrl+d, чтобы вернуться к обычному пользователю, я получаю следующую ошибку:

Traceback (most recent call last):
 File "./su3.py", line 9, in <module>
  child.interact()
File "/usr/lib/python2.6/dist-packages/pexpect.py", line 1492, in interact
  self.__interact_copy(escape_character, input_filter, output_filter)
File "/usr/lib/python2.6/dist-packages/pexpect.py", line 1520, in __interact_copy
  data = self.__interact_read(self.child_fd)
File "/usr/lib/python2.6/dist-packages/pexpect.py", line 1510, in __interact_read
  return os.read(fd, 1000)
OSError: [Errno 5] Input/output error

любая помощь ...

) child.interact()

Я проверил этот сценарий выполнив вход вручную как обычный пользователь, и он без проблем переключился на root. Но когда я набираю exit/ctrl+d, чтобы вернуться к обычному пользователю, я получаю следующую ошибку:

Traceback (most recent call last):
 File "./su3.py", line 9, in <module>
  child.interact()
File "/usr/lib/python2.6/dist-packages/pexpect.py", line 1492, in interact
  self.__interact_copy(escape_character, input_filter, output_filter)
File "/usr/lib/python2.6/dist-packages/pexpect.py", line 1520, in __interact_copy
  data = self.__interact_read(self.child_fd)
File "/usr/lib/python2.6/dist-packages/pexpect.py", line 1510, in __interact_read
  return os.read(fd, 1000)
OSError: [Errno 5] Input/output error

любая помощь ...

0
задан 13 November 2017 в 13:42

3 ответа

Пользователи не могут запустить sudo -s, если у них нет прав на запуск какой бы то ни было ОБОЛОЧКИ.

Вы хотите, чтобы ваши пользователи точно сообщали вам , какие команды они хотят выполнять. Будьте особенно осторожны, чтобы любые команды, которые они хотят выполнить, принадлежали root , поэтому они не могут заменить их чем-то, что повышает их привилегии позже.

Если они хотят иметь возможность запустить ifconfig, например,

%netadmins ALL=(ALL) NOPASSWD: /sbin/ifconfig

Попробуйте, и вы увидите, что группа netadmins может запускать только /sbin/ifconfig без ввода пароля от имени пользователя root .

0
ответ дан 13 November 2017 в 13:42

Если вам нужно запустить этот скрипт от имени пользователя, не являющегося пользователем root, вам следует настроить sudo, чтобы разрешить это. Вы можете настроить sudo для пользователя или группы, чтобы разрешить все или только определенные команды, с паролем или без него. Полностью отключить sudo для всех пользователей, вероятно, не то, что вы хотите ...

0
ответ дан 13 November 2017 в 13:42

Вы можете установить бит выполнения закрепления в этом сценарии, чтобы он всегда выполнялся как владелец сценария. Нечто подобное chmod 4750 script_name

Ожидайте можно использовать для автоматизации ответов в сценарии. Будьте осторожны с любым из них, так как они могут представлять угрозу безопасности, особенно когда вы предоставляете обычным пользователям повышенные привилегии.

Правильная настройка sudo, а не его полное отключение, как сказал JanC, вероятно, является лучшим решением.

0
ответ дан 13 November 2017 в 13:42

Другие вопросы по тегам:

Похожие вопросы: