Невозможно выполнить команду как www-данные, используя su


14
# 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команду по уважительной причине, хочу верить)?

Ответы:


19

Без споров suпротив sudoвы можете попробовать добавить -s /bin/shв вашу командную строку. (Я не смог проверить, доступен ли этот параметр для jessie, поскольку веб-сервер manpages Debian не работает: https://manpages.debian.org/ )


Я неправильно предположил, что /bin/shиспользуется по умолчанию, и вы должны указать -sопцию, только если вы хотите изменить /bin/bashили аналогичный.
— NarūnasK

3
Спасибо, это работает в Debian 9, su www-data -s /bin/shчтобы вернуться в root просто введите su.
— П.Дж. Брюне

4
@PJBrunet - «чтобы вернуться к корню» (при условии, что у вас есть права пользователя root), вы должны набрать «exit». Чтобы запустить новую корневую оболочку, вы должны набрать su.
— ChronoFish

31

Вы используете, suкоторый используется для «переключения пользователя». Конечно, это не будет работать, потому что www-dataэто учетная запись пользователя, которую нельзя использовать для входа. Вы сказали это: /usr/sbin/nologin.

Возможно, вам нужно то, sudoчто используется для «выполнения команды от имени другого пользователя».

sudo -u www-data ./http-app.py

Я всегда использовал suдля этой цели, и это всегда работало. sudoЭто дополнительный пакет для установки, но вы правы, я могу использовать его для достижения того, что я хочу.
— NarūnasK

1

Если вы хотите не только выполнить одну команду, но и переключиться на www-data, чтобы протестировать некоторые вещи для этого пользователя, это сработало для меня:

sudo -u www-data sh

Это немного короче. Выйдите из сеанса с помощью [ctrl] + [d] илиexit


0

С такой проблемой я использовал опцию -p:

su -pc ./http-app.py www-data

-p: среда сохранена. В пекулярном он не пытается логин с новой учетной записью, так что вы не получаете сообщение: This account is currently not available..

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.