J’ai cassé Sudo après une mise à niveau de 9 à 12.04.1

Actuellement, sudo demandera un mot de passe, mais il ne se passera absolument rien par la suite. Aucune erreur d’aucune sorte.

J’ai vérifié le fichier sudoers, il a passé la vérification de la syntaxe visudo, voici la configuration:

 # # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d 

Le fichier a une autorisation de 0440. Je me suis ajouté au groupe sudo et admin .

Voici à quoi ça ressemble quand j’essaie d’utiliser Sudo:

 kml@rhythmsdev:/etc$ sudo apt-get update kml@rhythmsdev:/etc$ 

Comme vous pouvez le constater, aucune erreur du tout. Il retourne simplement à l’invite.

Voici les permissions de fichiers

-r--r----- 1 root root 723 Feb 1 10:10 sudoers

sudoers.d

drwxr-xr-x 2 root root 4096 Feb 4 16:46 .

Voici la sortie de id un des utilisateurs sous lesquels j’essaie de faire fonctionner Sudo:

uid=1010(kml) gid=102(develop) groups=102(develop),4(adm),27(sudo),106(admin),110(ftp)

Comment j’ai effectué la mise à niveau.

J’ai effectué la mise à niveau à l’aide de do-release-upgrade -d sur SSH, mais avec un access physique possible via un trajet dans le couloir.

Voici le contenu du fichier /etc/sources.list

  # # deb cdrom:[Ubuntu-Server 10.04 LTS _Lucid Lynx_ - Release i386 (20100427)]/ lucid main ressortingcted # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the dissortingbution. deb http://us.archive.ubuntu.com/ubuntu/ precise main ressortingcted deb-src http://us.archive.ubuntu.com/ubuntu/ precise main ressortingcted ## Major bug fix updates produced after the final release of the ## dissortingbution. deb http://us.archive.ubuntu.com/ubuntu/ precise-updates main ressortingcted deb-src http://us.archive.ubuntu.com/ubuntu/ precise-updates main ressortingcted ## NB software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://us.archive.ubuntu.com/ubuntu/ precise universe deb-src http://us.archive.ubuntu.com/ubuntu/ precise universe deb http://us.archive.ubuntu.com/ubuntu/ precise-updates universe deb-src http://us.archive.ubuntu.com/ubuntu/ precise-updates universe ## NB software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://us.archive.ubuntu.com/ubuntu/ precise multiverse deb-src http://us.archive.ubuntu.com/ubuntu/ precise multiverse deb http://us.archive.ubuntu.com/ubuntu/ precise-updates multiverse deb-src http://us.archive.ubuntu.com/ubuntu/ precise-updates multiverse ## Uncomment the following two lines to add software from the 'backports' ## repository. ## NB software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. # deb http://us.archive.ubuntu.com/ubuntu/ lucid-backports main ressortingcted universe multiverse # deb-src http://us.archive.ubuntu.com/ubuntu/ lucid-backports main ressortingcted universe multiverse ## Uncomment the following two lines to add software from Canonical's ## 'partner' repository. ## This software is not part of Ubuntu, but is offered by Canonical and the ## respective vendors as a service to Ubuntu users. # deb http://archive.canonical.com/ubuntu lucid partner # deb-src http://archive.canonical.com/ubuntu lucid partner deb http://security.ubuntu.com/ubuntu precise-security main ressortingcted deb-src http://security.ubuntu.com/ubuntu precise-security main ressortingcted deb http://security.ubuntu.com/ubuntu precise-security universe deb-src http://security.ubuntu.com/ubuntu precise-security universe deb http://security.ubuntu.com/ubuntu precise-security multiverse deb-src http://security.ubuntu.com/ubuntu precise-security multiverse # deb http://security.ubuntu.com/ubuntu maverick-security main universe 

Répertoire: /etc/apt/sources.list.d est vide.

lsb_release -a is

 No LSB modules are available. Dissortingbutor ID: Ubuntu Description: Ubuntu 12.04.1 LTS Release: 12.04 Codename: precise 

