Как откатить сломанные привилегии в 14.04?
Я использую Ubuntu 14.04.3 32bit OS. Несколько месяцев назад я хотел установить QTCAM из исходного кода, для которого требуются файлы библиотеки systemd. Как вы знаете, 14.04 Ubuntu еще не использует systemd, поэтому, как сказал автор, я скомпилировал и установил версию systemd218.
Я установил префикс локального пути, чтобы не портить конфигурацию системы. Я скомпилировал и установил его. При следующей загрузке не удалось войти в сеанс пользователя по умолчанию. Не удалось получить доступ к ~/.cache каталог. Когда я удаляю его, войдя в текстовый режим, я могу войти в сеанс пользователя по умолчанию. После входа я пробовал много вещей, чтобы это исправить. я сделал sudo make uninstall из исходной папки systemd218 в надежде откатить изменения, но ничего не произошло.
Я переустановил все пакеты, связанные с PAM. Я побежал sudo pam-auth-update исправить проблемы с авторизацией.
Я посетил много форумов и читал сообщения об ошибках. Хотя моя проблема возникла по известной причине, я встретил много похожих симптомов без единого исправления.
Я нашел общие библиотеки, установленные systemd218 в исходном каталоге systemd218, например
find -name *.so
./.libs/id128.so
./.libs/_journal.so
./.libs/_reader.so
./.libs/libgudev-1.0.so
./.libs/_daemon.so
./.libs/login.so
./.libs/libsystemd.so
./.libs/pam_systemd.so
./.libs/libudev.so
и переустановил каждый пакет содержит те из Synaptic.
Я также нашел файлы conf, их много.
find -name *.conf
./sysusers.d/basic.conf
./sysusers.d/systemd.conf
./sysusers.d/systemd-remote.conf
./src/timesync/timesyncd.conf
./src/core/org.freedesktop.systemd1.conf
./src/core/system.conf
./src/core/user.conf
./src/journal-remote/journal-upload.conf
./src/journal-remote/journal-remote.conf
./src/resolve/org.freedesktop.resolve1.conf
./src/resolve/resolved.conf
./src/locale/org.freedesktop.locale1.conf
./src/login/logind.conf
./src/login/org.freedesktop.login1.conf
./src/hostname/org.freedesktop.hostname1.conf
./src/bootchart/bootchart.conf
./src/udev/udev.conf
./src/journal/coredump.conf
./src/journal/journald.conf
./src/machine/org.freedesktop.machine1.conf
./src/timedate/org.freedesktop.timedate1.conf
./test/bus-policy/hello.conf
./test/bus-policy/methods.conf
./test/bus-policy/test.conf
./test/bus-policy/signals.conf
./test/bus-policy/check-own-rules.conf
./test/bus-policy/ownerships.conf
./test/bus-policy/many-rules.conf
./sysctl.d/50-default.conf
./sysctl.d/50-coredump.conf
./factory/etc/nsswitch.conf
./tmpfiles.d/var.conf
./tmpfiles.d/etc.conf
./tmpfiles.d/x11.conf
./tmpfiles.d/systemd-nologin.conf
./tmpfiles.d/tmp.conf
./tmpfiles.d/systemd.conf
./tmpfiles.d/legacy.conf
./tmpfiles.d/systemd-remote.conf
Наиболее важными из них должны быть правила udev. Я думаю, что один из них сломал мою систему.
find -name *.rules
./src/login/71-seat.rules
./src/login/73-seat-late.rules
./src/login/70-uaccess.rules
./src/login/70-power-switch.rules
./src/vconsole/90-vconsole.rules
./rules/60-persistent-serial.rules
./rules/60-persistent-alsa.rules
./rules/80-net-setup-link.rules
./rules/61-accelerometer.rules
./rules/50-udev-default.rules
./rules/60-persistent-input.rules
./rules/80-drivers.rules
./rules/60-persistent-storage-tape.rules
./rules/75-probe_mtd.rules
./rules/75-tty-description.rules
./rules/70-mouse.rules
./rules/60-cdrom_id.rules
./rules/95-udev-late.rules
./rules/60-drm.rules
./rules/42-usb-hid-pm.rules
./rules/75-net-description.rules
./rules/99-systemd.rules
./rules/60-persistent-v4l.rules
./rules/60-keyboard.rules
./rules/64-btrfs.rules
./rules/60-persistent-storage.rules
./rules/78-sound-card.rules
У него много других симптомов, таких как:
- Приложения Gui не запрашивают удаленные привилегии для ввода пароля. Например, когда я нажимаю тип учетной записи -> изменить кнопку в
users-adminокно ничего не происходит (гксу работает нормально) - Наутилус не монтирует разделы, когда я нажимаю на них в списке устройств. Я получаю сообщение об ошибке "Не авторизован для выполнения операции".
- Lightdm фоновое изображение не может обновляться в зависимости от обоев пользователя.
- Когда я щелкаю в разделе информации о nm-applet, я получаю сообщение об ошибке "Не найдены активные подключения", хотя сеть подключается автоматически.
Я не могу перезагрузиться без прав root, которые должны перезагрузиться без
sudoс помощью следующей команды:dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
я получил
org.freedesktop.ConsoleKit.Manager.NotPrivileged: Not Authorized error.
Мне нравится мой рабочий стол, я не хочу переустанавливать всю систему. Хотя вводить привилегии root для запуска некоторых приложений неудобно, я могу с этим смириться, если один из умных парней не найдет решение.
РЕДАКТИРОВАТЬ:
dpkg -l | grep 'pol.*kit'
ii gir1.2-polkit-1.0 0.105-4ubuntu3.14.04.1 i386 GObject introspection data for PolicyKit
ii libpolkit-agent-1-0:i386 0.105-4ubuntu3.14.04.1 i386 PolicyKit Authentication Agent API
ii libpolkit-backend-1-0:i386 0.105-4ubuntu3.14.04.1 i386 PolicyKit backend API
ii libpolkit-gobject-1-0:i386 0.105-4ubuntu3.14.04.1 i386 PolicyKit Authorization API
ii libpolkit-qt-1-1 0.103.0-1ubuntu1 i386 PolicyKit-qt-1 library
ii plainbox-secure-policy 0.5.3-2 all policykit policy required to use plainbox (secure version)
ii policykit-1 0.105-4ubuntu3.14.04.1 i386 framework for managing administrative policies and privileges
ii policykit-1-gnome 0.105-1ubuntu4 i386 GNOME authentication agent for PolicyKit-1
ii policykit-desktop-privileges 0.17 all run common desktop actions without password
EDIT2: как Steeldriver интуитивно привел меня на правильный путь
/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
не запускается:
/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
(polkit-gnome-authentication-agent-1:10331): Gtk-WARNING **: Theme parsing error: unity.css:111:9: 'shade' is not a valid property name
(polkit-gnome-authentication-agent-1:10331): polkit-gnome-1-WARNING **: Unable to determine the session we are in: No session for pid 10331
Я использую менеджер дисплея lightdm и сеанс gnome-cairo-dock.
Я пробовал бегать exec gnome-session & в терминале, который дает мне больше подсказок.
Я получил следующий вывод:
(gnome-session:23129): Gtk-WARNING **: Theme parsing error: unity.css:111:9: 'shade' is not a valid property name
(gnome-session-check-accelerated:23133): Gtk-WARNING **: Theme parsing error: unity.css:111:9: 'shade' is not a valid property name
gnome-session[23129]: WARNING: Could not get session id for session. Check that logind is properly installed and pam_systemd is getting used at login.
EDIT: 3
я добавить /etc/pam.d/* файлы. я думал sudo pam-auth-update --force бы исправить конфигурацию PAM, но когда я изменяю umask=0022 в umask=022 в /etc/pam.d/common-session он не заметил изменения и не выпустил предупреждения.
$ grep '^[^#]' /etc/pam.d/common-auth | sed 's/^/ /'
auth [success=3 default=ignore] pam_unix.so nullok_secure
auth [success=2 default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth [success=1 default=ignore] pam_ldap.so minimum_uid=1000 use_first_pass
auth requisite pam_deny.so
auth sufficient pam_usb.so
auth required pam_permit.so
auth optional pam_mount.so
auth optional pam_smbpass.so migrate
auth optional pam_cap.so
$ grep '^[^#]' /etc/pam.d/common-account | sed 's/^/ /'
account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=1 new_authtok_reqd=done default=ignore] pam_winbind.so
account requisite pam_deny.so
account required pam_permit.so
account [success=ok new_authtok_reqd=done ignore=ignore user_unknown=ignore authinfo_unavail=ignore default=bad] pam_ldap.so minimum_uid=1000
$ grep '^[^#]' /etc/pam.d/common-session | sed 's/^/ /'
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session optional pam_umask.so umask=0022
session required pam_unix.so try_first_pass nullok_secure
session required pam_unix.so
session optional pam_winbind.so
session optional pam_mount.so
session [success=ok default=ignore] pam_ldap.so minimum_uid=1000
session optional pam_systemd.so
session optional pam_ck_connector.so nox11
$ grep '^[^#]' /etc/pam.d/common-password | sed 's/^/ /'
password [success=3 default=ignore] pam_unix.so obscure sha512
password [success=2 default=ignore] pam_winbind.so use_authtok try_first_pass
password [success=1 default=ignore] pam_ldap.so minimum_uid=1000 try_first_pass
password requisite pam_deny.so
password required pam_permit.so
password optional pam_smbpass.so nullok use_authtok use_first_pass
password optional pam_gnome_keyring.so
Симптомы и предлагаемые решения практически идентичны этой ошибке
один из парней там утверждает, что добавление
session required pam_loginuid.so
session required pam_systemd.so
линии к /etc/pam.d/lightdm исправляет ошибку Я пробовал это, но это ломает lightdm, я даже не мог войти с этим.
$ grep '^[^#]' /etc/pam.d/lightdm | sed 's/^/ /'
auth requisite pam_nologin.so
auth sufficient pam_succeed_if.so user ingroup nopasswdlogin
@include common-auth
auth optional pam_gnome_keyring.so
auth optional pam_kwallet.so
@include common-account
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
session required pam_limits.so
@include common-session
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
session optional pam_gnome_keyring.so auto_start
session optional pam_kwallet.so auto_start
session required pam_env.so readenv=1
session required pam_env.so readenv=1 user_readenv=1 envfile=/etc/default/locale
@include common-password
EDIT: 4
Сегодня, когда я увидел обновления udev и systemd в пакете, я подумал, что мне повезло, что обновление решит проблему, но, к сожалению, ничего не изменилось.
Вот обновленные пакеты:
gir1.2-gudev-1.0 (1:204-5ubuntu20.17) to 1:204-5ubuntu20.18
libgudev-1.0-0 (1:204-5ubuntu20.17) to 1:204-5ubuntu20.18
libgudev-1.0-dev (1:204-5ubuntu20.17) to 1:204-5ubuntu20.18
libpam-systemd (204-5ubuntu20.17) to 204-5ubuntu20.18
libsystemd-daemon-dev (204-5ubuntu20.17) to 204-5ubuntu20.18
libsystemd-daemon0 (204-5ubuntu20.17) to 204-5ubuntu20.18
libsystemd-id128-0 (204-5ubuntu20.17) to 204-5ubuntu20.18
libsystemd-id128-dev (204-5ubuntu20.17) to 204-5ubuntu20.18
libsystemd-journal0 (204-5ubuntu20.17) to 204-5ubuntu20.18
libsystemd-login-dev (204-5ubuntu20.17) to 204-5ubuntu20.18
libsystemd-login0 (204-5ubuntu20.17) to 204-5ubuntu20.18
libudev-dev (204-5ubuntu20.17) to 204-5ubuntu20.18
libudev1 (204-5ubuntu20.17) to 204-5ubuntu20.18
python-systemd (204-5ubuntu20.17) to 204-5ubuntu20.18
systemd-services (204-5ubuntu20.17) to 204-5ubuntu20.18
udev (204-5ubuntu20.17) to 204-5ubuntu20.18
Итак, в чем может быть проблема?
EDIT: 5
Сегодня я заметил, что после того, как проблема возникла, когда я попытался установить более разрешающее авторство, я ошибочно испортил право собственности в /etc/polkit-1/localauthority Я выпустил sudo chown -R 777 /etc/polkit-1 вместо sudo chmod -R 755 /etc/polkit-1, Я установил это sudo chown root:root -R /etc/polkit-1 сегодня.
Кстати, я заметил, что /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 это не так важно. Я даже удалил пакет, который содержит его ( policykit-1-gnome). Я проверил, изменилось ли это, ничего не изменилось. Потом я убрал consolekit чтобы увидеть его функцию, когда я удалил apt-get переустановил policykit-1-gnome Беременность consolekit не влияет на решение проблемы аутентификации у меня тоже.
Я не знаю, если это важно, вот pam-auth-update список:
│ [*] Unix authentication
│ [*] Winbind NT/Active Directory authentication
│ [*] Mount volumes for user
│ [*] LDAP Authentication
│ [*] Register user sessions in the systemd control group hierarchy
│ [*] SMB password synchronization
│ [*] GNOME Keyring Daemon - Login keyring management
│ [*] ConsoleKit Session Management
│ [*] Inheritable Capabilities Management
EDIT: 6
Я начинаю думать, что это никак не связано с моей модификацией файловой системы. Я заметил, что выскочка не работает. Может ли это быть связано с переходом upstart- > systemd процесса инициализации?
Так как
echo $UPSTART_SESSION
а также
initctl list-sessions
возвращает пустую строку.
Интересно, как загружается моя система?
1 ответ
Ubuntu Live Media имеет функцию переустановки.
Загрузите live CD или USB и начните установку. Выберите опцию для установки обновлений пакета во время установки. В конце концов вы столкнетесь с вопросом, хотите ли вы переустановить Ubuntu. Выбор этой опции заставит установщик попытаться не стереть вашу существующую систему.