19 votes

sourcing du profil bash pour les utilisateurs de Root

Je m'excuse d'avance si cette question va ennuyer tout le monde, car je comprends qu'elle a déjà été posée de diverses manières à de nombreuses reprises. Sachez que j'ai lu les archives et que j'ai essayé au moins certaines des suggestions, mais que je n'arrive toujours pas à résoudre le problème (simple). J'espère que quelqu'un pourra me donner une réponse et que je pourrai me sentir humble comme il se doit. Pour votre information, afin d'éviter toute ambiguïté, je vais utiliser des chemins absolus plutôt que relatifs.

Lorsque je me connecte, je le fais en tant qu'utilisateur adam . Les alias dans /Users/adam/.bash_profile sont chargées et je peux les utiliser dès que j'ouvre un terminal. Je n'utilise pas de .bashrc et c'est très bien.

De temps en temps, je passe à Root en tapant su dans le terminal, puis en entrant mon mot de passe. L'invite change et je suis maintenant l'utilisateur Root. Ma question est la suivante : dès que je suis devenu Root, mon profil bash Root peut-il être chargé sans que j'aie à créer manuellement le fichier de profil ? La raison pour laquelle je sais que cela ne se produit pas automatiquement est que j'ai les mêmes alias dans mon fichier de profil Root et mon fichier /Users/adam/.bash_profile . Après être devenu l'utilisateur Root, à moins que je tape dans source [root_profile_file] mais ils ne fonctionnent pas. J'ai essayé de configurer les permutations suivantes, puis de passer à Root via le terminal, mais aucune d'entre elles ne génère automatiquement le profil/les alias (remarque : je n'ai aucune des options ci-dessous configurées simultanément, donc je ne pense pas que j'embrouille le système) :

Option 1 : mettre mes alias dans /etc/profile

Option 2 :

  • sur /etc/profile , insérer [ -r /etc/bashrc ] && . /etc/bashrc
  • mettre mes alias dans /etc/bashrc

Option 3 :

  • sur /etc/bash_profile , insérer [ -r /etc/bashrc ] && . /etc/bashrc
  • mettre mes alias dans /etc/bashrc

Option 4 : mettre mes alias dans /var/root/.profile

Option 5 :

  • sur /var/root/.profile , insérer [ -r /var/root/.bashrc ] && . /var/root/.bashrc
  • mettre mes alias dans /var/root/.bashrc

Option 6 :

  • sur /var/root/.bash_profile , insérer [ -r /var/root/.bashrc ] && . /var/root/.bashrc
  • mettre mes alias dans /var/root/.bashrc

Veuillez noter qu'avec l'une des options ci-dessus, si je passe en mode racine et que je tape source root_profile_file les alias sont chargés mais seulement si je fais effectivement la source du fichier manuellement. Peut-être ai-je mal compris le fonctionnement de bash et qu'il n'est pas possible de créer un fichier de profil automatiquement après être passé à Root, mais j'espère qu'il existe une solution simple. Merci d'avance à tous ceux qui ont pris le temps de lire ce message.

15voto

Christopher Scott Points 665

Le problème que vous rencontrez est que lorsque vous exécutez su en soi, vous n'entrez pas dans un shell de "login". Cela signifie que votre environnement, votre répertoire de travail, et tout sauf uid/gid restent les mêmes que ceux de l'utilisateur original.

Les déclencheurs de connexion ne s'exécutent pas, et vous rencontrez les problèmes que vous décrivez.

Une solution simple à un problème simple :

su -

De la su(1) page de manuel :

Le site su La commande est utilisée pour devenir un autre utilisateur pendant une session de connexion. Invoqué sans nom d'utilisateur, su devient par défaut le super-utilisateur. L'argument facultatif - peut être utilisé pour fournir un environnement similaire à celui auquel l'utilisateur s'attendrait s'il se connectait directement.

Aussi :

   -, -l, --login
       Provide an environment similar to what the user would expect had the user logged in directly.

Si vous su dans un shell de connexion, bash se comportera comme vous l'attendez, et créera automatiquement les fichiers appropriés lors de la connexion, sans avoir besoin de recourir à des solutions de contournement trop complexes.

9voto

Florian Bidabé Points 362

En fait, Root utilise /bin/sh (ancien shell bourne), .bash_profile y .bashrc sont lus par bash.

La situation devient délicate car ces fichiers peuvent utiliser des fonctionnalités qui ne sont pas disponibles dans le système de gestion de l'information. sh . Même si vous source .bashrc o source .bash_profile vous aurez toujours des problèmes avec les fonctions complexes, par exemple.

Une façon de résoudre ce problème est d'exécuter

sudo dscl . -change /Users/root UserShell /bin/sh /bin/bash

de passer root de l'obus à bash .

6voto

Adam V Points 2774

Quand je dois absolument le faire, je sudo bash ce qui me fait Root mais avec l'environnement de JRobert. Mon .bashrc contient :

# Prompt: 'jrobert@JRiMac ~' in green (red, if I'm root), '$' in white
if [[ $UID == 0 ]]; then
   export PS1="\[\e[1;31;40m\]\u@\h \W\[\e[0m\]\$ "
else
   export PS1="\[\e[32;40m\]\u@\h \W\[\e[0m\]\$ "
fi

Je suis maintenant (plus) vulnérable à mes propres [choisissez : insolence, bêtise, tendance à avoir le doigt gros, refus de suivre les bons conseils, en haut du ruisseau - ne lâchez pas la pagaie].

3voto

Matic Points 31

J'utilise sudo -i pour passer à l'utilisateur Root. Dans ce cas, la configuration du shell est lue à partir de /var/root/.profile .

1voto

Hai Vu Points 511

En général, je déconseille su car c'est dangereux, il suffit de le chercher et vous savez pourquoi. Pour répondre à votre question, le compte Root fonctionne de la même manière que votre compte : il met en source ~/.bash_profile et/ou ~/.bashrc. Je ne sais pas lequel des deux, mais mon intuition penche pour ~/.bashrc Vous pouvez donc essayer d'y placer vos alias. Voici une suggestion :

su           # type password to get into root account
vi ~/.bashrc # put your aliases there
exit         # exit your root session
su           # try again to see if your aliases works

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X