apt-cache policy sudo est:

 sudo: Installed: 1.8.3p1-1ubuntu3.3 Candidate: 1.8.3p1-1ubuntu3.3 Version table: *** 1.8.3p1-1ubuntu3.3 0 500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main i386 Packages 100 /var/lib/dpkg/status 1.8.3p1-1ubuntu3.2 0 500 http://security.ubuntu.com/ubuntu/ precise-security/main i386 Packages 1.8.3p1-1ubuntu3 0 500 http://us.archive.ubuntu.com/ubuntu/ precise/main i386 Packages 

type -a sudo est

 sudo is /usr/bin/sudo 

sha256sum $(which sudo) est

0efd358e04ea07dc73b67642d9bb85f49143c65996a7c88a57b42557a0b0a50d /usr/bin/sudo

pkexec echo success fait ceci:

 ==== AUTHENTICATING FOR org.freedesktop.policykit.exec === Authentication is needed to run `/bin/echo' as the super user Multiple identities can be used for authentication: 1. My Name,,, (me) 2. ,Account used for Git,, (git) 3. Coworker1,,, (cw1) 4. Coworker2,,, (cw2) 5. Coworker3,,, (cw3) 6. My Name,,, (me) 7. Coworker4,,, (cw4) 8. Coworker5,,, (cw5) 9. ,Account used for Git,, (git) Choose identity to authenticate as (1-9): 1 Password: ==== AUTHENTICATION COMPLETE === success 

Les noms ont été changés pour protéger les plus innocents. Je me présente deux fois, pour une raison quelconque. Mais aucun des autres collègues ne peut utiliser Sudo non plus (ceux qui pourraient de toute façon effectuer une mise à niveau préalable).

Voici la sortie de quelques commandes supplémentaires.

visudo le fichier sudoers et ajouté kml ALL=(ALL:ALL) ALL sous la ligne racine

sudo -i echo success est retourné comme avant, rien.

echo foo | sudo tee foo.txt; ls -l foo.txt echo foo | sudo tee foo.txt; ls -l foo.txt donné:

ls: cannot access foo.txt: No such file or directory

Comment j’ai réinstallé Sudo.

J’ai accompli cela deux fois.

La première fois que j’ai exécuté apt-get install --reinstall sudo –De root

Cela a peu abouti, j’ai donc d’abord désinstallé via: apt-get uninstall sudo puis apt-get install sudo

Editer plus d’infos, reditied

sudo revient en mode silencieux après l’authentification par mot de passe et ne demande plus. sudo -k et sudo -K échouent également silencieusement. J’étais connecté en tant que root, il demande un mot de passe pour un compte normal.

Plus d’infos 2

J’ai couru tail -f /var/log/auth.log

Voici la sortie de mes sudo ls de mon compte kml

 Feb 6 16:33:27 rhythmsdev sudo: pam_unix(sudo:session): session opened for user root by kml(uid=1010) Feb 6 16:33:27 rhythmsdev sudo: pam_unix(sudo:session): session closed for user root 

La tentative d’un mot de passe incorrect demande un nouveau mot de passe et le consigne.

Feb 6 16:35:17 rhythmsdev sudo: pam_unix(sudo:auth): authentication failure; logname=kml uid=1010 euid=0 tty=/dev/pts/0 ruser=kml rhost= user=kml

ed3

sudo apt-get clean && sudo apt-get update && sudo apt-get --purge --reinstall install sudo

Sudo ne fonctionne toujours pas. Voici la sortie

 apt-get install --purge --reinstall sudo Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: mono-2.0-gac libxcb-aux0 python-fstab libgnomekbd4 libts-0.0-0 libwpd8c2a libcdio10 xsltproc pnm2ppa librpmbuild0 libcolamd2.7.1 lp-solve libglitz-glx1 openoffice.org-writer libntfs10 python-gnome2 libxcb-render-util0 libevent-1.4-2 gnome-media gnome-desktop-data libgtk-vnc-1.0-0 libgnomepanel2.24-cil xulrunner-1.9.2 libxcb-event1 libindicator0 linux-headers-2.6.32-38 libicu42 openoffice.org-draw libdbusmenu-glib1 ubufox python-aptdaemon-gtk openoffice.org-gtk libsilc-1.1-2 libgnome-media0 libbeagle1 g++-4.4 libexchange-storage1.2-3 libgraphite3 libwpg-0.1-1 libibus1 libproxy0 libnm-util1 python-gtksourceview2 libevview2 scrollkeeper libindicate-gtk2 libwebkit-1.0-2 libmono-system-runtime2.0-cil libpisock9 libdns64 libcamel1.2-14 bcmwl-modaliases librpmio0 librpm0 libgnome2-perl libaccess-bridge-java-jni libstdc++6-4.4-dev libeggdbus-1-0 libnspr4-0d libgtkhtml-editor0 esound-common python-pyorbit gdebi-core libnotify1 python-telepathy libedata-cal1.2-6 libaccess-bridge-java libdevkit-power-gobject1 gnome-media-common liarmqal2 libpango1.0-common ubuntuone-client-gnome cups-driver-gutenprint libgadu3 openoffice.org-style-human libmono-cairo2.0-cil libisccc60 cpu-checker libgweather1 python-gtkspell libgnome-bluetooth7 libxxf86misc1 libloudmouth1-0 libsexy2 libxcb-atom1 libido-0.1-0 libgmime2.4-cil compiz-plugins libffi5 libgnome-pilot2 libdirectfb-1.2-0 openoffice.org-style-galaxy libgssdp-1.0-2 libcryptui0 finger libmusicbrainz4c2a python-pyatspi libgp11-0 libjs-mootools python-webkit libgcr0 libqt4-webkit libcdio-cdda0 libhunspell-1.2-0 liblwres60 libgmp3c2 libgtksourceview2.0-common openoffice.org-math libhal1 libgtksourceview2.0-0 hal libgnome2-vfs-perl libprotobuf5 libesd0 openoffice.org-common libegroupwise1.2-13 libdbusmenu-gtk1 libgsf-1-common gnome-doc-utils libecal1.2-7 at-spi libpoppler5 libgmime-2.4-2 libgdata1.2-1 libedataserver1.2-11 libhal-storage1 libpython2.6 gnome-system-monitor libmldbm-perl libbind9-60 libimobiledevice0 libgtkmm-2.4-1c2a libglitz1 libevdocument2 libgdata-google1.2-1 libspeechd2 fglrx-modaliases libnunit2.4-cil libclutter-gtk-0.10-0 libebook1.2-9 libmagickcore2 libaudiofile0 libwps-0.1-1 libedataserverui1.2-8 nvidia-173-modaliases libphonon4 libgnome-window-settings1 libedata-book1.2-2 libgdata6 libxss1 libgs8 openoffice.org-emailmerge libappindicator0 liblpint-bonobo0 ntfsprogs libjpeg62 libgtkhtml-editor-common libqt4-designer libmpfr1ldbl libcdio-paranoia0 libmysqlclient16 libmagickwand2 libisccfg60 libfreezethaw-perl smartdimmer libgupnp-1.0-3 screen-resolution-extra libnl1 libanthy0 tsconf liboobs-1-4 libgucharmap7 libgksu2-0 libdb4.7 libsilcclient-1.1-3 libindicate4 libndesk-dbus-glib1.0-cil libraptor1 python-wnck liboil0.3 libebackend1.2-0 firefox-branding hal-info speech-dispatcher libgnome-desktop-2-17 fuse-utils python-desktopcouch gwibber libisc60 libnice0 linux-headers-2.6.32-38-generic libnautilus-extension1 compiz-fusion-plugins-main gnome-applets-data min12xxw libwebkit-1.0-common libavahi-ui0 libprotoc5 nvidia-96-modaliases libavahi-core6 libgupnp-igd-1.0-2 libgnome2-canvas-perl libgtkhtml3.14-19 libgsf-1-114 python-rdflib gnome-panel-data libpoppler-glib4 libpisync1 libdotconf1.0 python-indicate Use 'apt-get autoremove' to remove them. 0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 16 not upgraded. Need to get 292 kB of archives. After this operation, 0 B of additional disk space will be used. Get:1 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main sudo i386 1.8.3p1-1ubuntu3.3 [292 kB] Fetched 292 kB in 0s (742 kB/s) (Reading database ... 310429 files and directories currently installed.) Preparing to replace sudo 1.8.3p1-1ubuntu3.3 (using .../sudo_1.8.3p1-1ubuntu3.3_i386.deb) ... Unpacking replacement sudo ... Processing sortingggers for ureadahead ... Processing sortingggers for man-db ... Setting up sudo (1.8.3p1-1ubuntu3.3) ... 

éditer 4

sha256sum /usr/lib/sudo/sudoers.so /usr/lib/sudo/sudo_noexec.so résultat

 6f2e56e05d9a3de942558255b72d59a147be2c637247e244c365838378fe6ec3 /usr/lib/sudo/sudoers.so 7db6a45129ec1ef6d4cb21d7a488a85f5b45e4d21990116f64c9e71f116648c0 /usr/lib/sudo/sudo_noexec.so 

Sudo en tant qu’autre utilisateur, (exécuté en tant que root)

 root@rhythmsdev:/home/kml# sudo -u kml echo success root@rhythmsdev:/home/kml# 

éditer 5

En utilisant les scripts fournis par Eliah Kagan ici, j’ai vérifié les groupes et identifiants en double. Tous les diffs sont vides.

éditer 6

strace echo success ici

éditer 7

 root@rhythmsdev:/home/kml# sudo echo success root@rhythmsdev:/home/kml# echo $? 1 

éditer 8

Cela semble intéressant, c’est différent d’un serveur qui a sudo de travail

 root@rhythmsdev:/home/kml# sudo -l Matching Defaults ensortinges for root on this host: env_reset, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User root may run the following commands on this host: (ALL : ALL) ALL (ALL) ALL root@rhythmsdev:/home/kml# 

C’est moi en tant que root

Moi comme moi (pas root)

 kml@rhythmsdev:~$ sudo -l [sudo] password for kml: Matching Defaults ensortinges for kml on this host: env_reset, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User kml may run the following commands on this host: (ALL : ALL) ALL (ALL) ALL (ALL : ALL) ALL kml@rhythmsdev:~$ 

Je vous remercie,

Je suis à court d’idées pour le moment.

C’était anti-climatique…

J’ai pu résoudre ce problème en modifiant une ligne de mon fichier sudoers.

J’ai modifié cette ligne

 Defaults env_reset 

et je l’ai changé pour

 Defaults !env_reset 

C’est parce que j’ai remarqué que sudo -E travaillait. J’ai donc fait des recherches et trouvé un moyen d’empêcher sudo d’effacer vos variables environnementales. Jusqu’à présent, cela semble avoir résolu le problème. Ce que je dois faire, c’est déterminer quelle variable d’environnement doit être conservée et je l’appendai avec env_keep + =

Que vous tous pour votre aide et votre soutien, je continuerai à le mettre à jour. Je ne sais pas si quelqu’un a déjà suggéré sudo -E avant de me le faire savoir, et j’atsortingbuerai la prime à cette personne.

ed1

Je risque donc de créer des problèmes de sécurité avec le! Env_reset. Je garderai la mise à jour.

Vérifiez si vous faites partie du groupe d’administrateurs.

vous pouvez démarrer le démarrage de secours et résoudre le problème également à l’aide d’un CD Linux.

Vous devriez toujours utiliser visudo lorsque vous modifiez le fichier sudoers. visudo vérifiera la syntaxe du fichier sudo avant de l’enregistrer, vous protégeant ainsi de ce problème spécifique (mais pas de l’écriture d’un fichier sudoers qui vous empêche d’exécuter sudo!)

Notez que sudoers est normalement configuré pour ne pas être accessible en écriture, même par root sous Ubuntu:

 -r--r----- 1 root root 600 2012-06-18 18:00 sudoers 

Les protections de fichiers ou la propriété du fichier sudoers ne sont plus correctes. Le fichier doit appartenir à l’utilisateur: racine et groupe: les protections de racine et de fichier doivent être: 0440 (u = r, g = r, o-rwx) .

 chown root:root /etc/sudoers chmod u=r,g=r,o= /etc/sudoers chown -R root:root /etc/sudoers.d chmod u=rwx,g=rx,o=rx /etc/sudoers.d/ chmod u=r,g=r,o= /etc/sudoers.d/* 

Les fichiers ne doivent être lus que pour l’utilisateur root et le groupe root, rien de plus pour personne. Le répertoire doit être rx pour tout le monde et pour la racine du groupe, mais seule la racine de l’utilisateur obtient le droit d’écriture sur le répertoire.