Когда машина без головы, пользователь больше не имеет привилегий

Основная проблема заключается в том, что ЛЮБОЙ сеанс 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) моя учетная запись теряет возможность монтировать / отключать жесткие диски.

Снимок экрана: невозможно смонтировать 750GB_RAID1

При удаленном подключении через VNC (или NXserver) моя учетная запись пользователя не может получить доступ к некоторым привилегированным параметрам конфигурации,
Некоторые примеры:

  • ничего не может сделать (т.е. "добавить" пользователя или "дополнительные настройки") в "Система -> Администрирование -> Пользователи и группы".
  • нельзя использовать "разблокировать" в "Система -> Администрирование -> Экран входа в систему".
  • gparted не может получить никакой информации о файловых системах.
  • и т. д. (различные другие диалоги admin/config также не работают должным образом)

Я могу только догадываться, что это связано с тем, что пользовательские привилегии не назначаются должным образом, когда фактическое физическое устройство мониторинга не подключено.
Причина "ПОЧЕМУ" это происходит в Ubuntu 11.04, когда он безголовый, ускользает от меня; Я не помню такого поведения в предыдущих версиях Ubuntu.

Обратите внимание, что проблема с монтированием жесткого диска не является проблемой для внутренних / статических жестких дисков (я просто добавляю их в fstab, поскольку они в любом случае являются статическими). Но на самом деле большая боль для съемных носителей USB.

По остальным проблемам я так и не разобрался, как исправить...
Я знаю, что вы думаете... Войдите в систему ssh, sudo su и полностью запустите vncserver под root?

Снимок экрана: (как root) gparted не может найти информацию о fs

Сюрприз Сюрприз! Интерфейс 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

И выбрал новый виртуальный рабочий стол.
После этого мне было хорошо идти.

Другие вопросы по тегам