У меня есть типичная настройка сервера LAMP (Ubuntu 16) с www-data:www-data setup для Apache.

У меня есть скрипт, который не может быть запущен от имени пользователя root, но должен работать как www-data. Скрипт рекомендует запустить sudo -u www-root -i -- <command> но когда я это делаю, я получаю ошибку:

This account is currently not available.

Как можно безопасно разрешить пользователю команды www-data выполнять команду или как разрешить текущему пользователю выполнять команду, если это лучшее направление?

Примечание: речь идет о WP-CLI, который устанавливает флаг --allow-root, но не рекомендует его по соображениям безопасности.

1 ответ1

1

Когда вы используете параметр -i sudo, это означает, что sudo попытается использовать назначенную оболочку входа и среду для этого пользователя. Это будет проблемой для учетной записи www-data так как эта учетная запись обычно имеет отключенную оболочку.

root@srv:# getent passwd www-data
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

Что вам нужно выяснить, так это то, действительно ли вам нужна среда / оболочка этого пользователя. Вам не нужна опция -i , и вы можете просто запустить команду без нее. Это запустит команду с тем же типом оболочки, что и пользователь, выполняющий команду.

Так что используйте это вместо этого.

sudo -u www-root <command>

Если по какой-то причине вам действительно нужен -i , вам нужно будет предоставить этому аккаунту оболочку (/bin/sh, /bin/bash или ваш любимый).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .