Как мне su как обычный пользователь без пароля?

1

Мне было интересно, если кто-то может помочь мне с моим сценарием.

У меня есть 2 сервера. Давайте назовем их сервером A и сервером B. На сервере B установлено программное обеспечение, которое я хотел бы запустить с сервера A. Я не могу установить программное обеспечение на сервере A.

Я должен позволить пользователям запускать другое программное обеспечение на сервере A, которое затем вызывает скрипт для вызова программного обеспечения на сервере B для запуска команды.

Таким образом, я создал пользователя с именем Transfer на сервере A и сервере B. Я позволил Transfer иметь возможность ssh на сервер B без ввода пароля с использованием ключей аутентификации.

Итак, теперь с сервера A я пытаюсь выполнить su в качестве передачи, ssh на сервер B и выполнить команду.

Это прекрасно работает как root. Однако, когда я сам или любой другой пользователь, он запрашивает у меня пароль для «переносящего» пользователя на сервере B.

Вот последовательность команд:

 #!/bin/bash
 su transfer -c 'ssh transfer@ServerB script $1 $2' 
John Blahson
источник
Это не спрашивает пароль на B; su от nonroot требуется пароль нового пользователя где это работает , что А, потому что Unix был спроектирован как многопользовательская система. Пытаться su transfer -c 'echo hi' чтобы увидеть это. Ты можешь использовать sudo чтобы позволить выбранным пользователям запускать этот конкретный ssh на А, или вы можете просто дать выбранным пользователям на А приватный ключ, который позволяет им использовать ssh чтобы получить доступ В как transferбез transfer пользователь на совсем.
dave_thompson_085

Ответы:

1

Создайте сценарий оболочки, который выполняет удаленную команду:

% cat > /home/transfer/exec-remote-sw <<EOF
#!/bin/bash
ssh transfer@ServerB script $1 $2
EOF
% chmod 755 /home/transfer/exec-remote-sw

Протестируйте этот скрипт, запустив его как transfer пользователь:

% /home/transfer/exec-remote-sw  arg1  arg2

Теперь в качестве пользователя root создайте группу Linux (например, transfer ) затем добавьте всех пользователей, которым необходим доступ к этой функции, в группу Unix:

% groupadd transfer
% usermod -a -G transfer login1
% usermod -a -G transfer login2
...
% usermod -a -G transfer loginN

От имени пользователя root добавьте следующее к /etc/sudoers файл, запустив visudo:

%transfer   serverA = (transfer) NOPASSWD: /home/transfer/exec-remote-sw

Протестируйте, войдя в систему как один из пользователей в группе передачи и запустив:

% sudo -u transfer /home/transfer/exec-remote-sw  arg1  arg2

Чтобы упростить это для ваших пользователей, попросите их добавить следующее в свои файлы .profile (или добавьте его в / etc / profile для всех):

alias svrbexec="sudo -u transfer /home/transfer/exec-remote-sw"

Затем пользователи могут ввести:

% svrbexec  arg1  arg2

и удаленный процесс должен выполняться с двумя переданными параметрами.

GLRoman
источник