web-dev-qa-db-fra.com

Pourquoi un utilisateur avec les privilèges root n'est-il plus dans ~?

Juste par curiosité, j'aimerais savoir pourquoi, lorsque je me connecte en tant que root, je ne suis plus dans /home/user . Quelle est la raison et que fait exactement le répertoire /root ?

Je ne suis pas un utilisateur avancé. Veuillez répondre avec des mots simples ou donner un lien fournissant des explications claires et simples. J'utilise Ubuntu 16.04 et je me connecte en tant que root avec Sudo -i. Comme il est expliqué ici , Sudo -i a /root comme maison. Je veux savoir quelle est la raison; Y a-t-il un avantage à être là? Et pas dans ~ comme l'utilisateur de Sudo -s.

20
Codito ergo sum

Vous ne vous connectez pas en tant que root en exécutant une commande Sudo. Vous démarrez un shell avec les privilèges root.

Si vous souhaitez rester dans le répertoire de base de l'utilisateur actuel, vous pouvez utiliser Sudo -s au lieu de la commande Sudo -i.

cd ~ vous mènera au même répertoire que si vous n'êtes pas dans un shell avec les privilèges root. Littéralement /home/$USER.

Lorsque vous utilisez Sudo -i, le système agit comme si vous êtes connecté en tant qu'utilisateur root. À cause de ce

cd ~ 

vous amène au répertoire de base de l'utilisateur racine, /root.

/root directory est un répertoire de base pour l'utilisateur root.

La principale différence est que les fichiers de paramètres de shell tels que .bashrc sont utilisés à partir de /root dans le cas de Sudo -i et d'un utilisateur normal dans le cas de Sudo -s.

28
Pilot6

La raison pour laquelle le nom de l'utilisateur root est /root et non /home/root est généralement due au fait que /home est un point de montage sur une partition/un volume/un disque séparé (pour diverses raisons, telles que l'espace disque, ou à distance, ...)

Si, pour une raison quelconque, le montage de /home échouait, vous pouvez toujours vous connecter en tant que root et vous trouver dans votre répertoire personnel /root pour étudier et résoudre les problèmes.

De plus, pour la maintenance, la configuration initiale, le redimensionnement, ... vous seriez connecté en tant que root et devriez pouvoir démonter/remonter /home

29
alexf

Quelle est la raison et que fait exactement le répertoire/root?

root a pour racine/root et lorsque vous passez à root, vous vous retrouvez dans sa maison. C'est la nature de Sudo -i. Sudo -sa la même chose mais ne change pas de répertoire. Manuel pour Sudo :

-s [command]

L'option -s (Shell) exécute le shell spécifié par la variable d'environnement du shell si elle est définie ou le shell spécifié dans la base de données de mots de passe. Si une commande est spécifiée, elle est transmise au shell pour exécution via l'option -c du shell. Si aucune commande n'est spécifiée, un shell interactif est exécuté.

-i [command]

L'option -i (simuler la connexion initiale) exécute le shell spécifié par l'entrée de la base de données de mots de passe de l'utilisateur cible en tant que shell de connexion . Cela signifie que les fichiers de ressources spécifiques à la connexion, tels que .profile ou .login, seront lus par le shell. Si une commande est spécifiée, elle est transmise au shell pour exécution via l'option -c du shell. Si aucune commande n'est spécifiée, un shell interactif est exécuté. Sudo tente de modifier le répertoire de base de cet utilisateur avant d'exécuter le shell. La politique de sécurité doit initialiser l'environnement avec un ensemble minimal de variables, similaire à ce qui est présent lorsqu'un utilisateur se connecte. La section relative à l'environnement de commande du manuel sudoers (5) explique comment l'option -i affecte l'environnement dans lequel une commande est exécutée lorsque la stratégie sudoers est utilisée.

L'utilisateur root doit faire partie du système. Lorsque vous placez/home sur une partition différente et que la racine fait partie de/home, vous rencontrerez de graves problèmes si la partition ne se monte pas. Pour la même raison, nous avons également

