Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1692 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  problème de modification .bashrc

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème de modification .bashrc

n°1996465
jaysiat
Posté le 27-05-2010 à 15:03:21  profilanswer
 

Bonjour,
 
J'aurai besoin d'aider pour la modification du fichier .bashrc pour un utilisateur.
 
Je m'explique, je voudrais que l'utilisateur util1 puisse modifier le .bashrc de util2.
Pour cela, j'ai modifier le fichier /etc/sudoers pour que util1 ait les droits de root sur la commande echo
 
J'ai ajouter les lignes suivante au bon endroit dans le fichier /etc/sudoers:
 
Cmnd_Alias ECH=/bin/echo
 
util1 ALL=NOPASSWD:ECH
 
 
Le problème qui se pose c'est que j'ai toujours le message "Permission non accordée" en lancant la commande suivante lorsque je suis sous l'utilisateur util1
 
sudo -u root echo "/usr/bin/test" >> /home/util2/.bashrc
 
 
Quelqu'un aurait-il une idée pour résoudre cela?
 
Merci d'avance.

mood
Publicité
Posté le 27-05-2010 à 15:03:21  profilanswer
 

n°1996600
Sve@r
Posté le 27-05-2010 à 22:00:28  profilanswer
 

jaysiat a écrit :

Bonjour,
 
J'aurai besoin d'aider pour la modification du fichier .bashrc pour un utilisateur.
 
Je m'explique, je voudrais que l'utilisateur util1 puisse modifier le .bashrc de util2.
Pour cela, j'ai modifier le fichier /etc/sudoers pour que util1 ait les droits de root sur la commande echo
 
J'ai ajouter les lignes suivante au bon endroit dans le fichier /etc/sudoers:
 
Cmnd_Alias ECH=/bin/echo
 
util1 ALL=NOPASSWD:ECH
 
 
Le problème qui se pose c'est que j'ai toujours le message "Permission non accordée" en lancant la commande suivante lorsque je suis sous l'utilisateur util1
 
sudo -u root echo "/usr/bin/test" >> /home/util2/.bashrc
 
 
Quelqu'un aurait-il une idée pour résoudre cela?
 
Merci d'avance.


 
Lorsque tu utilises la syntaxe commande >> fichier, la partie redirection ">>" n'est pas gérée par la commande mais par le shell qui a interprété l'ordre d'appel et qui se charge d'appeler ladite commande.
Donc tu peux donner les droits root à la commande echo, tu peux même lui mettre le setuid, cela n'autorisera pas le shell de l'utilisateur 1 à écrire dans le fichier .bashrc de l'utilisateur 2. Ce qui est d'ailleurs une bonne chose.
 
Ta solution adoptée n'est donc pas bonne. Je dirais même qu'elle traduit un problème de conception qqpart. Par définition, les fichiers situés dans le répertoire d'un utilisateur sont 100% les siens et il est le seul a avoir le droit d'en faire ce qu'il veut.
 
Toutefois si tu t'obstines dans ta solution boiteuse, alors voici les possibilités (de la pire vers la plus propre):
1) tu donnes les droits root sur la commande /bin/bash. Tant qu'à aller dans le mur, autant y aller à donf
2) tu centralises l'ensemble des .bashrc et tu fais des liens vers chaque utilisateur. La modification du bashrc de référence sera alors instantanément répercutée sur les .bashrc des utilisateurs. Mais cette modif ne pourra se faire que par le proprio du bshrc de référence (probablement root)
3) tu crées un exécutable spécialement dédié à ce travail. Il se charge lui-même d'aller ouvrir les .bashrc et écrire dedans. Ensuite tu donnes les droits root à cet exécutable
Voilà.


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1996715
jaysiat
Posté le 28-05-2010 à 11:04:23  profilanswer
 

merci de ton explication, je comprends mieux :)

n°1996829
jaysiat
Posté le 28-05-2010 à 15:23:26  profilanswer
 

