Linux ホスト上のユーザーの場合、ホーム ディレクトリ以外のすべてをアクセスできないようにする必要があります。
これは通常、ユーザーのルート ディレクトリを変更して (ユーザーのホーム ディレクトリに設定して) 実行されると聞いていますが、その方法を見つけることができませんでした。
コマンドについて考えましたchroot
が、指定されたディレクトリをルート ディレクトリと見なして、指定されたコマンドを実行するだけのようです。したがって、これはchroot
必要なものではないようです。
そこで質問ですが、ユーザーのルートディレクトリを変更するコマンドは何ですか?
答え1
ルート ディレクトリではなく、HOME ディレクトリを変更したいようです。ルートは常に / または /root になります。
usermod -d /path/to/new/homedir/ username
答え2
このホーム ディレクトリの背後にある「すべてにアクセスできない」ことを確認するために、chroot を使用しますが、chroot されたディレクトリを準備しないと何もできず、バイナリやライブラリが利用できなくなります。
FTP サーバーの設定は役に立ちます: http://tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap29sec296.html
これは、FTP ユーザーをこの chroot ディレクトリに制限するために設定された完全な chroot 設定です。
答え3
私はこの答えを支持します。たとえこの答えに対して -1 の評価が下されたとしても気にしません。これは Unix が合理的な方法で実行できるものではありません。あなたが求めているのは事実上不可能なことです。
しかし、あなたが求めているようなものを実現する方法は、ある程度あります。仮想マシンを使用します。問題のユーザー用に仮想マシンのインスタンスを設定し、ホスト OS ではなく、そのインスタンスへのログイン権限のみを付与します。
これが私の元の答えです:
権限を使用するだけです。それが権限の目的です。通常、ユーザーは /tmp とホーム ディレクトリ以外には書き込み権限がありません。また、、、、およびへの読み取り権限も必要です。そうしない/bin/
と/usr/bin
、/usr/lib
何/lib
も実行できなくなります。
権限で与えられるものよりもさらに厳しいものを本当に必要とする場合は、さらに制限できるように selinux を設定することを検討してください。
使用してchroot
も、望む結果が得られるわけではありません。設定が非常に複雑で、回避する方法もあります。
答え4
追加すると
if grep "\\<${USER}\\>" /etc/jailbirds > /dev/null
then
echo I am not a crook
else
exec chroot $CWD
endif
最後まで実行すれば、/etc/profile
求めている結果が得られるかもしれませんが、私が知らない副作用があるかもしれません(シェルの実行を引き継ぐと/etc/profile
問題が発生する可能性があります)。この場合、/etc/jailbirds
chroot するユーザーのリストであるファイルを作成する必要があります。また、このファイルが存在することを確認し、アクセスエラーが発生した場合に他のユーザー(特に root)が chroot によってロックされないようにするためにどうするかを決定する必要があります。
さらに、これを実行するのは困難です。ユーザーは にアクセスできなくなり/proc
、多くのシェル ユーティリティ ( ps
、top
、その他多数) が動作しなくなります。ユーザーは にもアクセスできなくなり/dev/null
、多くの機能が壊れます。
また、ユーザーは にアクセスできないため、標準入力で使用すると/dev/tty
エラーが発生します。ユーザーのアプリケーションは、chroot 前の stdin、stdout、stderr オープン ファイル記述子を継承しますが、less は /dev/tty を開き、パイプからリダイレクトされた stdin を処理するためにユーザーからキーストロークを取得できるようにします。less
more
また、多くのプログラムが使用する /etc の下にあるプログラムや共有ライブラリ、多くのファイル ( /etc/protocols など) にもアクセスできなくなります。
これらはすべて回避できるものですが、ユーザーの環境を使いやすくするためには、あなたが考えていたよりもはるかに多くの作業が必要になるでしょう。
私の提案を試す場合は、十分に注意することをお勧めします。間違えて、ひどい結果になる可能性が高くなります。ちなみに、私はこれをテストしていません。