Я создал пользователя для запуска определенного процесса только от имени этого пользователя:
sudo useradd -r -s /bin/false -d /var/lib/my_app123 my_user123
Теперь, чтобы запустить этот процесс от имени my_user123, я делаю следующее:
su - my_user123
1) И он спрашивает у меня пароль. Какой пароль? нет пароля для "my_user123". Как это исправить?
2) Или как правильно запустить "/ var / lib / my_app123 / some_process" как "my_user123"?
Сам sudo работает нормально.
Либо вы можете указать правильную системную оболочку:
su - youruser -s /bin/bash -c "yourcommand"
Или запустите команды с помощью sudo, это будет работать, даже если у пользователя нет допустимой оболочки, как в вашем случае.
Или вы не сможете войти в систему с помощью su, поскольку вы указали / bin / false в качестве оболочки для вашего пользователя. Вот почему система запрашивает пароль.
sudo
и su
это совершенно разные программы. Вот как su
работает: если вы не root, он запрашивает пароль цели (su
bstitute) пользователь. Условие, что вы еще не установили пароль, не меняет этого; использовать passwd
чтобы добавить пароль для пользователя. Если вам нужно запускать команды от имени другого пользователя, не зная или не давая пароля этого пользователя, вы должны использовать sudo
вместо этого.
С точки зрения безопасности, возможно, лучше настроить и использовать судо вместо того
su
. Вsudo
система предложит вам ввести собственный пароль - или вообще не ввести пароль, если он настроен таким образом, - а не пароль целевого пользователя (учетная запись пользователя, которую вы пытаетесь использовать). Таким образом, вам не нужно обмениваться паролями между пользователями, и если вам когда-либо понадобится запретить пользователю иметь root-доступ (или доступ к любой другой учетной записи, если на то пошло), вам не нужно менять пароль root, который является неудобства для всех остальных; вам нужно только отозвать доступ sudo этого пользователя.
В sudo
эквивалент для su - user
является sudo -u user -s
. Если вы хотите сделать это без использования собственного пароля, вам необходимо visudo
и добавьте эту строку в свой sudoers
файл:
yourusername ALL=(anotheruser) NOPASSWD: /bin/bash
Это дает yourusername
разрешение на запуск /bin/bash
как пользователь anotheruser
без пароля.