Pourquoi n'ai-je pas un mot de passe pour "su"? Problèmes avec "sudo"

29

J'ai installé Ubuntu en utilisant l'interface graphique, en me donnant un mot de passe et tout. Je ne me souviens pas de manière complexe du processus. Cependant, ce qui m'inquiète, c'est que je ne connais pas le mot de passe suivant:

$ su
Password: <the only password I've ever created on this machine>
su: Authentication failure

Je ne sais pas quoi faire. Je ne suis pas en difficulté, mais je veux juste savoir ce qui se passe ici. Je peux aussi me verrouiller hors des répertoires:

[email protected]:~/Desktop$ mkdir foobs
[email protected]:~/Desktop$ sudo chmod 777 -R foobs
sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700
[sudo] password for starkers: <the only password I've ever created on this machine> 
[email protected]:~/Desktop$ cd foobs
bash: cd: foobs: Permission denied

Je suis juste un peu confus. Comment puis-je m'enfermer comme ça? Je pense que sudo est la commande clé ici. Mais je rends le fichier foobs aussi ouvert que possible via chmod , alors pourquoi cela me verrouille-t-il?

    
posée Starkers 07.04.2014 - 01:05
la source

2 réponses

43

Par défaut, le compte superutilisateur ( root ) est désactivé et n’a aucun mot de passe. Vous pouvez en créer un en exécutant:

$ sudo passwd root

Vous pourrez alors vous connecter en tant que root en exécutant su en utilisant ce mot de passe.

Comme pour chmod , la commande correcte serait:

$ chmod 777 -R foobs

Vous pouvez également utiliser:

$ sudo -i

pour vous connecter en tant que root en utilisant votre mot de passe (sans créer de mot de passe root comme décrit ci-dessus).

    
réponse donnée Oli 07.04.2014 - 01:08
la source
66

1. Pourquoi vous n'avez pas de mot de passe root

Alors que vous pouvez créer un mot de passe pour le compte superutilisateur vous permettant de vous connecter en tant que root avec su , il convient de mentionner que ce n’est pas la façon de faire "Ubuntu". Ubuntu a spécifiquement choisi non pour donner un identifiant et un mot de passe root par défaut pour une raison. Au lieu de cela, une installation Ubuntu par défaut utilisera sudo .

Sudo est une alternative à donner aux utilisateurs un mot de passe root pour effectuer des tâches de super-utilisateur. Dans une installation par défaut d'Ubuntu, la personne qui a installé le système d'exploitation reçoit l'autorisation «sudo» par défaut.

Toute personne ayant l'autorisation "sudo" peut effectuer quelque chose "en tant que superutilisateur" en pré-mettant en attente sudo sur sa commande. Par exemple, pour exécuter apt-get dist-upgrade en tant que superutilisateur, vous pouvez utiliser:

sudo apt-get dist-upgrade

Vous verrez cette utilisation de sudo à peu près partout où vous lisez un didacticiel sur Ubuntu sur le Web. C'est une alternative à cela.

su
apt-get dist-upgrade
exit

Avec sudo, vous choisissez à l’avance quels utilisateurs ont un accès sudo. Il n'est pas nécessaire qu'ils se souviennent d'un mot de passe root, car ils utilisent leur propre mot de passe. Si vous avez plusieurs utilisateurs, vous pouvez révoquer son accès en supprimant simplement leur autorisation sudo, sans avoir à changer le mot de passe root et à informer tout le monde d'un nouveau mot de passe. Vous pouvez même choisir les commandes qu'un utilisateur est autorisé à exécuter en utilisant sudo et quelles commandes sont interdites pour cet utilisateur. Enfin, s’il ya une faille de sécurité, elle peut dans certains cas laisser une meilleure piste d’audit indiquant quel compte utilisateur a été compromis.

Sudo facilite l'exécution d'une seule commande avec les privilèges de superutilisateur. Avec su , vous passez définitivement à un shell superutilisateur qui doit être quitté en utilisant exit ou logout . Cela peut amener les utilisateurs à rester dans le shell du superutilisateur plus longtemps que nécessaire, simplement parce que cela est plus pratique que de se déconnecter et de revenir plus tard.

