
myuser というユーザーがいますが、このユーザーは sftp 経由でのみ ssh に接続できます。このユーザーが常に rwx-rwx-rx でファイルを作成し、常にグループ apache が所有するようにしたいと思います。ファイルのアクセス許可部分を umask で実現しようとしましたが、umask ではファイルとディレクトリは同じ umask に対して異なるアクセス許可を取得します。助けていただければ幸いです。
答え1
背景
これは、ファイル共有 と の永続的な問題ですsftp
。これは、結果として得られる権限がユーザー側のファイルの元の権限に基づいており、umask( -u
) 引数がそのような権限を強制するのではなく、不要な権限を削除するだけであるためです。つまり、ユーザーが権限 でファイルをアップロードしようとした場合にのみ0777
、それが適用され に削除されます0775
。それ以外の場合は、そのまま残されます。たとえば、ユーザーが自分のファイル システムに権限 でファイルを保存している場合0700
、アップロード後も として表示されます0700
。
解決
-m
最近、私たちはswitch を使用して新しくアップロードされたファイルの正確な権限を強制するパッチを適用することで、Fedora でこの問題を解決しましたsftp-server
。これは、次の upstrem バグに基づいています。
https://bugzilla.mindrot.org/show_bug.cgi?id=1844
これは現在利用可能セントOS7.2変更ログより:
- Add sftp option to force mode of created files (#1197989)
回避策
間違った権限を修正するスクリプト ( から) を定期的に実行する以外に、他にエレガントな解決策はありませんcron
。これは bash のワンライナーになりますが、何か思いつくと思います。興味があれば、これについてさらに詳しく説明できます。
inotify
または、 を使用して変更を早期に「キャッチ」することもできます。
グループは親ディレクトリから継承されるはずですよね?