pam_exec указал вам верное направление, но setuid - плохой совет; большинство (все?) современных Linux игнорируют его в сценариях оболочки и уважают только двоичные исполняемые файлы.
Будет ли это проблемой, если сценарий выполнялся (как root) в другое время, кроме входа в систему? Если это нормально для того, чтобы он выполнялся чаще, чем строго требуется, вы можете создать скрипт-обертку, который будет выполняться при каждом входе в систему через ssh с правами пользователя, который использует sudo (без пароля) для выполнения вашего скрипта от имени root. Это, однако, означает, что пользователи также могут запускать его вручную (как пользователь root) так часто, как они этого хотят.
Чтобы настроить это, добавьте эту строку в /etc/pam.d/sshd
account optional pam_exec.so /etc/pam.d/LoginWrapper.sh
Затем создайте файл /etc/pam.d/LoginWrapper.sh с содержимым:
#!/bin/bash if [[ $EUID -ne 0 ]]; then # Execute only when a user other than root logs in /usr/bin/sudo /path/to/your/root_script.sh fi
Обратите внимание, что если ваш sudo находится на другом пути, вы должны обновить его выше.
Теперь в / etc / sudoers добавьте строку:
ALL ALL=(root) NOPASSWD: /path/to/your/root_script.sh