ユーザーに1つのディレクトリにのみ読み取り/書き込みアクセス権を付与します。

ユーザーに1つのディレクトリにのみ読み取り/書き込みアクセス権を付与します。

私はサーバーを実行しており、単一のユーザーに特定のディレクトリへの読み取り/書き込みアクセス権を付与する必要があります。私は以下を試しました:

sudo adduser abcd
sudo groupadd abcdefg
chown -R .abcdefg /var/www/allowfolder
chmod -R g+rw /var/www/allowfolder
usermod -a -G comments abcd

上記の方法はうまくいくようですが、ユーザーにサーバーの残りの部分への読み取り専用アクセス権を与えます。

ユーザーが特定のフォルダに対してのみ読み書きできるように権限を設定するにはどうすればよいですか?ユーザーはmysql

ベストアンサー1

否定的なACL

設定により、ユーザーがファイルシステムの特定の部分にアクセスするのを防ぎます。アクセス制御リスト。たとえば、ユーザーがabcd次のファイルにアクセスできないことを確認します/home

setfacl -m user:abcd:0 /home

この方法は単純ですが、abcdアクセスしたくないアイテムへのアクセスをブロックする必要があることに注意してください。

クロット

abcd表示できる内容を積極的に制御するには、次の設定を行います。chrootつまり、ユーザーをファイルシステムのサブツリーに制限します。

mysqlユーザーに必要なすべてのファイル(たとえば、ユーザーが実行できるようにする場合は、そのファイルのすべての依存関係mysql)をchrootの下に配置する必要があります。 chrootへのパスがあると仮定すると、/home/restricted/abcdプログラムmysqlはで利用可能でなければなりません/home/restricted/abcd。 chroot の外側を指すシンボリックリンクは、シンボリックリンクのルックアップが chroot Jail の影響を受けるため、悪いことです。 Linuxでは、バインドマウントを最大限に活用できます。

mount --rbind /bin /home/restricted/abcd/bin
mount --rbind /dev /home/restricted/abcd/dev
mount --rbind /etc /home/restricted/abcd/dev
mount --rbind /lib /home/restricted/abcd/lib
mount --rbind /proc /home/restricted/abcd/proc
mount --rbind /sbin /home/restricted/abcd/sbin
mount --rbind /sys /home/restricted/abcd/sys
mount --rbind /usr /home/restricted/abcd/usr

ファイルをコピーすることもできます(ただし、ファイルが最新であることを確認する必要があります)。

ユーザーをchrootに制限するには、ChrootDirectoryディレクティブを追加します。/etc/sshd_config

Match User abcd
    ChrootDirectory /home/restricted/abcd

以下を使用してこれをテストできます。 chroot --userspec=abcd /home/restricted/abcd/ /bin/bash

セキュリティフレームワーク

SELinuxやAppArmorなどのセキュリティフレームワークを使用することもできます。どちらの場合も、穴が残らないようにかなり細かい構成を作成する必要があります。

おすすめ記事