J'ai ajouté un nouveau groupe: ircuser
et un nouvel user: ircuser
En visudo
j'ai placé cette ligne:
myuser localhost=(ircuser) NOPASSWD: /usr/bin/irssi
Créé le directory ircuser
, où les files de configuration, les caches, etc. devraient être sauvegardés:
drwxrwx--- 2 ircuser ircuser 4096 Mar 2 10:28 ircuser
Lors de l'émission de la command:
sudo -Hu ircuser /usr/bin/irssi
ou
sudo -u ircuser /usr/bin/irssi
Le programme ne peut pas save le file de configuration dans le directory ircuser
.
** ERROR **: Couldn't create /home/myuser/_web/ircuser/.irssi directory aborting... Aborted
Mais, il est en cours d'exécution comme ircuser
:
ps auxw | grep irssi ircuser 11962 0.0 0.0 23684 2504 pts/6 S+ 11:18 0:00 /usr/bin/irssi
Donc, bien que irssi
soit exécuté par ircuser
il ne peut pas écrire dans un directory appartenant au même user? Que dois-je changer pour pouvoir l'save là-bas?
Le problème réside probablement dans le fait de ne pas avoir d'autorisation eXecute dans l'un des directorys parent menant au directory home de ircuser. Afin que tout user puisse traverser, ne pas nécessairement regarder dans un directory, cet user doit avoir l'autorisation d'exécution soit via un groupe, soit via d'autres. Si vous avez ces permissions:
drwxrwx--- 2 myuser myuser 4096 Mar 2 10:28 /home/myuser
Et ircuser ne fait pas partie du groupe myuser, alors l'user ne peut accéder à aucun file en dessous même s'il a des permissions pour ce directory. Si vous essayez ceci à la place:
drwxrwx--x 2 myuser myuser 4096 Mar 2 10:28 /home/myuser
Ensuite, ircuser ne peut pas parcourir le directory personnel de myuser, mais il peut potentiellement accéder à un file en dessous tel que /home/myuser/_web/ircuser
MISE À JOUR: Quelques détails supplémentaires que j'ai omis de la description ci-dessus. Les permissions sont évaluées lorsque vous parcourez le système de files. Il est possible d'accéder à un dossier à partir du directory actuel auquel vous ne pouvez pas accéder depuis le directory racine. Si vous modifiez votre directory de travail ailleurs, vous perdez votre handle sur le directory courant et vous perdez l'access aux files qu'il contient. Si vous utilisez quelque chose comme sudo su – ircuser, su va basculer vers le directory de base de ircuser avant de supprimer les privilèges root. À ce stade, vous avez une poignée valide pour le directory de base de ircuser car c'est le directory de travail en cours. Si vous démarrez irssi, il sera exécuté dans le directory de base de ircuser en tant que ircuser. Si vous essayez d'accéder à .irssi, cela fonctionnera parce que vous avez l'autorisation eXecute sur la direcory actuelle. Si vous devez parcourir un directory où vous ne disposez pas de l'autorisation eXecute, iy échouera. Par exemple, ouvrir le file /home/myuser/_web/ircuser/.irssi
ou même partir du directory courant et en utilisant le path relatif de ../../_web/ircuser/.irssi
car il faut traverser /home/myuser
où vous n'avez pas d'autorisation eXecute.
Utilisez l'option -H
qui rend la command exécutée avec sudo
pour considérer 'home' le directory home de l'user. Vous findez des explications plus détaillées sur la page man de sudo: http://linux.die.net/man/8/sudo
Pourriez-vous essayer avec sudo -iu ircuser / usr / bin / irssi?
En outre, comme Patkos Csaba a déjà déclaré vérifier les valeurs par défaut env_reset, env_keep définies dans vos sudoers.
Depuis la page de manuel sudoers:
As a special case, if sudo's -i option (initial login) is specified, sudoers will initialize the environment regardless of the value of env_reset. The DISPLAY, PATH and TERM variables remain unchanged; HOME, MAIL, SHELL, USER, and LOGNAME are set based on the target user. On Linux and AIX systems the contents of /etc/environment are also included. All other environment variables are removed.
Donc, sudo -i initialisera l'environnement pour contourner les valeurs de ces derniers.
Edit: J'ai reproduit votre configuration sur une boîte Ubuntu et même sudo -u ircuser / usr / bin / irssi fonctionne bien pour moi.
De mon / etc / sudoers
<snipped> Defaults env_reset, log_output <snipped> testing LABUBU01=(ircuser) NOPASSWD: /usr/bin/irssi
Versions:
testing@LABUBU01:~$ sudo -V Sudo version 1.8.3p1 pmplugin policy_plugin 5.6.0 (034) pmplugin io_plugin 5.6.0 (034) testing@LABUBU01:~$ uname -a Linux LABUBU01 2.6.35-28-generic #50-Ubuntu SMP Fri Mar 18 19:00:26 UTC 2011 i686 GNU/Linux testing@LABUBU01:~$ ls -lap /home/ total 64 drwxr-xr-x 16 root root 4096 2012-03-02 15:57 ./ drwxr-xr-x 22 root root 4096 2011-12-08 15:48 ../ drwxr-xr-x 3 ircuser ircuser 4096 2012-03-02 15:57 ircuser/
/MODIFIER
EDIT2:
votre erreur:
** ERREUR **: Impossible de créer le directory /home/myuser/_web/ircuser/.irssi annulant … Abandonné
déclare, il ne peut pas créer /home/myuser/_web/ircuser/.irssi qui est dans votre maison, pas dans le directory home de ircuser. / EDIT2