Ubuntu10.04を実行しているLinuxボックスがあります。その主な機能はWebサーバーであり、(私が思うに)従来のLAMPスタックで構成されています。
開発者は、Webルートとして機能するサブディレクトリを含む共通ディレクトリ「dev」にアクセスできます。すべての開発者は個別のSSHアクセスを持っています。
開発者が「dev」ディレクトリツリーにファイルを作成する場合、またはリポジトリから「dev」にファイルをプルする場合、ファイルのアクセス許可をrwxrwxr-xにする必要があります。代わりに、新しく作成されたファイルにはrw-r--r--の権限があります。 ACLを変更し、スティッキービットなどを使用して「dev」のグループとユーザーIDを設定することにより、rw-rw-r--のアクセス許可を持つ新しく作成されたファイルを取得することができました。
問題は、/ etc/profileのグローバル値022を使用して現在設定されているumask構成にあると思います。 umaskをグローバルに変更したり、開発者ごとに変更して、よりリラックスしたデフォルトのアクセス許可を許可したりしたくありません。
何かが足りない場合を除いて、ACLとumaskを使用して目的を達成する方法がわかりません。確かに、これは共有プロジェクトに取り組んでいるWeb開発者にとってかなり一般的な要件です。
推奨または推奨されるアプローチはありますか?
最初は、次のように「dev」にgidを設定しました。
chmod g+s dev
ls -l
drwxrwsr-x 8 755 admin 4096 Jan 19 13:24 dev
「dev」のデフォルトACLは次のとおりです。
getfacl dev
# file: dev
# owner: 755
# group: admin
# flags: -s-
user::rwx
group::rwx
other::r-x
(開発者が属する)「admin」グループにACLを適用しました。
setfacl -Rm d:g:admin:rwX
getfacl dev
# file: dev
# owner: 755
# group: admin
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:admin:rwx
default:mask::rwx
default:other::r-x
ファイルを作成し、ファイルのアクセス許可を確認します。
touch dev/foo
ls -l dev
-rw-rw-r--+ 1 duncmc admin 0 Jan 19 16:03 foo
今回は、ユーザー「duncmc」のACLを追加します。
setfacl -Rm u:duncmc:rwX dev
getfacl dev
# file: dev
# owner: 755
# group: admin
# flags: -s-
user::rwx
user:duncmc:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:admin:rwx
default:mask::rwx
default:other::r-x
新しいファイルを作成し、権限を確認します。
touch dev/bar
ls -l dev
-rw-rw-r--+ 1 duncmc admin 0 Jan 19 16:07 bar
-rw-rwxr--+ 1 duncmc admin 0 Jan 19 16:03 foo
ユーザーにACLを追加すると、既存のファイル「foo」に対するグループ権限(以前はrw-現在はrwx)が変更されたようです。新しく作成されたファイルは、さまざまな権限を継承しています。これは私には意味がなく、これがどのように機能するかについて私が理解していない基本的な何かがあることを示唆しています。
Rw-rw-r-(または644)のファイルパーミッションが私たちの要件に十分であることがわかりました。