回避策

回避策

bash シェル スクリプトからフォルダーを作成し、そこに mysqldump を保存しています。スクリプトには権限に関連するコマンドがないことは確かです。他のユーザーがこれらのファイルにアクセスできるようにするために ACL を使用しましたが、ファイルにアクセスしようとすると権限が拒否される問題が発生しました。問題はeffectiveACL の権限にあります。

ディレクトリの所有者はでありola、フォルダにアクセスしようとしている新しいユーザーはでありuber、フォルダはgettaxi

親ディレクトリの権限

[/omega/olabooktmp]# getfacl .
# file: .
# owner: ola
# group: ola
user::rwx
user:uber:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

子ディレクトリの権限

[/omega/olabooktemp]# getfacl gettaxi/
# file: gettaxi/
# owner: ola
# group: ola
user::rwx
user:uber:rwx       #effective:---
group::r-x          #effective:---
mask::---
other::---
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

gettaxi新しいディレクトリマスクのアクセス許可が のようになっているmask::---ため、これが問題の原因であると思うのですが、この問題の解決方法を完全に理解できません。

ご提案があれば大歓迎です。

ありがとう。

答え1

次のコマンドでマスクを変更できます。

setfacl -m m:rwx filename/directory

答え2

あなたの質問をよく理解しているなら、ユーザーはolaディレクトリにファイルを作成しています:/omega/olabooktmp/gettaxi

これらのファイルへのアクセスを制限したいが、ユーザーにアクセスを許可したいuber

注:/omega/olabooktmp/gettaxi所有者はola

ACL なしで始めましょう:

ls -ld /omega/olabooktmp/gettaxi
drwxr-x--- 2 ola ola 4096 mars  21 08:16 /omega/olabooktmp/gettaxi

rwxACL を使用する権限を付与するには、以下uberを使用できます。

setfacl -m u:uber:rwx,d:u:uber:rwX,o:--- /omega/olabooktmp/gettaxi

これにより、フォルダー に対するユーザーuber権限が許可され、 および も付与されます。フォルダー内に以前存在していたファイルに対する権限が付与され、ファイルに継承された権限が付与されます。また、制限のために、 への他のすべての権限も削除されます。所有者は引き続き独自の権限を持ちます。rwx/omega/olabooktmp/gettaxirwxdefaultd:Xother

結果:

getfacl /omega/olabooktmp/gettaxi
getfacl: Removing leading '/' from absolute path names
# file: omega/olabooktmp/gettaxi
# owner: ola
# group: ola
user::rwx
user:uber:rwx
group::r-x
mask::rwx
other::---
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::---

テスト:

olaいくつかのファイルを作成します (root として実行):

su - ola -c "for i in {1..3}; do date > /omega/olabooktmp/gettaxi/$RANDOM; done"

結果:

ls -l /omega/olabooktmp/gettaxi/
total 32
-rw-r----- 1 ola users 32 mars  21 08:43 17606
-rw-r----- 1 ola users 32 mars  21 08:43 22286
-rw-r----- 1 ola users 32 mars  21 08:42 31484
-rw-r----- 1 ola users 32 mars  21 08:43 31848
-rw-r----- 1 ola users 32 mars  21 08:42 667
-rw-r----- 1 ola users  4 mars  21 08:16 one
-rw-r----- 1 ola users  6 mars  21 08:16 three
-rw-r----- 1 ola users  4 mars  21 08:16 two

通常のユーザーではアクセスできません (root として実行):

su - debian -c "ls -l /omega/olabooktmp/gettaxi"
ls: cannot open directory '/omega/olabooktmp/gettaxi': Permission denied

しかし、uber は (root として実行) 可能です:

su - uber -c "ls -l /omega/olabooktmp/gettaxi"
total 32
-rw-r----- 1 ola users 32 Mar 21 08:43 17606
-rw-r----- 1 ola users 32 Mar 21 08:43 22286
-rw-r----- 1 ola users 32 Mar 21 08:42 31484
-rw-r----- 1 ola users 32 Mar 21 08:43 31848
-rw-r----- 1 ola users 32 Mar 21 08:42 667
-rw-r----- 1 ola users  4 Mar 21 08:16 one
-rw-r----- 1 ola users  6 Mar 21 08:16 three
-rw-r----- 1 ola users  4 Mar 21 08:16 two

いくつかのテストで ACL を壊してしまった場合は、次のコマンドですべての ACL を削除できます。

setfacl -R -b /omega/olabooktmp/gettaxi

そしてまた始めてください。

答え3

はい、マスクは権限を下げます。有効な権限は、権限とマスクの組み合わせです。 ( user::(所有ユーザー)、および はotherマスクの影響を受けません)。

マスクは次のように変更できます: 例setfacl -m m:r-x file-name:

を実行するときにls -l、モードが で終わる場合+、中間のモード ビット (従来はグループ ビット) がマスクになります。

モード ビットは、 のグループ ビットに従って設定されることがありますumask。これがいつ発生するか、およびデフォルトのマスクがいつ使用されるかに関するルールはまだ解明されていません。 を使用してcpファイルをコピーすると、 が使用されるようですumask

回避策

ユーザーに独自のグループがあり、それがデフォルト グループに設定されていることを確認します。次に、umaskを に 設定します007

答え4

この動作はバグだと思います。先月この件について投稿しました (unix.stackexchange.com/questions/570795 を参照)。何が起こっているかというと、ソース ファイルのファイル権限が cp コマンドによって ACL マスクにコピーされているのです。これは cp ではなく cp -p で期待していたことです。cat を使ってコピーできることが分かりました。

cat afile > bfile

またはタールを通すことによって

(cd A; tar -cf -)|(cd B; tar-xf -)

そして、ACL は期待どおりに尊重されます。

また、この cp の動作を説明するために懸賞金も出しました。誰も説明してくれませんでした。バグレポートを提出しようと思っています。つまり、これは 'cp -p' の動作であって、バニラ cp の動作ではないということです。(そして、誰も答えを出せなかったにもかかわらず、システムは懸賞金ポイントを差し引きました。これにも驚きました。)

関連情報