/bin
/sbin 

et

/usr/bin
/usr/sbin

Lorsque vous placez/usr sur une partition et que/usr ne monte pas, votre système fonctionne toujours.

16
Rinzwind

Le système de fichiers Linux est structuré de manière spécifique. Les fichiers binaires essentiels se trouvent dans /bin/, les fichiers du chargeur de démarrage dans /boot/, la plupart des fichiers de périphérique dans /dev/, les points de montage des supports amovibles dans /media/, etc ...

Voir https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard .

Certains détails mineurs peuvent différer d’une distribution à l’autre (par exemple /usr/bin/ ou /usr/local/bin/), mais en général, presque toutes les distributions Linux suivent la même structure de répertoires.

Pour répondre à ta question:

Les répertoires personnels des utilisateurs se trouvent dans /home/. En principe, Linux est un système d'exploitation multi-utilisateurs. Vous ne pouvez avoir qu'un seul compte utilisateur sur votre ordinateur portable dont le répertoire personnel est /home/<username>/, mais si vous cherchez un /home/ sur un serveur Linux partagé, vous verrez plusieurs répertoires personnels: un pour chaque compte utilisateur. L'idée est que chaque utilisateur du système ne dispose d'autorisations d'écriture que dans son propre répertoire de base. Si votre nom d'utilisateur est bobname__, vous pouvez lire, écrire et supprimer des fichiers dans /home/bob/ mais vous ne pouvez rien toucher dans /home/alice/ ni dans /var/log/.

