ZFSでACL設定の継承がある場合のmkdir()の挙動
はじめに
https://boiledorange73.hatenablog.com/entry/2014/04/21/000000 のつづきです。
SFTPのところについて、ふと、どのレベルでACL継承を保持するのか見といた方がいいかな、と思いました。
実験してみた
ソースはこんなかんじ。DIRPATH1はmkdir()のみ、DIRPATH2はmkdir()とchmod()を実行。
#include#define DIRPATH1 "./dx1" #define DIRPATH2 "./dx2" main() { /* DIRPATH1 */ mkdir(DIRPATH1, 0750); /* DIRPATH2 */ mkdir(DIRPATH2, 0750); chmod(DIRPATH2, 0700); return 0; }
% ls -l ... drwxr-xr-x+ 2 ... dx1/ drwx------ 2 ... dx2/ ...
ファイル属性(1つ目のフィールド)の末尾に"+"が付いてるのがACL設定が付いてるもの、"+"が無いのが伝統的な属性のみでなっているものです。
前エントリのSFTPに関する話とあわせると、SFTPでは、
ということをしているようです。
Sambaについてもいちおう検討
SFTPとかSambaとかアプリケーションで分けて考えなくてもだいたい想像がつくようになってきた(mkdir()でパーミッションを設定しているだろうから、ディレクトリはACL継承される)ところと思いますが、あえてやってみます(mkdir()のあとchmod()を呼んでパーミッション設定する可能性も無いことはない)。
まず、dsmbディレクトリを作り、everyoneのエントリでパーミッションなしとし、owner, group に"fd"属性を付けます。ちょうど 750 になります。
% mkdir dsmb % setfacl -m owner@:rwxp--aARWcCos:fd:allow dsmb % setfacl -m group@:r-x---a-R-c--s:fd:allow dsmb % setfacl -m everyone@::fd:allow dsmb % getfacl dsmb ... owner@:rwxp--aARWcCos:fd----:allow group@:r-x---a-R-c--s:fd----:allow everyone@:--------------:fd----:allow
ここに仮にフォルダを作ります。Sambaはフォルダを作る際に755になるようにしています。
(フォルダ作成は略)
% ls -ld dsmb/新しいフォルダー drwxr-x---+ 2 ... dsmb/新しいフォルダー % getfacl dsmb/新しいフォルダー ... owner@:rwxp--aARWcCos:fd----:allow group@:r-x---a-R-c--s:fd----:allow everyone@:--------------:fd----:allow %
dsmb/新しいフォルダー は750ですから、予想通りでしたね。