Exécutez sudo en tant qu'user non root et enregistrez-le dans le directory de base de cet user

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