rootest différent cependant. rootest l'utilisateur administratif et dispose de privilèges d'écriture partout sur le système (et peut agir en tant qu'utilisateur du système). Il est donc logique que rootait le répertoire de base spécial /root/ car rootn'est pas un utilisateur ordinaire. Autre que cela, /root/ est juste un répertoire régulier sans magie particulière, bien qu'il soit tout à fait possible (même probable) que les utilitaires système s'appuient sur /root/ qui est le domicile de l'utilisateur rootname__.

Lorsque vous exécutez Sudo -i dans un terminal, vous changez de poste, par exemple. l'utilisateur régulier bobà rootname__. Notez que ce commutateur affecte uniquement la fenêtre du terminal où vous avez saisi Sudo -i. Pour votre gestionnaire de fichiers, vous êtes toujours bobet si vous ouvrez une autre fenêtre de terminal, vous êtes toujours bobname__. Dans ce contexte, le symbole ~ est un raccourci pour le répertoire de base de l'utilisateur actuel. Pour bob~ signifie /home/bob/ mais pour root~ signifie /root/.

J'espère que cela clarifie les choses pour vous.

15
maria s

Je vois que tout le monde répond à ce que se produit lorsque vous vous connectez en tant que root (vous obtenez un répertoire ~ qui ne se trouve pas dans/home) mais que personne ne dit pourquoi. voici pourquoi:

Si toute la structure/home devient inutilisable et que vous devez la réparer, ou si vous devez réaffecter/home parce qu'il manque d'espace, vous devez le faire d'une manière ou d'une autre. Vous ne pouvez pas vous connecter en tant qu'utilisateur possédant ~ in/home, car vous tomberiez en panne dès que vous tenteriez quoi que ce soit. Ainsi, l'utilisateur root a sa ~ part ailleurs.

14
Jennifer

Vous dites que vous n'êtes pas un utilisateur expérimenté, je vais donc essayer d'écrire une réponse étape par étape.

Lorsque vous utilisez Linux, vous devez vous rappeler certaines choses importantes:

  • Linux est un système multi-utilisateur. Il a été conçu comme cela depuis le début, suivant la philosophie Unix (notez l'approche différente adoptée par Windows, conçu comme un système à utilisateur unique).

  • En tant que système multi-utilisateurs, Linux peut séparer les fichiers appartenant à chaque utilisateur du système. Pour ce faire, Linux attribue à chaque utilisateur un sous-dossier dans le répertoire /home/. Chaque fichier d’utilisateur appartient à lui/elle et seul (s) il peut les ouvrir, les modifier ou permettre à d’autres utilisateurs de les utiliser. Inversement, chaque fichier du système de fichiers appartient à un utilisateur, qui a le pouvoir de voir ou d’utiliser ce fichier. Comme mentionné dans une autre réponse, les utilisateurs pouvaient à l'origine placer leurs fichiers n'importe où dans le système, mais il est devenu évident que les choses devraient être mieux organisées, et /home/ ("slash-home") est devenu l'endroit où les fichiers de l'utilisateur devraient être.

  • Il existe cependant des fichiers nécessaires au système lui-même et/ou à chaque utilisateur du système: fichiers binaires, fichiers de périphérique, fichiers système, etc. (rappelez-vous: sous Linux et dans tout autre système de type Unix, tout est un fichier). Ces fichiers nécessaires globalement sont stockés à divers endroits du système de fichiers, organisés dans divers dossiers de la racine du système de fichiers : /. De plus, ces fichiers nécessaires globalement n'appartiennent pas à un utilisateur particulier du système, mais au système lui-même ... mais cela peut être source de confusion: à qui appartiennent les fichiers binaires? Qui donne des autorisations sur ces fichiers globalement nécessaires?

  • Étant donné que chaque fichier du système "nécessite un propriétaire", il doit exister un "utilisateur spécial" capable d'administrer les fichiers globalement nécessaires. De plus, cet "utilisateur spécial" peut faire des choses qu'aucun autre utilisateur du système ne peut faire: il peut créer d'autres utilisateurs pour le système. Cet utilisateur s'appelle "super utilisateur" (pour nous les mortels) ou "root" (pour le système).

  • À présent, ce superutilisateur est un autre utilisateur du système, mais ses pouvoirs (et responsabilités) sont bien supérieurs à ceux des autres utilisateurs: maintenance, par exemple. Il est donc naturel de penser que "root" a besoin d'un emplacement pour y placer ses données, mais il ne faut pas le confondre avec les informations appartenant aux autres utilisateurs. Ainsi, au lieu d'avoir un sous-dossier inférieur à /home/, "root" a son propre espace réservé dans le système de fichiers: /root/ (appelé "slash-root"). Rappelez-vous: "root" est un utilisateur très spécial, il a donc besoin d’un emplacement privilégié et privilégié pour y placer ses données.

  • À présent, Ubuntu n’a pas de compte root activé par défaut. Par conséquent, un utilisateur "normal" doit avoir l’autorité sur le système dans son ensemble. C'est là que la commande Sudo ("changer d'utilisateur et faire") entre en action: elle permet à un utilisateur normal (précédemment inclus dans la liste "sudoers") d'exécuter des commandes comme s'il était un autre utilisateur, par exemple "root".

  • Enfin, les options -i signifient "simuler la connexion initiale". Cela signifie que Sudo lira les données du "profil de l'utilisateur cible" avant d'exécuter la commande donnée. Si vous ne fournissez pas de commande, Sudo lancera une instance Shell avec le profil (racine) de l'utilisateur cible ... et commence par se déplacer dans le dossier "home" de "l'utilisateur cible". Donc, Sudo -i vous déplacera dans le dossier personnel de la racine (/root/).

J'espère que cela vous aide à comprendre ce qui se passe avec Sudo -i.


MODIFIER

Je pense avoir laissé certaines choses non clarifiées, alors je les ajouterai ici:

  • J'ai dit plus haut: "sous Linux, tout est un fichier". Et je le pense, littéralement! Vos documents et images sont des fichiers, mais aussi des terminaux (ceux auxquels vous pouvez accéder en appuyant sur les touches [CTRL] + [ALT] + [Fn]), ainsi que des lecteurs physiques et votre clavier, par exemple. Un système de type Unix fonctionne en lisant ou en écrivant des données depuis/vers des fichiers et en dirigeant le flux de données vers/depuis les fichiers appropriés du système, qui représentent le fichier avec lequel vous travaillez et la saisie des clés que vous tapez, et la sortie que vous voyez à l'écran. Certains de ces fichiers peuvent être utilisés directement par les utilisateurs, d'autres non. Par exemple, vous ne pouvez pas lire ou écrire directement sur un disque dur, mais vous devez laisser Linux relier un dossier normal, navigable, au fichier de périphérique (sous /dev/) représentant votre disque dur.

  • Un système de fichiers Linux peut s’étendre sur plusieurs lecteurs physiques . Un exemple simple est le fait de brancher une clé USB: Linux peut monter ce lecteur (le montage est le processus par lequel le système connecte un dossier standard, où vous pouvez voir les fichiers dans un shell ou un navigateur de fichiers, dans un fichier de périphérique dans /dev/) et vous pouvez l'utiliser, et lorsque vous avez terminé, vous demandez à Linux de démonter le lecteur, puis de le retirer du port USB. L’important ici est que ce cycle "montage-démontage" affecte * le même système de fichiers "que vous utilisez tous les jours: vous ne créez pas de nouveau système de fichiers à chaque fois que vous ajoutez ou supprimez un lecteur physique, mais vous ajoutez ce lecteur physique au système de fichiers ( encore une fois, comparez cette philosophie avec l’approche de Wndows).

  • Etant donné que le système de fichiers peut couvrir plusieurs lecteurs physiques, il est évident que différents fichiers du système peuvent être écrits dans différents lecteurs physiques. Un lecteur peut stocker les fichiers binaires du système (/bin/) et un autre peut stocker les fichiers de l'utilisateur (/home/ et ses descendants). Dans une configuration à plusieurs lecteurs, il est courant que /home/ soit écrit sur un lecteur physique différent de /root/. Par conséquent, si le système tombe en panne et que les utilisateurs ne peuvent pas se connecter car le lecteur où /home/ cesse de fonctionner, peut le faire. (Ceci est simpliste ... de nombreux éléments doivent être copiés dans chaque lecteur physique pour permettre à root de se connecter si aucun autre utilisateur ne le peut, mais cela peut vous donner une idée générale).

  • Et ce caractère tilde (~) ... indique le répertoire de base de l'utilisateur actuel . Si vous êtes connecté en tant que "bob", alors cd ~ vous mènera à /home/bob/, mais si vous êtes connecté en tant que "racine", alors cd ~ vous mènera à /root/

tl; dr Alors maintenant, je pense que tout est dit:

  • "root" est un utilisateur spécial, avec des pouvoirs et des responsabilités bien supérieurs à ceux des autres utilisateurs.

  • "/ root /" est l'endroit où "root" peut stocker son contenu, sans risquer de le confondre avec d'autres éléments appartenant à des utilisateurs normaux. Ce dossier peut être écrit sur un lecteur physique différent de /home/.

  • Sudo -i démarre un shell simulant la connexion root, ce qui implique de passer dans le dossier personnel de la racine. Comme avec tout autre utilisateur, cd ~ vous mènera à votre répertoire personnel, mais si vous êtes root, il s'agira de /root/.

  • Si le système est installé sur différents lecteurs physiques, root peut se connecter et essayer de réparer les choses même si un autre lecteur du système tombe en panne.

8
Barranka

La raison principale pour que le répertoire de base de root soit traité différemment:

En cas de problème, vous devez être en mesure d’effectuer les tâches de récupération du système dès que vous parvenez à monter le système de fichiers /.

Selon votre configuration, les répertoires de départ de l'utilisateur peuvent se trouver sur un système de fichiers différent ou même être montés sur le réseau.

Pour vous connecter en tant que root (c'est-à-dire, entrez le nom root et le mot de passe root à l'invite de connexion) à partir de la console, vous n'avez besoin que du système de fichiers monté.

(C’est aussi la raison pour laquelle les utilitaires principaux sont dans/bin et/sbin au lieu de/usr/bin ou/usr/sbin - tout dans/usr est consommable.)

7
arp