Comment passer à l'utilisateur root mais rester dans le même répertoire

9

Je suis récemment passé à Ubuntu et j'ai observé une chose lorsque j'utilise la commande suivante pour passer à l'utilisateur root

sudo su - root

Cela m'emmène directement à la maison de root ( /root), donc je perds ma place dans le système de fichiers (le répertoire où j'ai exécuté cette commande). Existe-t-il un moyen de basculer vers root sans perdre le répertoire actuel?

Hammad Hassan
la source

Réponses:

16

Tout d'abord, ne l'utilisez pas sudo su. Ce n'est pas faux, ni dangereux ou quoi que ce soit, c'est juste inélégant et inutile . Vous exécutez deux programmes distincts pour effectuer un travail facilement géré par un seul. Si vous souhaitez démarrer un shell en tant que root, vous sudopouvez le faire pour vous.

Si vous voulez démarrer un shell de connexion (c'est ce que fait sudo su -), utilisez sudo -i. Cela, cependant, puisqu'il démarre un shell de connexion, vous amènera par défaut au répertoire personnel de root.

Pour démarrer un shell normal sans connexion, vous pouvez utiliser sudo -s. Cela démarrera un shell racine pour vous et vous gardera dans le répertoire à partir duquel vous l'avez exécuté:

terdon@tpad ~ $ pwd
/home/terdon
terdon@tpad ~ $ sudo -i  ## changes directory
[root@tpad ~]# pwd
/root
[root@tpad ~]# logout
terdon@tpad ~ $ sudo -s  ## doesn't change directory
[root@tpad terdon]# pwd
/home/terdon

Ainsi, la façon de démarrer un shell racine et de rester dans le même répertoire est sudo -s.

terdon
la source
1
Le problème peut être qu'il sudo -sn'exécute pas le profil de l'utilisateur cible car il ne s'agit pas d'un shell de connexion. Alors peut-être que la vraie question est de savoir s'il existe un moyen d'obtenir un shell de connexion avec sudo, mais sans changer de répertoire. Probablement pas.
Barmar
@Barmar non, mais oui sudo -i. J'ai utilisé -sdepuis l'OP ne voulait pas d'un shell de connexion (ne voulait pas passer à $HOME). Si vous voulez un shell de connexion, utilisez sudo -i. J'ai posté une comparaison des environnements de sudo -i, su -, sudo -set sudans ma question ici si vous voulez avoir un coup d' oeil.
terdon
Tout à l'heure, j'ai eu une très mauvaise expérience avec cette commande, sudo -s. Même cela ne change pas le répertoire mais cela ne m'a pas donné un accès root complet. Certains de mes fichiers étaient présents dans un répertoire mais je n'ai pas pu les voir en tant qu'utilisateur normal et en tant qu'utilisateur root de cette manière (sudo -s). Ensuite, j'ai utilisé l'ancienne méthode (sudo su - root) et je suis allé dans le répertoire et mes fichiers étaient maintenant visibles pour moi. Pourquoi sudo -s m'a accordé un accès restreint?
Hammad Hassan
@HammadHassan, il est impossible que ce que vous décrivez se soit produit. Il doit y avoir autre chose. Que voulez-vous dire par "impossible de voir" les fichiers? Vous voulez peut-être dire "impossible de lire les fichiers"? Utilisez-vous peut-être le cryptage?
terdon
"impossible de voir" signifie une simple commande "ls". Il ne m'a pas montré mes fichiers. Pas de chiffrement du tout. Mes fichiers sont simples. Et c'est vraiment arrivé.
Hammad Hassan
8

C'est très simple. Tapez simplement

sudo su

au lieu de

sudo su - root

Cela vous gardera dans le même dossier que root.

Joo Nice
la source
9
Ce n'est pas faux, je veux dire que cela fonctionne, mais l'utilisation sudo sun'a pas beaucoup de sens. C'est pour ça sudo -s. Je n'ai jamais compris pourquoi tant de tutoriels Ubuntu le suggèrent sudo su.
terdon
@terdon Je ne l'ai jamais compris non plus, mais il semble être répandu parmi tous les utilisateurs de Linux. Peut-être que l'allitération le rend plus mémorable.
Barmar
@Barmar personnellement, je ne l'ai vu que dans le monde Ubuntu. Puisque la plupart des systèmes Linux ont un compte root normal par défaut, lorsque vous avez besoin d'un shell, vous le feriez su(seul, non sudo). Parce que, cependant, Ubuntu désactive le compte root par défaut, le sudo suest venu tout naturellement. c'est aussi, apparemment , le cas dans certains coins du monde UNIX également, mais sous Linux, je ne l'ai vu que dans Ubuntu.
terdon
@terdon Je l'ai vu pendant des décennies, je ne sais même pas quelles distributions nous utilisions. Nous utilisons Debian dans mon entreprise actuelle et mes collègues l'utilisent.
Barmar