Impossible d'exécuter la commande en tant que www-data à l'aide de 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

Quel est le problème avec mon suou www-data? Ça fonctionnait ...

Vraisemblablement, c'est à cause de la /usr/sbin/nologin, mais comment puis-je abandonner rootpour ce script, sans compromettre d'autres services sur le système ( nologina été choisi par l' Debianéquipe pour une bonne raison, je veux le croire)?

Réponses:


19

Sans débattre sucontre sudovous pouvez essayer d'ajouter -s /bin/shà votre ligne de commande. (Je n'ai pas pu vérifier que cette option est disponible pour Jessie car le serveur Web des pages de manuel Debian ne fonctionne pas: https://manpages.debian.org/ )


J'ai supposé à tort qu'il /bin/shest utilisé par défaut et vous devez spécifier l' -soption uniquement si vous souhaitez passer à /bin/bashou similaire.
— NarūnasK

3
Merci, cela fonctionne dans Debian 9 su www-data -s /bin/shpour revenir à la racine, tapez simplement su.
— PJ Brunet

4
@PJBrunet - "pour revenir à la racine" (en supposant que vous avez su depuis la racine), vous tapez "exit". Pour démarrer un nouveau shell racine, vous devez taper su.
— ChronoFish

31

Vous utilisez suce qui est utilisé pour "changer d'utilisateur". Bien sûr, cela ne fonctionnera pas car il www-datas'agit d'un compte utilisateur qui ne peut pas être utilisé pour se connecter. Vous l'avez dit:/usr/sbin/nologin .

Peut-être que ce que vous voulez est celui sudoqui est utilisé pour "exécuter une commande en tant qu’autre utilisateur".

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

J'ai toujours utilisé suà cette fin et cela fonctionnait toujours. sudoest un package supplémentaire à installer, mais vous avez raison, je peux l'utiliser pour réaliser ce que je veux.
— NarūnasK

1

Si vous voulez non seulement exécuter une commande, mais passer à www-dataafin de tester certaines choses pour cet utilisateur, cela a fonctionné pour moi:

sudo -u www-data sh

C'est un peu plus court. Quittez la session avec [ctrl] + [d] ouexit


0

Avec ce genre de problème, j'ai utilisé l'option -p:

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

-p: l'environnement est préservé. En particulier , il ne cherche pas à connecter avec le nouveau compte, si vous n'obtenez le message: This account is currently not available..

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.