Я вижу, вы используете sudo
, чтобы стать root, а затем su
, чтобы стать s_user
. Для этого вы будете использовать свой пароль (для sudo
). Вам не нужен пароль для s_user
.
Вы могли бы сделать это, добавив свой ключ ssh к учетной записи s_user
, но я думаю, что это решение в данном случае не оптимально -.
Сначала отмечу, что su
вам не нужен, и лучше его не использовать. Поэтому вместо sudo su - s_user -c command
сделайте sudo -u s_user command
. Вас все равно попросят ввести пароль. Однако теперь вы можете настроить/etc/sudoers
Добавить файл /etc/sudoers.d/s_commands
, содержащий что-то вроде (, но проверенный, с/usr/bin/visudo
):
Cmnd_Alias S_COMMAND=/usr/bin/command, /usr/bin/anotherCommand
%s_group ALL = (s_user) NOPASSWD : S_COMMAND
Это позволит использовать эти команды без пароля, как пользователь s _, но только для пользователей в группе s _группе (вам нужно будет добавить группу ).
Затем установите псевдоним оболочки, что-то вроде:alias s_command="sudo -u s_user command"
.
Примечания:
su
принимает пароль пользователя, на которого вы переключаетесь. sudo
по умолчанию использует пароль пользователя (, с которого вы переключаетесь ). sudo
не читает пароль со стандартного ввода, он читает с tty. Еще одна вещь, которую следует учитывать, это то, что даже если вы запустите свою программу с #!/bin/bash
, она не выполнит.bashrc, так как это неинтерактивный экземпляр bash
.