web-dev-qa-db-ja.com

マシンがヘッドレスの場合、ユーザーは特権を失います

中心的な問題は次のとおりです:ANY gnomeセッションが実際の物理/ネイティブディスプレイの上に座っていない- -またはそのディスプレイのシャドーイング(つまり、NXserverのシャドーモード)-に権限がありません。ルートとして実行する場合でも!

VNC /非シャドウNXセッションの問題のある動作を修正する方法に関するコメントはありますか?


久しぶりにホームのUbuntuヘッドレスサーバーをアップグレードしていますが、以前のUbuntuバージョンには存在しなかった多くの問題があります。

いくつかの詳細:

  • 私はubuntu-11.04-server-AMD64.isoから始め、その上にubuntu-desktopをインストールしました。
  • uname -a:Linux MiddleEarth 2.6.38-8-server#42-Ubuntu SMP Mon Apr 11 03:49:04 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
  • ハードウェアはIntel D920、2GB Ram、GFXは一部のファンレスnvidia 6600、3xGigabit、1x100mbit、モニターなし、キーボード、マウスが接続されています。

ラウンド1

attached モニターでテスト/セットアップを行っている間、そのモニターの前に座っているときも、デスクトップマシンから(Vinoに)VNCで接続しているときも、すべてが桃色でした。

モニターなしでは問題が発生しますが:

[未解決/ドロップ]

最初の問題は、vino が頑固で、GDMの前/中にロードしたくないということでした。しかし、これはヘッドレスシステムであるため、デフォルトでXから開始する(つまり、初期化レベルを変更する)必要はまったくありません。ただし、これは古いubuntuバージョン(v9.04だと思う)で非常に 簡単に実行できる であることをはっきりと覚えています。そしてそれはうまくいきました。もうそうじゃない!? ...とにかく、私はそのアイデアを完全に落としました。

[解決済み]

次に、 Unity/effects messing VNC (それを解決した 不正行為によって )。

[未解決]

当初、NXserverに切り替えて、次の問題がtightvncまたはvinoの問題ではないかと期待していましたが、そのような運はありませんでした。 (注:ラウンド2を読む)

VNC(またはNXserver)経由でリモート接続すると、ユーザーアカウントでHDDのマウント/アンマウントができなくなります。

Screenshot: Unable to mount 750GB_RAID1

VNC(またはNXserver)を介してリモート接続する場合、ユーザーアカウントは一部の特権構成オプションにアクセスできません。
いくつかの例:

  • 「システム->管理->ユーザーとグループ」で何もできません(つまり、「ユーザーを追加」または「詳細設定」)。
  • 「システム->管理->ログイン画面」で「ロック解除」を使用できません。
  • gpartedは、ファイルシステムに関する情報の取得に失敗します。
  • など(他のさまざまなadmin/configダイアログも適切に機能しません)

これは、実際の物理的なモニターデバイスが接続されていない場合に、ユーザー特権が適切に割り当てられていないことに関係があると推測できます。
「なぜ」これがubuntu 11.04で発生するのか、それがヘッドレスの場合、私を逃れます。以前のバージョンのubuntuでは、この動作を覚えていません。

HDDのマウントの問題は、内部/静的hddの問題ではありません(とにかく静的なので、fstabに追加するだけです)。しかし、取り外し可能なUSBメディアには本当に大きな苦痛があります。

残りの問題、私は修正する方法を理解していません...
私はあなたが何を考えているか知っています... ssh、sudo suにログインし、rootでvncserverを完全に実行しますか?

Screenshot: (as root) gparted fails to find fs info

サプライズサプライズ! rootのGUIも壊れています。gpartedは情報を取得できず、user&groupsは完全にグレー表示されます(これは通常のユーザーとは異なる動作です)。奇妙なことに、ログイン画面の管理プログラムはうまく機能しているようです。


ラウンド2

(注:これが結果に影響を与えたかどうかはわかりません。ラウンド1とラウンド2の間のある時点で、 このスレッド の投稿#21と#24で述べた変更を適用しました_)

通常のtightvnc/NXServerセッションは同じ動作をしますが、...

[部分的な解決策/実際の問題はまだ残っています]

NXClient接続設定で、「シャドウ」モードを選択すると(シャドウがネイティブディスプレイ、つまりデスクトップシャドウイングにアタッチします)...

このセッション内ではすべてが完璧に機能します!

私が気づいたことの1つは、すぐにキーリングのパスワードを要求されることです...おそらく、混乱全体がgnomeが使用するキーリングシステムと関係があるのでしょうか?

ただし、通常の(シャドウではない)NX接続、または通常のvncで接続すると、同じ問題が発生します。

追伸round1とround2を書いたとき、その間に2日間ありました(ローカルでtxtファイルに保管していました)。さまざまなサジェスチョンをテストして、何が機能するかを確認していました。そのため、そのxorg.conf VNCデバイスの編集またはnomodeset設定が違いを生むかどうかはわかりません。

[編集2011-06-10]

NXServerおよびGDM

この記事の執筆時点では、システムを自動ログインに設定していました。そのため、シャドウ接続は単に機能していました。後でそれを無効にしてシステムを再起動すると、NXがエラーを出しましたが、少しグーグルで このスレッド が見つかりました

これらは、/ 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を使用してデスクトップの「シャドウ」(ネイティブディスプレイ)設定にログインし、GDMを取得しました! :D

残念ながら、クリップボードは「シャドウ」セッションでは機能しません(他の/通常のセッションでは正常に機能します)

[編集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
12
DM8

犯人を見つけました。
新規インストールでテストし、バグであることを確認しました。

バグレポート を提出しました

要するに、問題は次のとおりです。polkit認証ダイアログは、VNC/NXセッションがあるDISPLAY:1ではなく、DISPLAY:0に表示されます。

回避策は、ログイン時にlibpam-keyringを使用して自動認証することです
または...スクラッチ、おそらくそれはしないだろう、すべてのポリシーキット設定を「auth_admin」から「yes」に変更するとおそらく問題が修正され、もちろんポリシーキットが完全に無効になる...ため息

5
DM8

これが正しいPolicyKitの動作だと思います。

ActiveInactive、およびAny他のユーザーのポリシーは異なるため、 NX経由で接続している場合、Active(ローカルコンソールのアクティブセッションのクライアント)でも、Inactive(非アクティブのクライアントでもない)ローカルコンソールでのセッション)、ただし、結果はAnyユーザーになります。

次のコマンドを使用して、さまざまなタイプのユーザーのポリシー制御下でアクションのデフォルトポリシーを表示できます。

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/

これで、ローカルセッションユーザーであったのと同じ権利が得られます。

2
enzotib

NXで同様の問題が発生していて、次のスレッドが見つかりました。

NXを使用しているときにClassicではなくUnityを取得する理由は?

デスクトップがUnixおよびカスタムに設定されるようにWindows NXクライアントを編集し、次のコマンドを実行するように設定しました。

gnome-session --session=classic-gnome

そして選択新しい仮想デスクトップ
その後、私は行ってよかったです。

0
David B