Pourquoi ne puis-je pas exécuter `su`? (et comment dois-je faire?)


33

Chaque fois que j'essaie d'émettre, suj'obtiens ceci:

$ su  
Password:  
su: Sorry

Inutile de dire que j'entre le mot de passe administrateur correct qui fonctionne avec sudo. Ce que je veux, c'est de ne pas avoir à entrer à sudochaque fois.

Réponses:


34

Dans MacOS X, l'utilisateur root est désactivé par défaut, donc sune fonctionnera pas. Comme d'autres l'ont dit, il vaut mieux l'utiliser sudo.

Si vous devez activer l'utilisateur root, voir la TechNote d'Apple: Activation et utilisation de l'utilisateur « root » sous Mac OS X .


13
sudo sufonctionne toujours, il n'est donc pas vraiment désactivé. Il n'a tout simplement pas de mot de passe.
Fake Name

@FakeName C'est la porte dérobée la plus hilarante! Si vous pouvez exécuter sudo su, quel est le point de désactivation sualors dans le monde ?
Kolob Canyon

3
@KolobCanyon - Le but n'est pas vraiment de "désactiver su", c'est d' empêcher la connexion root . En interdisant la connexion en tant que root, vous évitez un tas de problèmes de sécurité possibles. Ne pas permettre à quelqu'un qui peut sudoà suest un peu ridicule. Fondamentalement, il susuffit de modifier l'ID utilisateur actuel et d'exécuter une commande (un shell, s'il n'est pas spécifié). Si l'ID utilisateur est déjà 0 (root), comme lors de l'exécution avec sudo, il n'y a rien à faire, donc il exécute simplement le shell. Vous pouvez obtenir un effet similaire en faisant sudo bash.
Fake Name

1
@FakeName Toujours confus. Quelle est la différence entre la connexion en tant que root et l'exécution de «sudo su»? N'est-ce pas effectivement le même niveau?
Kolob Canyon

2
@KolobCanyon - Non. Fondamentalement, si vous désactivez la connexion , cela signifie que s'il y a une vulnérabilité dans le processus de connexion, un pirate ne peut pas l'utiliser pour obtenir directement root. Fondamentalement, il déplace le compromis racine requis de "compromis de connexion" à "compromis de connexion pour le compte utilisateur + privesc". C'est essentiellement fait comme une défense en profondeur.
Fake Name

15

Vous avez deux options. La première consiste à utiliser sudo -s- cela vous donnera un accès superutilisateur, mais vous resterez toujours «vous-même» (pour ainsi dire), donc des choses comme ~seront toujours votre répertoire personnel. Alternativement, vous pouvez utiliser sudo su, qui vous donne un shell en tant qu'utilisateur root réel de votre Mac.


5
L'Apple Way (tm) est à utiliser sudopour exécuter des commandes qui nécessitent des privilèges élevés, pas pour basculer vers un shell racine et travailler à partir de cela.
Ian C.

3
@Ian C. - Non, c'est en fait la voie Unix. Apple l'utilise simplement parce qu'il est également basé sur * nix.
Fake Name

@Fake Name: Apple se donne beaucoup de mal pour ne jamais parler ni exposer le shell root aux utilisateurs. On pourrait dire qu'ils sudopoussent la philosophie à l'extrême. Mais peu importe: la sémantique. N'utilisez pas de shell root sous OS X.
Ian C.

1
@Ian C - Apple ne fait pas beaucoup plus que les concepteurs de * nix, Apple n'en parle pas beaucoup. Dans les deux cas, il est là, uniquement avec des choses comme Linux, ils vous indiquent comment l'utiliser facilement. Si cela le rend plus largement utilisé , cela n'indique pas une différence d'architecture sous-jacente.
Fake Name

1

Par exemple, si vous avez besoin de déplacer des fichiers ou d'utiliser git à l'aide de la CLI, dans ce cas, la meilleure solution sera d'utiliser la sudo -scommande. Après cette commande, vous n'avez plus besoin de saisir le mot de passe encore et encore.


1

Je pense que vous ne pouvez pas faire cela en tant qu'utilisateur "normal" ...

S'il existe un autre compte utilisateur avec des droits d'administrateur, vous devez utiliser celui-ci

restricted user$ su
Password:(the root password here)
Sorry!

restricted user$ su - (an admin account here)
password:(the admin account password)
$ su - root
Password:(The root password here)
# -> You are root user now

1

Solution moderne: sudo -u

Pour exécuter une autre utilisation, utilisez sudo -u.

Par exemple, pour exécuter un éditeur de texte tel que nano :

sudo -u someuser nano

… Et entrez votre mot de passe utilisateur administrateur Mac lorsque vous y êtes invité. À ce stade, c'est votre administrateur Mac qui invoque sudo, pas l' someuserutilisateur, donc vous n'entrez pas le someusermot de passe.

  • sudo signifie exécuter quelque chose en utilisant les privilèges de superutilisateur.
  • -u signifie «exécuter une commande spécifiée en tant que cet utilisateur spécifié».
  • someuser doit être remplacé par le nom d'utilisateur souhaité.

Pour simuler une connexion initiale en tant qu’utilisateur particulier, y compris l’exécution de leurs scripts de démarrage, utilisez -I.

sudo -u someuser -i nano

Cela exécute l' nanoapplication en tant qu'utilisateur, someusermais uniquement après avoir exécuté les scripts de démarrage pour cet utilisateur.

Si nous choisissons de ne pas spécifier de commande ou d'application à exécuter, nous obtenons un shell interactif fonctionnant en tant qu'utilisateur.

sudo -u someuser -i

Vieille école: sudo su someuser

Une autre approche utilise la sucommande en combinaison avec le sudo. La sucommande signifie «changer d'utilisateur».

sudo su someuser

Ou, pour inclure l'exécution des scripts de démarrage de l'utilisateur, ajoutez le trait d'union.

sudo su - someuser

root utilisateur

L' rootutilisateur des systèmes d'exploitation Unix a le pouvoir absolu de faire n'importe quoi.

Apple a choisi de désactiver le rootcompte sous macOS, pour éviter les failles de sécurité et pour vous protéger de vous tirer une balle dans le pied. Apple a créé l'idée des comptes d'utilisateurs Administrateur qui ont de nombreux pouvoirs, plus de pouvoirs qu'un compte d'utilisateur Standard , mais pas un pouvoir absolu comme l' roota fait. Consultez cette note d'assistance Apple pour en discuter.

Si nécessaire, vous pouvez activer l' rootutilisateur dans macOS, puis basculer vers cet utilisateur. Ceci est fortement déconseillé. Je n'irais dans cette voie qu'en dernier recours.


Pour une discussion à ce sujet dans le contexte de l' postgresutilisateur exécutant le système de base de données Postgres sur macOS, consultez cette question sur le site partenaire , DBA Stack Exchange .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.