いくつかの共有ディレクトリを持つLinuxファイルサーバーがあります。これらのディレクトリには、SFTP経由でアクセスすることもあれば、シェルを使用するユーザーがアクセスすることもあります。これらのディレクトリへのアクセス方法に関係なく、次のことを確認したいと思います。
g+rw
)g+x
)g-x
)以前にsetfacl
でこれを行ったことがあるという漠然とした記憶がありますが、その方法がわかりません。
私がここに来た最も近いものは次のとおりです。
$ chown fileserver:fileserver . -R
$ find . -type f -print -exec chmod a-x '{}' ';'
$ find . -type d -print -exec chmod u+x '{}' ';'
$ find . -type d -print -exec chmod g+xs '{}' ';'
$ cat facls
user::rwx
group::rwx
other::r-x
default:user::rwx
default:user:fileserver:rwx
default:group::rwx
default:group:fileserver:rwx
default:mask::rwx
default:other::r-x
$ setfacl -M facls -R .
また、このディレクトリに書き込むプロセスで誤って過度に厳密なumaskを実行することに関しては正しいことをしているようですが、それでもユーザーは作成したファイルをchmod
して、アクセス許可を制限することができます。
このソリューションの主な問題は、ファイルを作成した人がファイルを所有していることと、ファイルの所有者がアクセス許可を変更するための取り消し不可能なアクセス許可を持っていることです。 BSD派生システムでは、これをsetuid
ディレクトリで修正できるようです(これにより、そのディレクトリで作成されたすべてのファイルがディレクトリの所有者によって所有されます)。ただし、Linuxはsetgid
に対してのみこの動作をします。