Quelle est la différence entre sudo su - et sudo su -

22

Lorsque je travaille sur nos machines RHEL, je sudo su -passe en mode root. Un jour, une faute de frappe signifie que j'ai tapé à la sudo su --place - il me semble que tout était le même qu'avec un seul trait d'union, sauf que j'étais dans le même dossier qu'avant d'émettre la commande (avec un seul trait d'union dans lequel je me retrouve /root).

Y a-t-il d'autres différences? Est-il sûr de l'utiliser dans des scénarios où je sais que je veux travailler dans le même répertoire?

Riches
la source

Réponses:

22

Lorsque vous fournissez un double trait d'union, l'expérience que vous aurez est identique à celle que vous veniez d'exécuter sudo susans trait d'union.

Passer un trait d'union est identique à passer -lou --login. La page de manuel de sudécrit le comportement comme suit:

Fournissez un environnement similaire à celui auquel l'utilisateur s'attendrait s'il se connectait directement.

Cela inclut la définition de votre répertoire dans votre répertoire personnel et la définition d'un tas d'autres variables d'environnement.

La transmission d'un double tiret à une commande est généralement utilisée pour marquer la fin des indicateurs de ligne de commande et le début des arguments autres que les indicateurs. Par exemple, si vous exécutez, touch -Rvous recevrez une erreur indiquant que -R n'est pas une option pour touch, mais si vous l'exécutez, touch -- -Ril créera un fichier nommé -R. Cela est vrai pour de nombreux outils de ligne de commande ( ls -Rfera un récursif lsalors ls -- -Rqu'il effectuera un lssur un fichier ou un répertoire nommé -R.

Donc, pour conclure, lorsque vous passez uniquement -- à sucela , vous ignorez fondamentalement le --et agissez comme si vous n'aviez passé aucune option.

Mark Drago
la source
Je vais en créer une question mais sudo su -et sudo su -ldiffère. Sur un compte où je ssh avec une clé uniquement, et j'ai les droits sudo pour passer à un autre utilisateur spécifique, sudo su -change l'utilisateur sans problème mais sudo su -lou sudo su --loginje demanderai un mot de passe sudo, que je n'ai pas (bien qu'en examinant sudo -lje pourrait s'exécuter /bin/suavec NOPASSWD)
karatedog
@karatedog, il semble que vous n'ayez pas créé de question ....
Wildcard