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?
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é:
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é.
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.
sudo -s
n'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 avecsudo
, mais sans changer de répertoire. Probablement pas.sudo -i
. J'ai utilisé-s
depuis l'OP ne voulait pas d'un shell de connexion (ne voulait pas passer à$HOME
). Si vous voulez un shell de connexion, utilisezsudo -i
. J'ai posté une comparaison des environnements desudo -i
,su -
,sudo -s
etsu
dans ma question ici si vous voulez avoir un coup d' oeil.C'est très simple. Tapez simplement
au lieu de
Cela vous gardera dans le même dossier que root.
la source
sudo su
n'a pas beaucoup de sens. C'est pour çasudo -s
. Je n'ai jamais compris pourquoi tant de tutoriels Ubuntu le suggèrentsudo su
.su
(seul, nonsudo
). Parce que, cependant, Ubuntu désactive le compte root par défaut, lesudo su
est 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.