Avec sudo, vous avez toujours la possibilité d’ouvrir un shell superutilisateur permanent (interactif) avec la commande:

sudo su

... et cela peut toujours être fait sans mot de passe root, car sudo donne les privilèges du superutilisateur à la commande su .

De même, au lieu de su - pour un shell de connexion, vous pouvez utiliser sudo su - ou même sudo -i .

Cependant, vous devez simplement savoir que vous agissez en tant que superutilisateur pour chaque commande. C'est un bon principe de sécurité de ne pas rester en tant que superutilisateur plus longtemps que nécessaire, juste pour réduire la possibilité de causer accidentellement des dommages au système (sans cela, vous ne pouvez endommager que les fichiers que votre utilisateur possède).

Juste pour clarifier, vous pouvez , si vous le souhaitez, donner à l'utilisateur root un mot de passe autorisant les connexions en tant que root comme indiqué dans la réponse de @ Oli, si vous voulez faire les choses de cette façon. Je voulais juste vous informer de la convention Ubuntu de préférer sudo à la place et vous faire savoir qu'il existe une alternative.

2. Les problèmes avec votre commande chmod 777 -R

Votre question comporte également une seconde partie: vos problèmes avec la commande sudo chmod 777 -R foobs .

Tout d’abord, l’avertissement suivant indique un problème de sécurité potentiellement grave sur votre ordinateur:

sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700

Cela signifie qu'à un certain stade, vous définissez /var/lib/sudo comme étant accessible en écriture. J'imagine que vous l'avez fait à un moment donné en utilisant une commande comme sudo chmod 777 -R / . Malheureusement, en faisant cela, vous avez probablement brisé toutes les autorisations de fichiers sur votre système. Il est peu probable que ce soit le seul fichier système important dont les autorisations ont été modifiées pour être accessibles en écriture. Essentiellement, vous avez maintenant un système facilement piratable, et le seul moyen facile de le récupérer serait de le réinstaller.

Deuxièmement, la commande que vous utilisiez:

sudo chmod 777 -R foobs

Lorsque vous manipulez des fichiers dans votre répertoire personnel, dans ce cas, dans ~/Desktop , vous ne devriez pas avoir à utiliser sudo . De toute façon, tous les fichiers que vous créez dans votre répertoire personnel doivent être modifiables (et sinon, il se passe quelque chose de drôle).

De plus, vous devez être pleinement conscient des conséquences de la modification massive des autorisations de fichiers, par exemple en le faisant de manière récursive ou sur un grand nombre de fichiers. Dans ce cas, vous modifiez soigneusement les autorisations de fichiers pour qu'elles soient accessibles en écriture. Tout autre utilisateur, ou tout logiciel serveur buggé sur la machine, peut facilement accéder à tous ces fichiers et répertoires.

Il est presque certain que chmod 777 -R [dir] n'est pas une solution appropriée pour tout problème que vous tentiez de résoudre (et comme je l’ai mentionné ci-dessus, il est prouvé que vous l’avez fait sur des fichiers système dans / var / lib aussi, et je suppose à beaucoup d'autres endroits).

Quelques règles de base:

  • Si vous ne faites que jouer avec vos propres fichiers dans votre répertoire personnel, votre bureau, etc., vous ne devriez jamais avoir à utiliser les droits sudo ou superutilisateur. Si vous le faites, c'est un signe d'avertissement que vous faites quelque chose de mal.

  • Vous ne devez jamais modifier manuellement les fichiers système appartenant à des packages. Exception: sauf si vous le faites de manière spécifique documentée par ces packages, par exemple en modifiant leur configuration dans /etc . Cela s'applique également à la modification des autorisations de fichiers. Si un didacticiel ou une tentative de résolution du problème nécessite les droits sudo ou superutilisateur, et qu'il ne s'agit pas simplement de modifier une configuration dans / etc /, cela signifie que vous faites quelque chose de mal.

réponse donnée thomasrutter 07.04.2014 - 02:17
la source

Lire d'autres questions sur les étiquettes