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/nologin
sur la ligne de commande, l'ordinateur répond par This account is currently not available.
.
sudo su
, voir unix.stackexchange.com/questions/218169/…Réponses:
Il s'agit d'un cas d'utilisation typique de
sudo
.Vous mélangez
sudo
ce 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) etsu
qui passe à un autre utilisateur si vous connaissez le mot de passe (ou êtes root).su
exécute toujours le shell écrit/etc/passwd
, même s'ilsu -c
est utilisé. Pour cette raison,su
n'est pas compatible avec/usr/sbin/nologin
.Tu devrais utiliser
sudo -u secure /home/someuser/secure.script
Comme il
sudo
est 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/sudoers
aide devisudo
pour 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
somegroup
d'exécuter la commande en tant quesecure
:Cela permet à toute personne du groupe
somegroup
d'exécuter la commandesecure
sans saisir de mot de passe:Cela permet
user1
d'exécuter la commandesecure
sans saisir de mot de passe:la source
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/bash
intérieur, donc par exemple:su -s /bin/bash -c '/home/someuser/secure.script' secure
la source
su
utilise le shell écrit dans / etc / passwd par défaut. L'utilisationsu
est un moyen de se connecter en tant qu'utilisateur à partir d'un autre utilisateur.nologin
imprime le message "Cet utilisateur n'est pas disponible actuellement." et sort.sudo
n'utilise pas de shell pour exécuter une commande, donc utilisersudo
sanssu
fonctionnera également. Voir ma réponse pour en savoir plussudo
.su
utilise le shell spécifié dans/etc/passwd
.Vous n'avez pas besoin de l'utiliser
su
avecsudo
.Ne mélangez donc pas
su
avecsudo
: utilisezsudo -u secure '/home/someuser/secure.script'
.la source
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
la source
su
,sudo
et 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.