ユーザーを特定のデスクトップ環境に制限するにはどうすればよいですか?


8

Ubuntu Precise 12.04の多かれ少なかれ標準的なインストールを実行しており、Unityデスクトップ環境で日常的なタスクを実行することに非常に満足しています。

ただし、再生に関しては、LXDEの方がはるかに快適です(バックグラウンド:現在の状態では、Unityは、たとえばUnity 2DやLXDEよりもはるかに低いフレームレートをアーカイブします。これは既知のバグであり、作業中です)。

そのためにゲーマーユーザープロファイルを作成しましたが、LXDEデスクトップ環境のみを使用するように制限したいと思います。

これについてさらに詳しく説明します。ブート後にログインするように求められたとき、LXDEだけをゲーマーユーザープロファイルのオプションとしてログイン画面に表示したいのですが、標準ユーザープロファイルには、使用するデスクトップ環境を選択するオプションがまだあります。

役立つかもしれない洞察を事前にありがとう!


次回のデフォルトとして、最後の選択を維持する必要があります。これはしていませんか?デフォルトで正しいデスクトップ環境になっている場合、他のオプションが不要な理由はありますか?
reverendj1 2012

質問した後、私もこの動作に気づきました。基本的に、それはすでに私が欲しかったことであり、私が尋ねた理由です。それを除けば、私はまだ解決策に興味があります-グループと権限についてもっと学ぶ必要があります '')これが非常に大きな問題であるように思われ、とても驚いています。達成することは不可能ですか?
FuzzyQ 2012

回答:


4

さて、LightDM(ログインマネージャー)についての私の理解から、特定のユーザーのデスクトップ環境を制限することはサポートされていないようです。それはオール・オア・ナッシング取引です。デフォルトでは、ユーザーがデスクトップ環境を選択すると、それがデフォルトのデスクトップ環境になります。次回ログインするときは、別のアカウントを選択しない限り、デフォルトでログインします。

ただし、ユーザーがこれを変更できないようにすることもできます。このユーザーは引き続き別のデスクトップ環境を選択できますが、選択しても、デフォルトは変更されません。人が変更するのではないかと心配していなければ、これが最も安全な方法だと思います。あなたがしなければならないのはそれらの.dmrcファイルを編集することです(彼らのホームディレクトリ、すなわち/ home / userにあります)。ここにデフォルトのセッションが保存されます。Sessionそのファイルの変数を必要なものに変更します。つまりubuntu、デフォルトのUnity DE、ubuntu-2dUnity 2D、およびLXDELXDEです。別のDEでログインしても変更されないようにするには、単純に不変(変更不可)にします。

sudo chattr +i /home/user/.dmrc

不変フラグを削除しない限り、誰もそのファイル(ルートおよびその他のプログラムを含む)を変更できなくなります。

sudo chattr -i /home/user/.dmrc

このユーザーが別のDEでログインすることを絶対に望まない場合、私はこれを達成するために本当にハックな方法(つまり、これを自己の責任において行う)を理解しました。私はちょっと退屈で、これは試すのが楽しいように思えました。LightDMが見ることができるさまざまなDEはすべてファイル/usr/share/xsessionsとして保持され.desktopます。参考までに、ログイン画面に表示したくないものはすべて削除できます(ただし、すべてのユーザーから削除されます)。これらのいずれかを開くと、かなり簡単です。デスクトップ上のすべてのショートカットと同じように、これらは基本的なデスクトップランチャーファイルです。それぞれが含まれていますExecこれは、ログイン画面でDEを選択したときに実行される行(つまり、どのDEが起動されるか)です。これを利用して、ログインしているユーザーを確認します。ユーザーが制限付きユーザーの場合は、特定のDEを使用するように強制します。

まず、の各.desktopファイルについて/usr/share/xsessions/、でスクリプトを作成する必要があります/usr/local/bin。私の例ubuntu.desktopでは、Unity DEであるに対してこれを行う方法を示し、LXDEをDEとして使用して、制限付きユーザー(restricteduser)に強制的に使用させます。LXDE.desktopを見ると、Execコマンドが/usr/bin/startlxdeあり、コマンドがないことがわかりTryExecます。開くubuntu.desktopと、Execコマンドがgnome-session --session=ubuntuで、TryExecコマンドがであることがわかりますunityTryExecコマンドは、それがどのように聞こえるだけです。Execコマンドを実行した後、コマンドを実行しようTryExecとしますが、失敗してもクラッシュしません。

