ユーザによるデスクトップ環境の変更を回避する方法

個人的にはすべてのユーザに各自のシステムのカスタマイズを許したいのだが、標準の設定に変更を加えられるのを嫌がる管理者もいるだろう。そうした制限を行うには、基本的に2つの方法がある。1つは、環境を変更するツールにアクセスできないようにすること、もう1つは、関連する設定ファイルの所有者およびパーミッションを変え、こうしたファイルを一般ユーザが編集できないようにすることだ。

本稿は、最近出版された書籍『 Linux Annoyances for Geeks (Linuxギークの困惑)』(ISBN 0-596-00801-5, Copyright 2006 O’Reilly Media, Inc. All rights reserved.)からの抜粋です。

KDEの変更を無効にする

KDEデスクトップの設定は、デフォルトと個人の両方の設定ファイルによって決まる。当然、カスタマイズしたい項目によってなすべきことは変わってくる。ここでは、あなたが管理するネットワーク内の数名またはすべてのユーザに標準のデスクトップを利用してもらいたいとしよう。

次の表に示すように、デフォルト設定ファイルは、ディストリビューションによって異なる。

KDEデフォルト設定用ディレクトリ

ディストリビューション

KDEデフォルト設定用ディレクトリ

Red Hat/Fedora

/usr/share/config

SUSE

/opt/kde3/share/config

Debian

/etc/kde3

個々の設定ファイルは、各ユーザのホームディレクトリ下の~/.kde/share/configディレクトリに置かれている。特定のユーザに対して一度も設定のカスタマイズを行っていなければ、そのユーザ固有の設定ファイルはまだ存在しないはずだ。

あるユーザの~/.kde/ディレクトリに必要な変更を加えた後は、その内容をほかのユーザのホームディレクトリにコピーできる。また、変更内容を/etc/skelディレクトリにコピーすることもできる。このディレクトリは、多くの場合、新しいユーザのホームディレクトリに標準の設定ファイルを置くために使われる。

厄介なユーザによる設定の変更を防ぐための鍵になるのが、イミュータブル(不変)フラグだ。KDEの設定ファイルでは、[$i]を使ってこのフラグを指定できる。私の場合、標準の設定にロックをかけるために、それぞれのスタンザの最初にこのフラグを追加している。たとえば、次のようになる。

  [Desktop0][$i]  

どんな場合も、変更内容は次回のKDEデスクトップ環境へのログイン時までは反映されない。

KDEに対する操作を制限する

KDEデスクトップ環境には、共用端末のための共有場所であるキオスクに適した数々のオプションが存在する。共用端末の管理者なら、おそらくこの端末のデスクトップ設定を固定しておきたいと考えるだろう。オフィス内のワークステーション側でも、これと同じ制限の一部が取り入れられる。

先ほどは、設定を変更できないようにする方法を説明した。コマンドライン・インタフェースの起動やrootユーザとしての実行、または背景の変更といった操作を制限することもできる。そのためには、kdeglobalsという設定ファイルを開き、スタンザが次のタイトルで始まるようにすればよい。

  [KDE Action Restrictions][$i]  

ワークステーション上で特定のユーザにコマンドライン・インタフェースを使わせないようにしたい場合は、このスタンザで次のディレクティブを指定する。

  shell_access=false  

デフォルトでは、Alt-F2キーで開く「Run Application」ウィンドウからもユーザはアプリケーションを起動できる。このウィンドウにアクセスできないようにしたければ、次のディレクティブを追加する。

  run_command=false  

また、次のディレクティブを用いると、ユーザは、rootアカウントを必要とするKDEのユーティリティが使えなくなる。

  user/root=false  

しかし、ユーザは、rootアカウントがなくてもKDEデスクトップの多くの項目をカスタマイズできる。そこで、次の記述で始まる別のスタンザで、KDE Control Center内の各種モジュールへのアクセスを制限することも可能だ。

  [KDE Control Module Restrictions][$i]  

これで、指定したモジュールへのアクセスを制限できる。たとえば、ユーザが各自のKDEデスクトップの背景を変更できないようにするには、このスタンザに次のディレクティブを追加する。

  kde-background.desktop=false  

また、スクリーンセーバーを変更できないようにするには、次のディレクティブを含める。

  kde-screensaver.desktop=false  

別のモジュールへのアクセスを制限したい場合は、まず次のコマンドによる出力結果からそのモジュール名を調べる。

  kcmshell --list  

