作成されたファイルに x ビットを設定することができません。
archemar@foobar:~/D> echo echo hello world > v.sh
archemar@foobar:~/D> ls -l v.sh
-rw-rw-r--+ 1 archemar group1 17 Apr 12 08:12 v.sh
xビットがないので、ACLを見てみましょう
archemar@foobar:~/D> getfacl v.sh
# file: v.sh
# owner: archemar
# group: group1
user::rw-
group::rwx #effective:rw-
group:group1:rwx #effective:rw-
mask::rw-
other::r--
group1 はrwx
ACL にあります!!
ローカルディレクトリの ACL を見てみましょう
archemar@foobar:~/D> getfacl .
# file: .
# owner: FTP_D_adm
# group: admin
user::rwx
group::rwx
group:group2:rwx
group:admin:rwx
group:group1:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:group1:rwx
default:mask::rwx
default:other::r-x
私はグループ1の一員です:
archemar@foobar:~/D> id
uid=1001(archemar) gid=1001(group1) groups=1001(group1),16(dialout),33(video)
実行してみましょう
archemar@foobar:~/D> ./v.sh
-bash: ./v.sh: Permission denied
g+x を設定するのは簡単ですが、実際のファイルは ftp 経由で届きます。ビット x を設定する方法はありますか?
OS は suse 11.4、ディレクトリは NFS 3 マウントされ、ACL はファイルシステムに設定されています。
答え1
ACLを使って強制的にセット許可ビット。
使用方法Linux ACL マニュアルページ参照として、デフォルトのACLがファイルの権限にコピーされますが、
- ファイル権限ビットに対応するアクセスACLエントリは、モードパラメータで指定された権限に含まれていない権限が含まれないように変更されます。
open()
[などに与えられるcreat()
]。
権限ビット マスクはグループ権限ビットに対応しているため、ここで影響を受けます。
デフォルトの ACL がない場合は、umask
代わりに が使用されますが、同じマスキングが実行されます。
open
これはもちろん、プログラムがファイルの作成時に渡す権限を制限できるという通常の慣例に沿ったもので、 mode で実行権限を除外したり0666
、 mode で他のユーザーによるファイルへのアクセスを除外したりすることができます0600
。
答え2
これについては、次の 2 つの質問で簡単に答えられています。
https://superuser.com/questions/180545/directories-and-files の設定の違い
関連するビットは一般的に次のとおりですman setfacl
。
permsフィールドは、読み取り(r)、書き込み(w)、実行(x)などの権限を示す文字の組み合わせです。ファイルがディレクトリであるか、すでに何らかのユーザー (X) に対して実行権限を持っている場合にのみ実行します。 あるいは、perms フィールドには 8 進数 (0 ~ 7) を指定することもできます。
(強調は筆者による)
回答の最初の質問の関連セクション@slm♦は次のとおりです。
要約する
ファイルには実行権限 (マスキングまたは有効) が付与されません。ACL、umask、または mask & ACL のどの方法を使用するかは関係ありません。
ディレクトリは実行権限を取得できますが、マスキング フィールドの設定方法によって異なります。
ACL 権限の下にあるファイルの実行権限を設定する唯一の方法は、chmod を使用して手動で設定することです。
つまり、実行可能ファイルを作成したいと明示的に指示するプログラムはほとんどないため、ACL ではやりたいことを実現できないようです。