Когда машина без головы, пользователь больше не имеет привилегий
Основная проблема заключается в том, что ЛЮБОЙ сеанс gnome, не расположенный поверх реального физического / собственного дисплея, или теневое отображение (т. Е. Режим теней NXserver)- имеет ошибочные привилегии. Даже при запуске от имени root!
Есть какие-нибудь комментарии о способе устранения проблемного поведения для сеансов VNC/ без теней NX?
Я обновляю свой домашний Ubuntu безголовый сервер через долгое время, и у меня много проблем, которые я не помню, существовавших в предыдущих версиях Ubuntu.
Некоторые детали:
- Я начал с ubuntu-11.04-server-amd64.iso, а затем установил на него ubuntu-desktop.
- uname -a: Linux MiddleEarth 2.6.38-8-server # 42-Ubuntu SMP Понедельник, 11 апреля 03:49:04 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
- Аппаратное обеспечение - Intel D920, 2 ГБ оперативной памяти, GFX - это вентилятор без NVIDIA 6600, 3xGigabit, 1x100 Мбит, без монитора, клавиатуры, мыши.
Раунд 1
Пока я выполнял тестирование / настройку с подключенным монитором, все было превосходно, как когда я сидел перед этим монитором, так и когда VNC входил с моего настольного компьютера (в vino).
Без монитора, хотя проблемы возникают:
[Нерешенные / брошено]
Самая первая проблема заключалась в том, что Vino был упрям и не любил загружаться до / во время GDM. Но так как это безголовый система, я действительно не нужно, чтобы начать с X по умолчанию (т.е. изменить уровень инициализации) в любом случае, так что это немного спорно. Тем не менее, я отчетливо помню, как это было очень легко сделать в старой версии Ubuntu (я думаю, v9.04). И это работало нормально; Но не больше!? ... в любом случае, я полностью отбросил эту идею.
[Решаемые]
Тогда это был Unity/ Effects Messing VNC (Решил это путем обмана).
[Нерешенные]
Первоначально я переключился на NXserver, надеясь, что, возможно, следующие проблемы - это непростые проблемы или проблемы с vino, но не такая удача. (Примечание: прочитайте раунд2)
При удаленном подключении через VNC (или NXserver) моя учетная запись теряет возможность монтировать / отключать жесткие диски.
При удаленном подключении через VNC (или NXserver) моя учетная запись пользователя не может получить доступ к некоторым привилегированным параметрам конфигурации,
Некоторые примеры:
- ничего не может сделать (т.е. "добавить" пользователя или "дополнительные настройки") в "Система -> Администрирование -> Пользователи и группы".
- нельзя использовать "разблокировать" в "Система -> Администрирование -> Экран входа в систему".
- gparted не может получить никакой информации о файловых системах.
- и т. д. (различные другие диалоги admin/config также не работают должным образом)
Я могу только догадываться, что это связано с тем, что пользовательские привилегии не назначаются должным образом, когда фактическое физическое устройство мониторинга не подключено.
Причина "ПОЧЕМУ" это происходит в Ubuntu 11.04, когда он безголовый, ускользает от меня; Я не помню такого поведения в предыдущих версиях Ubuntu.
Обратите внимание, что проблема с монтированием жесткого диска не является проблемой для внутренних / статических жестких дисков (я просто добавляю их в fstab, поскольку они в любом случае являются статическими). Но на самом деле большая боль для съемных носителей USB.
По остальным проблемам я так и не разобрался, как исправить...
Я знаю, что вы думаете... Войдите в систему ssh, sudo su и полностью запустите vncserver под root?
Сюрприз Сюрприз! Интерфейс root также не работает: gparted не может получить информацию, пользователь и группы полностью недоступны (это поведение отличается от моего обычного пользователя). Довольно странно, что программа администрирования экрана входа в систему работает нормально.
Раунд 2
(ПРИМЕЧАНИЕ: я не знаю, оказало ли это влияние на результат. В какой-то момент между 1 и 2 туром я применил изменения, упомянутые в постах № 21 и № 24 в этой теме)
Обычные сеансы тесного соединения с NvServer имеют такое же поведение, НО...
[Частичное решение / Актуальная проблема все еще там]
В настройках подключения NXClient, когда я выбираю режим "тень" (тень прикрепляет вас к собственному экрану, т. Е. Затенение рабочего стола)...
Все отлично работает внутри этой сессии!
Одна вещь, которую я заметил, это то, что она сразу же спрашивает у меня пароль для ключей... может быть, весь этот беспорядок имеет какое-то отношение к системе ключей, которую использует gnome?
Но если я соединяюсь с обычным (не теневым) соединением NX или с обычным vnc, у меня возникают те же проблемы.
PS Было несколько дней между тем, когда я писал round 1 и round2 (я хранил его в текстовом файле локально). Я тестировал различные предложения, чтобы посмотреть, что сработает, поэтому я не знаю точно, имели ли значение изменения в VNC-устройстве xorg.conf или настройки nomodeset.
[РЕДАКТИРОВАТЬ 2011-06-10]
NXServer и GDM
На момент написания я настроил систему на автоматический вход в систему, поэтому теневое соединение просто работало. Когда я позже отключил это и перезагрузил систему, NX выдал ошибку, но с небольшим поиском в Google я нашел эту тему
Это раскомментирование и изменения, которые я сделал на моем /usr/NX/etc/server.cfg:
EnableAdministratorLogin = "1"
EnableSessionShadowing = "1"
EnableInteractiveSessionShadowing = "1"
EnableSessionShadowingAuthorization = "0"
EnableDesktopSharing = "1"
EnableInteractiveDesktopSharing = "1"
EnableFullDesktopSharing = "1"
EnableAdministratorDesktopSharing = "1"
EnableDesktopSharingAuthorization = "0"
EnableSystemDesktopSharingAuthorization = "0"
(Если бы это была более общедоступная сеть, то есть университет / большой офис, я бы, вероятно, использовал более строгие настройки, но они меня устраивают.)
После перезагрузки я вошел в систему с помощью nxclient для настройки рабочего стола "shadow" (родной дисплей) и получил GDM!:D
К сожалению, буфер обмена не работает в сеансе 'shadow' (он отлично работает с другими / обычными)
[РЕДАКТИРОВАТЬ 2011-06-11]
Наткнулся на Xvfb, но он имеет те же проблемы при использовании, как это:
Xvfb :2 -ac -screen 0 1280x1024x32 -pixdepths 8 24 2>&1 >/dev/null &
export DISPLAY=:2
gnome-session --session=2d-gnome 2>&1 >/dev/null &
x11vnc --display :2 --passwd blahblah
3 ответа
Я нашел виновника.
Проверено на новой установке, подтвердил, что это ошибка.
Вкратце проблема заключается в следующем: диалог аутентификации polkit будет отображаться на DISPLAY:0 вместо DISPLAY:1, где находится сеанс VNC/NX.
Обходной путь может заключаться в использовании libpam-keyring для автоматической аутентификации при входе в систему.
или... поцарапайте, что, вероятно, этого не произойдет, изменение всех параметров набора политики с 'auth_admin' на просто 'да', вероятно, решит проблему, и это, конечно, сделает политический вопрос полностью спорным... вздох
Я думаю, что это правильное поведение PolicyKit.
Политики для активных, неактивных и любых других пользователей различаются, поэтому, когда вы подключаетесь через NX, вы не активны (клиенты в активных сеансах на локальных консолях) или неактивны (клиенты в неактивных сеансах на локальных консолях), но вы получаете Любой пользователь.
Вы можете увидеть политику по умолчанию для Действия под управлением политики для разных типов пользователей с помощью команды
pkaction --verbose
Как видите, пользователь типа Any ограничен в сравнении с активными пользователями.
Чтобы исправить это, вы можете изменить политику по умолчанию. Далее предлагается сценарий awk для создания файла набора политик для размещения в нужном месте. Это скрипт:
#!/usr/bin/awk -f
/^[^ ]/ {
action = substr($0, 1, length($0) - 1)
}
/^ / {
if ($1 == "description:") {
$1 = ""
description = substr($0, 2)
if (description == "")
description = action
} else if ($1 == "implicit") {
if ($2 == "any:")
any = $3
else if ($2 == "inactive:")
inactive = $3
else if ($2 == "active:") {
active = $3
print ""
print "[" description "]"
print "Identity=unix-group:admin"
print "Action=" action
print "ResultActive=" active
print "ResultInactive=" active
print "ResultAny=" active
}
}
}
Предположим, вы называете это create-policy
, Сделайте его исполняемым, выполните скрипт с
pkaction --verbose | ./create-policy > local.pkla
затем переместите полученный файл:
sudo mv local.pkla /var/lib/polkit-1/localauthority/50-local.d/
Теперь вы должны иметь то же право, что и локальный пользователь сеанса.
Я столкнулся с подобной проблемой с NX и нашел следующую ветку:
Почему я получаю Unity вместо Classic при использовании NX?
Я отредактировал свой клиент Windows NX, чтобы на рабочем столе было установлено Unix & Custom, а затем настроил его для запуска следующей команды:
gnome-session --session=classic-gnome
И выбрал новый виртуальный рабочий стол.
После этого мне было хорошо идти.