1

Linux (RackSpace Cloud、CentOS) サーバーに新しいファイルまたはフォルダーを作成/アップロードするときに、デフォルトのアクセス許可とグループを設定しようとしています。

ディレクトリ「public」のすべての子ファイル/フォルダーを次のように設定したい:

User - rwx
Group - 'ftp', rwx
Other - r-x

次のスクリプトを使用して ACL を (再帰的に) 設定しました。

setfacl -R -m u::rwx,g:ftp:rwx,d:g:ftp:rwx,o::rx public/

getfacl を使用して ACL を返すと、次のように表示されます。

# file: public/
# owner: james
# group: ftp
# flags: -s-
user::rwx
group::rwx
group:ftp:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:ftp:rwx
default:mask::rwx
default:other::r-x

ただし、新しいファイルを作成すると、次の権限が返されます (FTP からユーザー 'james' で新しいファイルをアップロードする場合も同様です)。

-rw-rw-r--+ 1 root  root      6 Sep  5 15:26 test.html

「x」とデフォルトグループ「ftp」を設定しないのに、他のパーミッションを適切に設定するのはなぜですか?

4

1 に答える 1

2

ファイルは、アプリケーションが明示的に要求した場合にのみ実行許可付きで作成されるため、実行ビットを設定していません。.html ファイルを実行可能にすることは意味がないため、それを作成したプログラムは実行許可の追加を要求しなかったため、実行許可はありません。したがって、デフォルト ACL の実行許可は、ファイルではなくディレクトリにのみ適用されます。

デフォルト グループが に設定されていない理由についてはftp、これはより微妙です。デフォルトの ACL は、ACL です。これはデフォルトのグループ所有権ではありません。そのため、ではなく次のように表示さlsgetfaclます。

# mkdir public
# setfacl -R -m u::rwx,g:ftp:rwx,d:g:ftp:rwx,o::rx public/
# getfacl public
# file: public
# owner: root
# group: root
user::rwx
group::r-x
group:ftp:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:ftp:rwx
default:mask::rwx
default:other::r-x

# echo hello, world > public/test.html
# ls -l public
total 4
-rw-rw-r--+ 1 root root 13 Aug 29 13:00 test.html
# getfacl public/test.html 
# file: public/test.html
# owner: root
# group: root
user::rw-
group::r-x                      #effective:r--
group:ftp:rwx                   #effective:rw-
mask::rw-
other::r--

ftp はファイルに問題なくアクセスできますが、他の人はアクセスできないことに注意してください。

# cd public
# su nobody -s /bin/bash -C "touch test.html"
touch: cannot touch `test.html': Permission denied
# su ftp -s /bin/bash -C "touch test.html"
#
于 2014-08-29T17:53:40.927 に答える