ユーザーが自分のホームディレクトリ以外にアクセスしないようにするにはどうすればよいですか?
たとえば、/media/ntfs
の下にNTFSパーティションがマウントされているため、ユーザーがsshを介してログインすると、このパーティションに到達できます。ユーザーがホームディレクトリからcd
アウトできないようにするにはどうすればよいですか?
最初に要件を再評価します。解決しようとしている問題は何ですか? なぜユーザーがホームディレクトリを離れないようにしたいですか?むしろ、specific他のディレクトリ(他のユーザーのホームディレクトリなど)を調べてほしくありませんか?
ユーザーがホームディレクトリを離れることを防ぐことは非常に困難です。それも実際には少しばかげています(説明が続きます)。ユーザーが入力したくないディレクトリをユーザーが入力できないようにする方がはるかに簡単です。
まず、ユーザーにいわゆる制限付きシェルを提供できます。man rbash
を参照してください。これにより、他の場所ではcd
- ingできなくなりますが、そのシェル内のみです。ユーザーがvi
またはnano
(またはファイルを開くことができる他のプログラム)を起動すると、システム上のどこでもファイルを再び開くことができます。実際のところ、制限されたシェルは、たとえばcat /etc/passwd
。
次のステップはルートジェイルです。 コミュニティwiki および この質問 の詳細情報。ルートジェイルは、ユーザーが意図的にそこに置いたファイルとコマンド以外には何もアクセスできない壁に囲まれた庭園内のユーザーをロックしますが、ルートジェイルは信頼できないソフトウェアを隔離することを目的としていますユーザーではなく。特に、これらは昇格された特権で実行する必要があるソフトウェア用です。したがって、rootjailです。
一方、ユーザーはtrusted:昇格した特権なしで認証およびする必要がありました。したがって、所有していないファイルを変更したり、表示してはならないものを表示したりしないようにするには、ファイルのアクセス許可で十分です。ユーザーがファイルの内容を読み取れないようにするには、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
にアクセスできますが、ユーザーはそのコンテンツ(他のユーザーのホームフォルダー、つまりユーザー名)を読み取ることができません。