ACLを使用した「x」(実行可能)ビットの設定

ACLを使用した「x」(実行可能)ビットの設定

生成されたファイルに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がrwxaclにあります!

ローカルディレクトリの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を設定する方法はありますか?

オペレーティングシステムは suse 11.4 で、ディレクトリには NFS 3 がマウントされており、ACL はファイルシステムに設定されています。

答え1

ACLを強制することはできないようです。置く権限ビット。

使用Linux ACL のマニュアルページちなみに、ファイル権限にはデフォルトのACLがコピーされていますが、

  1. モードパラメータに指定された権限以外の権限が含まれないように、ファイル権限ビットに対応するアクセスACLエントリを変更します。 【与えるopen()などcreat()

権限ビットマスクはグループ権限ビットに対応するため、ここで影響を受けます。

デフォルト ACL が存在しない場合、umaskデフォルト ACL が使用されますが、同じブロックは引き続き実行されます。

もちろん、これは、モードを使用して実行権限を除外したり、モードを使用して他のユーザーがファイルにアクセスできないようにするなど、ファイルが作成されたときに渡される権限に権限をopen制限できるプログラムの一般的な慣行と一致します。 06660600

答え2

これら2つの質問は、周りに回答されています。

umaskはACLにどのような影響を与えますか?

https://superuser.com/questions/180545/setting-differing-acls-on-directories-and-files

関連ビットは通常次のようになりますman setfacl

permsフィールドは、>権限(読み取り(r)、書き込み(w)、実行(x))を表す文字の組み合わせです。ファイルがディレクトリである場合、またはすでにユーザー(X)に対する実行権限がある場合にのみ実行されます。 あるいは、permsフィールドは8進数(0〜7)であります。

(強調は私のもの)

最初の質問に対する回答の該当部分@slm︎次のように:

結論として

  • ファイルに実行権限(ブロックまたは有効)は付与されません。 ACL、umask、またはマスクとACLのどちらを使用するかは重要ではありません。

  • ディレクトリは実行権限を取得できますが、これはマスクフィールドの設定方法によって異なります。

  • ACL権限に基づいてファイルの実行権限を設定する唯一の方法は、chmodを使用して手動で設定することです。

これは、デフォルトでACLを使用して目的の操作を実行できないように見えることを意味します。実際に実行ファイルを生成すると明示的に言うプログラムはほとんどないからです。

関連情報