En fait, je veux faire ca dans un script perl dans lequel l'utilisateur choisi un login et un mot de passe, et cela lui crée son compte sur la machine unbuntu avec un home directory. Je connais donc son mot de passe, mais impossible de faire un "su util2", puis entrer son mot de passe et ensuite modifier le bashrc. Il n'est pas possible de faire un su via un script, il m'est indiqué qu'il peut se faire uniquement en ligne de commande

n°1996945
Sve@r
Posté le 28-05-2010 à 22:15:15  profilanswer
 

jaysiat a écrit :

En fait, je veux faire ca dans un script perl dans lequel l'utilisateur choisi un login et un mot de passe, et cela lui crée son compte sur la machine unbuntu avec un home directory.


Ben tu appelles useradd. Cette commande fait tout elle-même !!!
 
Ou alors, comme je le dis, tu crées un exécutable qui se charge de faire le boulot. Ensuite tu donnes les droits root audit exécutable. De toute façon, les droits root ne peuvent se donner qu'à un exécutable et non à un script car le script est interprété (par un ... exécutable !!!)
 

jaysiat a écrit :

Je connais donc son mot de passe, mais impossible de faire un "su util2", puis entrer son mot de passe et ensuite modifier le bashrc. Il n'est pas possible de faire un su via un script, il m'est indiqué qu'il peut se faire uniquement en ligne de commande


Déjà manque de bol, je ne connais pas perl. Moi je suis plutôt branché Python. Toutefois, Python (et probablement Perl aussi) ne peut pas appeler directement un programme externe. Faut qu'il passe par la commande "os.system()" ou "os.popen()". Mais encore une fois, aucun script interprété ne peut avoir de droits root...
 
De plus j'ai l'impression que tu cherches à faire faire aux outils un travail qui n'a pas été prévu. La commande "su (switch user) a pour rôle de t'ouvrir un shell au nom de l'utilisateur en question. Elle n'est pas prévue pour exécuter des commandes en batch. Eventuellement une syntaxe ressemblant à

Code :
  1. su user <<_EOT_
  2. motdepasse
  3. commande
  4. _EOT_


pourrait "peut-être" marcher. Mais même là j'ai un doute car, exemple simple, ce type de syntaxe ne fonctionne pas pour la commande "passwd" qui détecte stdin et qui refuse si stdin est redirigé (sécurité).
 
sudo serait plus faite pour ça. Mais again, j'ai l'impression que tu te compliques vachement la vie alors qu'il existe des outils (comme useradd) déjà tout prêts. Qu'est-ce qui t'empêche d'encapsuler un system("useradd" ) dans un exécutable C bien verrouillé ???


Message édité par Sve@r le 28-05-2010 à 22:23:19

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1997470
jaysiat
Posté le 31-05-2010 à 11:24:42  profilanswer
 

Toute la partie authentification de l'utilisateur est codé, en fait il me manque que la modification du bashrc de l'utilisateur pour pouvoir lancer automatiquement un script dès sa connexion.
su directement dans un script ne fonctionne pas.
Je réfléchi a une solution alternative  :pt1cable:  
 
merci de ta réponse :)


Message édité par jaysiat le 31-05-2010 à 11:26:34
n°1997505
Tuxerman12
Posté le 31-05-2010 à 12:32:00  profilanswer
 

Tu peux pas exécuter ton script en root ?
J'ai déjà fait un truc comme ça dans un init script, pour authentifier une machine sur un proxy sans ouvrir de session par le biais d'un compte utilisateur, il n'y a pas de mot de passe à entrer dans ce cas là.

 

Exécuté en root au démarrage de la machine, il y avait un truc du genre:

 

sudo -u user1 commande_d_auth

 

Changement d'identité nécessaire car le logiciel refusait de se lancer en root.


Message édité par Tuxerman12 le 31-05-2010 à 12:32:54
n°1997612
jaysiat
Posté le 31-05-2010 à 16:19:14  profilanswer
 

merci de ta réponse, j'avais essayer cette méthode mais sans succès. je vais réessayer.

n°1997615
Tuxerman12
Posté le 31-05-2010 à 16:28:31  profilanswer
 

