ユーザーができることを制御する最も簡単で効率的な方法の 1 つは lshell です。
<ブロック引用>lshell は Python でコーディングされたシェルであり、ユーザーの環境を限られたコマンド セットに制限したり、SSH 経由の任意のコマンド (SCP、SFTP、rsync など) を有効/無効にしたり、ユーザーのコマンドをログに記録したり、タイミング制限を実装したりできます。もっと。
誰かにシェル アカウントを与えると、誰でも読めるすべてのファイルを見ることができます。これには /etc
の多くのファイルが含まれます /etc/passwd
を含む、システムが機能するために必要な (ユーザー名は含まれますが、パスワードは含まれません)。
ユーザーが chroot 内でのみログインできるようにすると、chroot 外のファイルを見ることができなくなります。つまり、十分な数のプログラム、ライブラリなどを chroot 内に配置する必要があります — ユーザーがアクセスする必要のあるすべてのものと、これらのすべての依存関係も同様です。
chroot はファイルへの直接アクセスのみを保護することに注意してください。ユーザーは、すべてのユーザーの実行中のプロセスの名前や引数など、さまざまなことを詮索できます (SELinux などの追加の保護を設定しない限り)。ユーザーが多くのことをする必要がない場合は、制限付きシェルでより厳しい制限 (ユーザーが独自の実行可能ファイルを作成できないようにすることを含む) を設定できますが、制限付きシェルの権利を設定するのは非常に難しいので、私はしません。お勧めしません。
現在、仮想マシンは非常に安価です。多くの無料の実装 (ユーザー モード Linux、VirtualBox、VMware、KVM、OpenVZ、VServer など) から選択でき、追加のシステム インストールに使用されるディスク容量は最小限です (とにかく chroot に必要になる場合があります)。仮想マシンは、ファイル、プロセス、ネットワークなど、ほぼすべてを分離します。非常に特殊な制約がない限り、これが進むべき道です。
1 つのオプションは、rbash [bash -r] などの制限されたシェル セッションにそれらを置くことです。
この時点では、正確に何を達成したいかは少し不明ですが、表面的には、「その他」の posix acl が新しいアカウントに適用されるだけでなく、アカウントが属するグループのグループ acl にも適用されます。たとえば、「ユーザー」です。