Cet utilisateur n'est actuellement pas disponible - mais permet d'exécuter le script par cet utilisateur


22

J'ai créé un utilisateur spécial dans / etc / passwd avec:

secure:x:2000:2000:secure:/bin:/usr/sbin/nologin

Je ne veux pas autoriser la connexion de cet utilisateur (via console, ssh, ftp, de toute façon).

Il est juste pour exécuter un script via:

sudo su secure -c '/home/someuser/secure.script'

Mais ça me donne This user is currently not available.. Comment le configurer pour pouvoir exécuter le script de cette façon mais empêcher toute connexion (console, ssh, ftp, ...) de cet utilisateur au système?


J'ai remarqué que lorsque je tape /usr/sbin/nologinsur la ligne de commande, l'ordinateur répond par This account is currently not available..


Réponses:


27

Il s'agit d'un cas d'utilisation typique de sudo.

Vous mélangez sudoce qui permet d'exécuter des commandes en tant qu'un autre utilisateur et est hautement configurable (vous pouvez spécifier de manière sélective quel utilisateur peut exécuter quelle commande en tant qu'utilisateur) et suqui passe à un autre utilisateur si vous connaissez le mot de passe (ou êtes root). suexécute toujours le shell écrit /etc/passwd, même s'il su -cest utilisé. Pour cette raison, sun'est pas compatible avec /usr/sbin/nologin.

Tu devrais utiliser

sudo -u secure /home/someuser/secure.script

Comme il sudoest configurable, vous pouvez contrôler qui peut utiliser cette commande et s'il / elle doit entrer un mot de passe pour l'exécuter. Vous devez modifier à l' /etc/sudoersaide de visudopour ce faire. (Soyez prudent lors de l'édition de / etc / sudoers et utilisez toujours visudo pour le faire. La syntaxe n'est pas anodine et une erreur peut vous bloquer de votre compte root.)

Cette ligne dans sudoers permet à toute personne du groupe somegroupd'exécuter la commande en tant que secure:

%somegroup    ALL=(secure) /home/someuser/secure.script

Cela permet à toute personne du groupe somegroupd'exécuter la commande securesans saisir de mot de passe:

%somegroup    ALL=(secure) NOPASSWD: /home/someuser/secure.script

Cela permet user1d'exécuter la commande securesans saisir de mot de passe:

user1    ALL=(secure) /home/someuser/secure.script

13

J'ai découvert que le problème principal est " /usr/sbin/nologin" dans /etc/passwd Quand je veux exécuter su dans ce cas, il doit avoir à l' -s /bin/bashintérieur, donc par exemple:su -s /bin/bash -c '/home/someuser/secure.script' secure


1
Oui, suutilise le shell écrit dans / etc / passwd par défaut. L'utilisation suest un moyen de se connecter en tant qu'utilisateur à partir d'un autre utilisateur. nologinimprime le message "Cet utilisateur n'est pas disponible actuellement." et sort. sudon'utilise pas de shell pour exécuter une commande, donc utiliser sudosans sufonctionnera également. Voir ma réponse pour en savoir plus sudo.
cg909

2

suutilise le shell spécifié dans /etc/passwd.

Vous n'avez pas besoin de l'utiliser suavec sudo.

Ne mélangez donc pas suavec sudo: utilisez sudo -u secure '/home/someuser/secure.script'.


-2

Cela peut ne pas être pertinent à 100% pour la question, mais peut aider quelqu'un qui avait un message d'avertissement similaire This user is currently not available

1) Vérifiez auprès de votre hébergeur si vous avez été autorisé à accéder au shell.

2) si vous utilisez CWP7: définissez l'accès shell sur ON entrez la description de l'image ici


2
1) L'accès à Shell est clairement disponible car la question parle de l'exécution su, sudoet de toutes sortes d'autres choses. 2) Il n'y a aucune indication dans la question que l'installation en question se trouve derrière un panneau de contrôle Web sous quelque forme que ce soit.
Philip Kendall

1
Oui (sauf qu'il s'agit d'un site de questions / réponses, pas d'un forum). Mais une partie de l'aide est de s'assurer que votre réponse est réellement pertinente à la question, et je ne pense pas que cette réponse soit réellement pertinente: l'affiche a clairement un accès shell déjà, alors comment l'activer via un panneau de contrôle (qui peut même pas exister) résoudre le problème?
Philip Kendall

3
@ShapCyber: notez que cette question concerne une personne qui a créé manuellement un nouvel utilisateur spécial. Les réponses dans ce "fil" (Question) devraient répondre à la situation dans cette question. Si vous avez rencontré un problème différent qui a ceci comme solution, la bonne chose à faire est de poser et répondre à votre propre nouvelle question.
Jeff Schaller

1
Ce que @JeffSchaller a dit est correct. Et je vous encourage, ShapCyber, vraiment faire s'il vous plaît demander et auto-répondre à une question avec le problème et la solution que vous avez rencontré (dans suffisamment de détails pour être utile); puis ajoutez un commentaire à cette question pour créer un lien vers la vôtre. Voilà comment aider au mieux les futurs lecteurs dans le cadre de la mise en place de ce site. :)
Wildcard

2
@ShapCyber ​​c'est pourquoi nous vous encourageons à ouvrir une nouvelle question, afin que les recherches trouvent la bonne réponse à leur problème.
Jeff Schaller
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.