次に、.desktopファイルから取得したコマンドを使用して、スクリプトを作成します。それらをに入れます/usr/share/bin。2つを作成する必要があります。1つはにExec、もう1つはに作成しTryExecます。次のようにします。

ubuntude.sh

#!/bin/bash

if [ `/usr/bin/whoami` = "restricteduser" ] ; then
   /usr/bin/startlxde
else
   gnome-session --session=ubuntu
fi

ubuntudetry.sh

#!/bin/bash

if [ `/usr/bin/whoami` != "restricteduser" ] ; then
   unity
fi

ログインしているユーザーが制限ユーザーかどうかをテストし、適切なDEを起動します。次に、それらが実行可能であることを確認する必要があります。

sudo chmod +x /usr/local/bin/ubuntude.sh
sudo chmod +x /usr/local/bin/ubuntudetry.sh

ここubuntu.desktopで、実際のDEではなくスクリプトを呼び出すように変更する必要があります。ファイルのExecおよびTryExec行をコメント化し、次のように置き換えます。

Exec=/usr/local/bin/ubuntude.sh
TryExec=/usr/local/bin/ubuntudetry.sh

他のDEについても同じ手順を繰り返してください。何がある場合はTryExecDEのために、その後、LXDEは使用しないように、どちらかそれのためdetry.shスクリプトを作成する必要はありませんTryExec。明らかにこれは少しハックです。ファイルを編集する前にバックアップを作成する必要がありますが、ユーザーが正しいDEにログインしていることを確認する必要がある場合は問題なく機能します。


1
まず第一に、あなたの精巧な答えをありがとう!これはかなり賢いアプローチです。しかし、最後の部分が正しければ、制限されたユーザーはlightdmでどのオプションを選択しても、強制的に lxdeにログインすることになります。しかし、それでも/ usr / share / xsessions /にリストされている他のすべてのオプションが表示されますが、これは正しいですか?この場合は、オプション1を使用します。デスクトップ環境セッションをセットアップするユーザー固有のオプションがないのは残念です。ユーザーフォルダーから不要なxsessionを削除することは、便利で簡単です。
FuzzyQ 2012

1
どういたしまして。私はそれをある種の挑戦と捉え、LightDMをさらに掘り下げるつもりでした。そうです、ユーザーはLXDEを使用せざるを得ないので、他のすべてのオプションが表示されます。問題はありません。私が言ったように、.dmrcファイルはユーザー固有のデフォルトを維持するためにありますが、そうです、ユーザーに特定のDEのみを使用するように強制したり、表示/使用できるものを制限したりする組み込みの方法はありません。私が提示したハックがなければ、それは誰でも誰でもありません。
reverendj1 2012

1

Debian SqueezeとWheezyでは、1行で.xsessionrcを追加することもできます

STARTUP = XXXをエクスポート

(XXXは強制されたセッションスクリプトではなく、上記のExec-Lineを参照)ユーザーのホームディレクトリで、ユーザーが選択した内容に関係なく特定のセッションタイプを強制します。

Ubuntuでも動作するはずです。

(/etc/X11/Xsession.d/40x11-common_xsessionrcと50x11-common_determine-startupを調べて、これが機能する理由を確認してください)


0

reverendj1からの回答がうまくいきませんでした。理由としては、Exec =で指定した値が直接実行されず、/ etc / X11 / Xsessionに引数として渡されたことが考えられます。(ソース:https : //askubuntu.com/a/857420/873016

問題の別の解決策:
1.すべての/ usr / share / xsessions / .desktopファイルをバックアップします
2.すべての/ usr / share / xsessions /
.desktopファイルを削除します
3. /usr/share/xsessions/default.desktopのみを作成します

[Desktop Entry]
Name=Default
Comment=This session is the default session. It will look up the user specific desktop session in ~/.xsession.
Exec=default

「デフォルト」はXsessionのキーワードであり、ユーザーのディレクトリで特定のセッションを検索します。
4.次に、すべてのユーザー名に対して/home/{username}/.xsessionファイルを作成します。「キオスクのような」アプリの場合、これは次のようになります。

#!/bin/bash

cd /home/{yourUsername}/ && ./startApplication.py
logout

たとえば、別のユーザーが本格的なデスクトップマネージャーを起動できるようにする必要がある場合、次のようになります。

#!/bin/bash

exec icewm-session
  1. 〜/ .xsessionファイルが実行可能であることを確認してください
sudo chmod +x ~/.xsession

ubuntu 16.04でlightdmを使用してテスト済み

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.