Неможливо запустити команду як www-data, використовуючи 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, оскільки веб-сервер Debian manpages не працює: https://manpages.debian.org/ )


Я неправильно припустив, що /bin/shвикористовується за замовчуванням, і ви повинні вказати -sпараметр, лише якщо ви хочете змінити на /bin/bashабо подібне.
NarūnasK

3
Дякую, він працює в Debian 9, su www-data -s /bin/shщоб повернутися до root просто набрати su.
PJ Brunet

4
@PJBrunet - "щоб повернутися до корінця" (якщо припустити, що ти з кореня) введеш "вихід". Щоб запустити нову кореневу оболонку, ви введете 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.