J'ai pas compris ce que tu veux faire exactement, c'était juste pour te signaler que l'utilisateur root peut tout faire, même prendre l'identité d'un user sans connaitre son mot de passe.

n°1997884
jaysiat
Posté le 01-06-2010 à 11:36:29  profilanswer
 

en copiant directement un bashrc déjà modifié dans le répertoire de l'utilisateur voulu cela fonctionne (cp), on écrase donc le bashrc de l'utilisateur. Par contre je ne comprends pas pourquoi cela marche alors qu'on ne peut pas le modifier (Permission non accordée)

mood
Publicité
Posté le 01-06-2010 à 11:36:29  profilanswer
 

n°1997885
jaysiat
Posté le 01-06-2010 à 11:37:35  profilanswer
 

merci tuxerman12, mais je n'utilise pas root pour faire cela. J'ai des groupes et les utilisateurs se connecte puis crée des comptes appartenant a un groupe défini.

n°1998194
Sve@r
Posté le 02-06-2010 à 00:58:48  profilanswer
 

jaysiat a écrit :

en copiant directement un bashrc déjà modifié dans le répertoire de l'utilisateur voulu cela fonctionne (cp), on écrase donc le bashrc de l'utilisateur. Par contre je ne comprends pas pourquoi cela marche alors qu'on ne peut pas le modifier (Permission non accordée)


 
L'écrasement d'un fichier par un autre est une opération qui se passe en 2 temps
1) effacement du fichier d'origine (donc suppression d'une entrée du répertoire)
2) écriture du nouveau fichier (donc rajout d'une entrée de plus dans le répertoire)
Ces deux opérations n'agissent que dans le répertoire. Donc seuls les droits du répertoire sont utilisés.


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1998286
Tuxerman12
Posté le 02-06-2010 à 11:08:37  profilanswer
 

jaysiat a écrit :

en copiant directement un bashrc déjà modifié dans le répertoire de l'utilisateur voulu cela fonctionne (cp), on écrase donc le bashrc de l'utilisateur. Par contre je ne comprends pas pourquoi cela marche alors qu'on ne peut pas le modifier (Permission non accordée)


 
Ta copie tu la fais avec l'user proprio du dossier ou avec un autre user ?  :??:

n°1998405
jaysiat
Posté le 02-06-2010 à 15:29:31  profilanswer
 

un autre user qui a accès à sudo -u sans mot de passe. Par contre avec un autre user j'y arrive pas il me demande le mot de passe et ensuite permission denied. Dans le fichier sudoers, les 2 ont les memes droit pourtant.
Par contre avec cet user j'ai accès à "sudo bash" et pas avec les autres, je ne sais pas comment régler ca.

n°1998413
jaysiat
Posté le 02-06-2010 à 15:33:58  profilanswer
 

en fait j'ai un utilisateur "test" qui a accès a "sudo bash", un utilisateur roger crée son compte et est placé dans le groupe "test". Lorsque je suis sous l'utilisateur "test" je peux copier un fichier dans le répertoire home de roger.
Par contre avec un autre utilisateur "test2", lui n'as pas accès à "sudo bash", je ne sais pas comment lui donner accès, l'utilisateur toto crée son compte et est associé au groupe "test2". Dans ce cas impossible de copier un fichier de l'utilisateur de "test2" dans le home de toto, il demande le mot de passe de toto, je le rentre, puis permission denied.
Dans le fichier /etc/sudoers, les meme droits sont associer à test et a test2.


Message édité par jaysiat le 02-06-2010 à 15:36:32

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  problème de modification .bashrc

 

Sujets relatifs
[C] Probleme swap liste double chainée[Swing/Netbeans] Problème pour organiser l'interface
probleme transfert excel-> acessProblème d'ouverture de pièce jointe
Problème de cookiehtml: Probleme entre getElementById et internet explorer
Problème formulaire HTML& PHPprobleme creer une ligne dans une bdd a partir de c++ winform
Problème dans les code HTML et CSS(Résolu) Coin3D/Open Inventor, problème install
Plus de sujets relatifs à : problème de modification .bashrc


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR