この質問は、ゲストアカウントに関する 別のより一般的な質問 に関連しています。これは非常に具体的です。
セットアップ:古いDell Latitude E6410が多くあり、16.04を実行する教室の設定で使用する新しいDell Latitude 5450がいくつかあります。多くの学生は、接続されたUSBデバイスを介したデータ分析およびデータ取得のさまざまな目的でこれらのマシンを使用しています。
ゲストアカウントは、ログインとログインの間にマシンをきれいに消去するのに役立ちます。ゲストアカウントの追加機能は、マシンをオンにして「忘れる」と、マシンが自動的にゲストアカウントにログインし、ブラウザウィンドウを起動することです。問題は、ゲストアカウントにUSBポートにアクセスする権限がないことです。
簡単な解決策は、新しいゲストアカウント(guest-abf2など)をdialoutおよびplugdevグループに追加して、生徒が接続されたデバイスとサムドライブを使用できるようにすることです。何かのようなもの:
moduser -a -G plugdev,dialout $USER
ログインプロセスの十分早い段階でスクリプト内で動作します。
これは私が今まで試したことです:
auto.sh
およびprefs.sh
ディレクトリの/etc/guest-session
のいずれかに配置します。どちらも動作しません。 prefs.sh
はユーザーコンテキストで実行され、auto.sh
はルートコンテキストで実行されるはずですが、新しく作成されたゲストアカウントを2つのグループに追加するには遅すぎますsetup.sh
と呼ばれるフックがありましたが、このフックはもう動作しません。正確なタイミングはわかりませんが、lightdmが更新されたため、起動スクリプトprefs.shの動作が広告どおりに動作するようになりました。 prefs.shというファイルを作成することにより、/ etc/guest-session次の行で:
moduser $USER -a -G plugdev,dialout
学生がゲストアカウントの新しいUSBデバイスにアクセスできるようにするために必要なものを正確に達成しました。
ゲストアカウントは、シェルスクリプト/usr/sbin/guest-account
によって作成されます。
関数add_account
の最後で、ユーザーを作成するために seradd を呼び出します。ここに-G plugdev,dialout
オプションを追加すると、うまくいくはずです。
dpkg-divert を使用して、更新されたパッケージが変更されたスクリプトを上書きしないようにします。
usermod
ではなく、 'moduser
'を使用してください。
...したがって、起動スクリプトprefs.shの動作は、広告どおりに機能します。/etc/guest-session にprefs.shというファイルを作成し、次の行を使用します。
moduser $USER -a -G plugdev,dialout
このコマンドは、prefs.sh
に含めると、ゲストセッションをクラッシュさせ、ロードしません。 '`moduser'は有効なコマンドではありません。代わりに次の行を使用してください。
usermod -a -G plugdev,dialout $USER
auto.sh
はルートコンテキストで実行されたことはありません。 prefs.sh
は、/usr/sbin/guest-account
、しかしコードはリファクタリングされ、16.04 prefs.sh
のソースは/usr/share/lightdm/guest-session/setup.sh
これはルートとして実行されません。
この行動の変化が意図的なものかどうかはわかりません。そうでない場合、変更を提案する理由があるかもしれません。
ゲストセッションがUSBポートにアクセスできないと言うときの意味がわかりません。少なくともUSBスティックを使用できることを知っています。 AppArmorを介して使用が禁止されている他のデバイスがある可能性があります。
編集:
バグレポート を提出しました。承認された場合は、prefs.sh
以前のようにゲストをグループに割り当てます。
USBスティックに関しては、いくつかのテストを行い、スティックのフォーマット方法が重要であることがわかりました。 ext4でフォーマットされたスティックでは、読み取りも書き込みもできませんでしたが、fat16としてフォーマットすると正常に動作します。