Bashシェルスクリプトからフォルダを作成し、その中にmysqldumpを保存します。私のスクリプトには権限関連のコマンドがないと確信しています。他のユーザーがファイルにアクセスできるようにACLを使用しましたが、そのファイルにアクセスしようとしたときに権限拒否の問題が発生しました。問題はeffective
ACLの権限にありました。
ディレクトリの所有者はであり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
ACLrwx
権限を付与するには、uber
次を使用できます。
setfacl -m u:uber:rwx,d:u:uber:rwX,o:--- /omega/olabooktmp/gettaxi
これにより、フォルダに対するユーザー権限が許可され、uber
付与されます。以前にフォルダーにあったファイルに権限を付与し、ファイルに継承した権限を付与します。もちろん、他のすべての権限を削除して制限してください。所有者はまだライセンスを持っています。rwx
/omega/olabooktmp/gettaxi
rwx
default
d:
X
other
結果:
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
またはtarパイプライン経由
(cd A; tar -cf -)|(cd B; tar-xf -)
そしてaclsは予想通り尊重されます。
また、このCPの動作を説明するために賞金を提供しています。誰もそれを説明しません。バグレポートの提出を検討中です。つまり、これは通常のcpアクションではなく「cp -p」アクションでなければなりません。 (そして誰も答えられませんでしたが、システムが報酬ポイントを差し引いてしまいました。私も驚きました。)