# su -l www-data ./http-app.py
This account is currently not available.
# su -l www-data -c ./http-app.py
This account is currently not available.
# su -c ./http-app.py www-data
This account is currently not available.
# su -lc ./http-app.py www-data
This account is currently not available.
# getent passwd www-data
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
# getent shadow www-data
www-data:*:16842:0:99999:7:::
# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.6 (jessie)
Release: 8.6
Codename: jessie
Что не так с моим su
или www-data
? Раньше работал ...
Предположительно, это из-за /usr/sbin/nologin
, но как тогда я выберу root
этот сценарий, не ставя под угрозу другие службы в системе (я nologin
выбрал Debian
команду по уважительной причине, хочу верить)?
/bin/sh
используется по умолчанию, и вы должны указать-s
опцию, только если вы хотите изменить/bin/bash
или аналогичный.su www-data -s /bin/sh
чтобы вернуться в root просто введитеsu
.Вы используете,
su
который используется для «переключения пользователя». Конечно, это не будет работать, потому чтоwww-data
это учетная запись пользователя, которую нельзя использовать для входа. Вы сказали это:/usr/sbin/nologin
.Возможно, вам нужно то,
sudo
что используется для «выполнения команды от имени другого пользователя».источник
su
для этой цели, и это всегда работало.sudo
Это дополнительный пакет для установки, но вы правы, я могу использовать его для достижения того, что я хочу.Если вы хотите не только выполнить одну команду, но и переключиться на
www-data
, чтобы протестировать некоторые вещи для этого пользователя, это сработало для меня:Это немного короче. Выйдите из сеанса с помощью [ctrl] + [d] или
exit
источник
С такой проблемой я использовал опцию
-p
:-p: среда сохранена. В пекулярном он не пытается логин с новой учетной записью, так что вы не получаете сообщение:
This account is currently not available.
.источник