web-dev-qa-db-ja.com

ユーザーが自分のホームディレクトリ以外にアクセスしないようにするにはどうすればよいですか?

ユーザーが自分のホームディレクトリ以外にアクセスしないようにするにはどうすればよいですか?

たとえば、/media/ntfsの下にNTFSパーティションがマウントされているため、ユーザーがsshを介してログインすると、このパーティションに到達できます。ユーザーがホームディレクトリからcdアウトできないようにするにはどうすればよいですか?

21
OHLÁLÁ

最初に要件を再評価します。解決しようとしている問題は何ですか? なぜユーザーがホームディレクトリを離れないようにしたいですか?むしろ、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への書き込みを必要とします。そのため、ユーザーをホームディレクトリ内に制限する場合は、多くをコピーする必要があります。実際、ほとんどのベースファイルシステムは、/にある既に持っているものです。

19
zwets

ユーザー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を除くサブディレクトリの下のコンテンツは表示できません。

6
Sam

他のディレクトリ、特に他のユーザーのホームディレクトリへのアクセスを制限することに加えて、ユーザーにll /homeやシステム上の他のユーザーの名前を表示させたくありませんでした。

これを防ぐには、rootとしてchmod 701 /homeを実行します。これにより、/homeディレクトリ自体がもちろんルートに対して「読み取り/書き込み/実行」されますが、他のすべてのユーザーに対してのみ「実行」されます。 /homeは引き続きcdにアクセスできますが、ユーザーはそのコンテンツ(他のユーザーのホームフォルダー、つまりユーザー名)を読み取ることができません。

1
Willman