次に、選択したモジュールへのアクセスを制限するために、次のディレクティブにそのモジュールの名前を代入すればよい。

  kde-module name.desktop=false  

GNOMEの変更を無効にする

標準のGNOMEデスクトップ環境に対する鍵になっているのがGConfシステムだ。Microsoft Windowsに慣れた読者の方々であれば、GConfがレジストリエディタに似ていることに気付くかもしれない。GConfエディタの起動は、gconf-editorコマンドを使って行う(普通は/usr/binディレクトリ内にあるが、SUSEの場合は/opt/gnome/binディレクトリ内にある)。GNOMEには3種類の設定が存在する。各ユーザが目にしている環境は、これらの設定が組み合わされた結果である。

必須(Mandatory)

一般ユーザは、GConfシステム、または/etc/gconf/gconf.xml.mandatoryディレクトリ内の対応する設定ファイルへのアクセス権を持っていない限り、必須の設定を変更できない (SUSEの場合、設定ファイルは/etc/opt/gnome/gconf/gconf.xml.mandatoryディレクトリにある)。必須の設定は、デフォルトの設定よりも優先される。

デフォルト(Default)

一般ユーザに提示される標準のデスクトップ環境は、デフォルトおよび必須の各設定を合わせた内容によって定義される。ただし、デフォルトの設定は変更することができる。対応する設定ファイルは、/etc/gconf/gconf.xml.defaultディレクトリにある (SUSEの場合は、/etc/opt/gnome/gconf/gconf.xml.defaultディレクトリ)。

ユーザ(User)

ユーザに特有のカスタマイズ可能な設定は、各ユーザのホームディレクトリ下の~/.gconfに保存されている。

システム全体に及ぶGNOMEデスクトップの設定

GNOMEデスクトップ環境に関するシステム全体の設定を行うには、rootユーザとしてGConfエディタを開く。sudoコマンドを使うだけでこの操作が可能なディストリビューションもある。たとえば、Debian Linuxでは、KDEデスクトップ環境にログインした状態でも、次のコマンドを使ってGConfを開くことができる。

  sudo gconf-editor  

なかには、rootでGConfを立ち上げようとするとエラーメッセージを返してくるディストリビューションもある。その場合は、一般ユーザとしてsudo gconf-editorコマンドを実行する。なお、一般ユーザがこのsudoコマンドを使うには、/etc/sudoersファイルの該当ユーザ部分を設定しておく必要がある。このファイルはvisudoコマンドを使って編集できる。

GNOMEのメニュー項目を無効にする

ときには、ユーザによる標準のデスクトップ環境の変更の一番簡単な防止策が、GUIのメニュー項目の無効化であることもある。つまり、管理のための道具をユーザに見せなければ、使ってみたいという気も起こらないだろう、というわけだ。

デフォルトのGNOMEメインメニューのファイルは、/usr/share/applicationsディレクトリに置かれている。また、ユーザ固有のメニューファイルは、各ユーザのホームディレクトリ下の~/.config/menusに存在する。GNOMEのメニュー項目を管理する方法は直接的だ。たとえば、SUSE LinuxマシンでGNOMEデスクトップ環境を使っていて、GNOMEのメニューから設定ツールYaSTへのアクセスを無効にしたければ、/usr/share/applicationsディレクトリにあるYast.desktopファイルを(削除せずに)ほかの場所に移動させればよい (私は、メニューオプションを元に戻したくなった場合に備えて、移動先を自分のホームディレクトリにしている)。

現時点でGNOMEデスクトップ環境にいるなら、メニューが変わったか、確認してみてほしい。ディストリビューションがRed HatやFedora、Debianであれば、この変更はすぐに反映される。SUSE Linuxでは、次回のGNOME起動まで変更は反映されない。

こうした変更は、ネットワーク上のほかのデスクトップマシンにも適用できる。ただし、GNOMEデスクトップからメニュー項目を取り除くなら、それぞれの対象システムの/usr/share/applicationsディレクトリから該当する項目を取り除く必要があることを忘れないように。

もっと詳しく知りたければ、KDE.orgではKDEデスクトップ環境の設定に関するすばらしいディスカッションが行われており、GentooのWikiにはGNOMEデスクトップ環境の設定についての優れたガイドが用意されているので、それらを参考にしてほしい。また、Red Hat Desktop Deployment Guideを参照するのもよい。

NewsForge.com 原文