web-dev-qa-db-ja.com

CentOSで特定のフォルダが削除されないようにする

PureFTPdを実行しているCentOSサーバーがあり、複数の仮想ユーザーが単一のシステムユーザーにマッピングされています。これらの各仮想ユーザーは、ユーザー名に対応するディレクトリにchrootされます。ディレクトリツリーは次のとおりです。

  • /ftp_accounts
    • / virtual_user_1
    • / virtual_user_2
    • .。
    • / virtual_user_N

1つだけこれらのFTP仮想ユーザー(彼を「master_virtual_user」と呼びましょう)はメインのftp_accountsディレクトリにchrootされ、すべてのサブフォルダーにアクセスできるようになります。

この特定の「master_virtual_user」については、onlyvirtual_user_*フォルダーの削除を防ぎながら、完全な読み取り/書き込みアクセスを維持したいと思います。このディレクトリツリーの他のすべてに。

これらのFTP仮想ユーザーがすべて同じシステムユーザーにマッピングされていることを考えると、これを実現する方法はありますか?

6
Ralph

ディレクトリで不変フラグを使用できればいいのですが、そのディレクトリに不変のファイルを作成することで不正行為を行うことができます。そう touch virtu_user_X/.immutableそしてchattr +i virt_user_x/.immutable。例えば:

[root@hellonurse ~]# cd /root
[root@hellonurse ~]# mkdir z
[root@hellonurse ~]# cd z
[root@hellonurse z]# touch .i
[root@hellonurse z]# chattr +i .i
[root@hellonurse z]# cd ..
[root@hellonurse ~]# rm  -rf z
rm: cannot remove ‘z/.i’: Operation not permitted
[root@hellonurse ~]# chattr -i z/.i
[root@hellonurse ~]# rm  -rf z
[root@hellonurse ~]# ls z
ls: cannot access z: No such file or directory
5
chicks

ファイルシステムアクセス制御リスト(ACL)-setfaclコマンドを使用して、そのユーザーの書き込み権限を奪います。

setfacl -m u:master_virtual_user:r-x virtual_user_*

3
Daniel t.