回答:
最初に要件を再評価します。解決しようとしている問題は何ですか?ユーザーがホームディレクトリを離れないようにしたいのはなぜですか?むしろ、他の特定のディレクトリ(他のユーザーのホームディレクトリなど)を調べてほしくありませんか?
ユーザーがホームディレクトリを離れることを防ぐことは非常に困難です。それも実際には少しばかげています(説明が続きます)。ユーザーが入力したくないディレクトリをユーザーが入力できないようにする方がはるかに簡単です。
まず、ユーザーにいわゆる制限付きシェルを提供できますman rbash
。これによりcd
、他の場所ではなく、そのシェル内でのみ-ingができなくなります。ユーザーが起動したvi
場合nano
(またはファイルを開くことができる他のプログラム)、システム上の任意の場所で再びファイルを開くことができます。実際のところ、制限されたシェルはを防ぎませんcat /etc/passwd
。
次のステップはルートジェイルです。詳細はコミュニティのwikiとで、この質問。ルートジェイルは、ユーザーが意図的にそこに置いたファイルとコマンド以外にアクセスできない壁に囲まれた庭園内のユーザーをロックしますが、ルートジェイルはユーザーではなく信頼できないソフトウェアを隔離することを目的としています。特に、それらは昇格された特権で実行する必要があるソフトウェア用です-したがって、ルート刑務所。
一方、ユーザーは信頼されており、昇格した権限なしで認証および実行する必要があります。したがって、所有していないファイルを変更したり、表示してはならないものを表示したりしないようにするには、ファイルのアクセス許可で十分です。ユーザーがファイルのコンテンツを読み取れないようにするには、を使用してその世界の読みやすさを削除しますchmod o-r FILE
。ユーザーがディレクトリにアクセスできないようにするには、を使用して世界中からアクセスできないようにしchmod o-rwx DIR
ます。
ただし、正当な理由により、世界の読みやすさがデフォルトです。ユーザーは、実際にはファイルシステムにあるもののほとんどを必要とします。外部に秘密が存在するという理由だけで、自宅でユーザーをロックしないでください。
ユーザーをホームディレクトリにロックするのが少しばかげている理由
役に立つことをするには、ユーザーはコマンドとアプリケーションにアクセスする必要があります。これらのようなディレクトリにある/bin
と/usr/bin
、あなたはそこから自分のホームディレクトリに、彼らが必要とするすべてのコマンドをコピーしない限り、ユーザーはアクセスが必要になります/bin
し、を/usr/bin
。しかし、それは始まりにすぎません。アプリケーションは、からライブラリ必要がある/usr/lib
と/lib
、しているシステムリソースへ順番に必要へのアクセス/dev
、および内の構成ファイルにを/etc
して/usr/share
。
これは単なる読み取り専用の部分でした。また、アプリケーションは書き込みを必要/tmp
とし、頻繁/var
に書き込みます。そのため、ユーザーをホームディレクトリ内に制限する場合は、多くをコピーする必要があります。実際、ほぼすべてのベースファイルシステムです/
。
ユーザーsam
に/var/xyz
のみアクセスを提供し、内部の他のフォルダーのコンテンツのリストをブロックする必要がありました/var/
次の一連のコマンドを使用しました。
setfacl -R -m user:sam:--- /var/
setfacl -m user:sam:rx /var/
setfacl -R -m user:sam:rwx /var/xyz/
そのため、ユーザーは下にリストされているディレクトリを表示できますが/var/
、サブディレクトリの下のコンテンツは表示できません/var/xyz
。
他のディレクトリ、特に他のユーザーのホームディレクトリへのアクセスを制限することに加えてll /home
、システム上の他のユーザーの名前をユーザーに見せたり見たりしたくありませんでした。
これを防ぐには、rootとして実行しchmod 701 /home
ます。これにより、/home
ディレクトリ自体はもちろんルートに対して「読み取り/書き込み/実行」されますが、他のすべてのユーザーに対してのみ「実行」されます。/home
は引き続きアクセスできますcd
が、ユーザーはそのコンテンツ(他のユーザーのホームフォルダー、つまりユーザー名)を読み取ることができません。