Назад | Перейти на главную страницу

Невозможно запустить процесс от имени другого пользователя, созданного «useradd» без пароля.

Я создал пользователя для запуска определенного процесса только от имени этого пользователя:

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, он запрашивает пароль цели (substitute) пользователь. Условие, что вы еще не установили пароль, не меняет этого; использовать 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 без пароля.