ユーザーを別の場所の複数のディレクトリに chroot

ユーザーを別の場所の複数のディレクトリに chroot

ユーザーがRWX権限を持つホームディレクトリなどの/etc/httpdディレクトリにのみアクセスできるように制限する方法を知りたいです。/etc/php/var/www/html

また、このユーザーがApacheサービスのみを開始/停止/再起動するように制限したいと思います。

私が考えることができるのはchrootだけでしたが、ディレクトリを使ってそうしました。どんなアイデアがありますか?

答え1

刑務所に閉じ込められたユーザーは、これらのフォルダにあるままアクセスできません。ファイルシステムでACLを有効にした場合は、一般ユーザーを作成し、アクセス制御リストを使用してディレクトリへのアクセスを制御できます。

ユーザー「Bob」にディレクトリアクセス権を付与するには、グループを作成し、Bobをグループに配置してから、/ etc / http /にある既存のファイルと新しく作成されたファイルに対するグループアクセス権を繰り返し付与します。

# groupadd WebAccessGroup
# usermod -a -G WebAccessGroup Bob
# setfacl -Rm d:g:WebAccessGroup:rwx,g:WebAccessGroup:rwx /etc/httpd/

グループを作成せずに、ユーザー「Bob」wrxにのみ/ etc / httpdへのアクセスを許可することもできます。

# setfacl -Rm d:u:Bob:rwx,u:Bob:rwx /etc/httpd/

WebAccessGroupグループがApacheを起動および停止できるようにするには、グループにsudoアクセス権を付与して、ルートでApacheを起動/停止したときに呼び出される特定のスクリプトを実行できます。

"visudo" コマンドを使用して、/etc/sudoers ファイルに次の内容を追加します。

# visudo
%WebAccessGroup   ALL=(root)    NOEXEC: /usr/bin/httpd

Bobはsudoを使用してApacheを起動します。

$ sudo /usr/sbin/httpd -k start

**注:非rootユーザー(この例では「他のユーザー」)で非標準ポートでApacheを実行している場合は、All =(root)をAll =(anotheruser)に変更する方が安全で効率的です。 run start 良いコマンドは次のとおりです。

sudo -u anotheruser /usr/sbin/httpd -k start

答え2

Linuxでは、バインドマウントを使用してchrootに別のディレクトリを表示できます。

# mkdir -p /users/chroot/var/www/html
# mount --bind /var/www/html /users/chroot/var/www/html 
etc.

ユーザーが単一のサービスを再起動できるようにするには、次のコマンドを使用してsudoユーザーが実行できるようにします。service apache2 restart

ただし、ユーザーを chroot 状態に保ち、ユーザーが chroot の外部でサービスを再起動できるようにするのは難しい場合があります。これを行うには、サービスマネージャ(systemd?)に必要なものをすべてchrootに表示する必要があります。その時点で、同じchroot(またはコンテナまたは仮想マシン)内でサーバー全体を実行するのが簡単になる可能性があります。

関連情報