所有者 rw(600) 特権のみを持つ特定のファイルを生成するときのユーザー間のディレクトリ共有 (ACL を使用)

所有者 rw(600) 特権のみを持つ特定のファイルを生成するときのユーザー間のディレクトリ共有 (ACL を使用)

背景:

同じコンピュータで、2人のユーザーがフォルダを共有しようとしています。一般的なアプローチは、同じグループの2人のユーザーが親フォルダをそのグループに設定し、rwビットとsビットを設定することです。

良い結果。 とは別に....共有したいフォルダは、Chromiumが使用するフォルダです。 Chromiumが起動すると、sビットは無視され、所有者のrw(たとえば600)権限のみを持つ一部のセッションファイルに書き込みます。一部の誤動作するプログラムがこれを実行できると思います。 これは、後で他のユーザーが同じクロムプロファイルを開こうとすると、そのセッションファイルがすでに存在し、他のユーザーのrwだけが所有しているため、そのセッションファイルを設定できないことを意味します。 :(

binfsを試しましたが、ログイン時にsudoを使用する必要があるため、ログイン時に非対話型を設定するにはsudoers.dファイルを使用する必要があります。

とにかくACLを試してみましたが、思ったように動作しなかったので、特定の側面をたどりませんでした。


# user1: syadmin
# user2: david
# directory: /opt/stest
# user1 sysadmin is logged in.

# sysadmin owns /opt/stest
$ llag stest
drwxrwsr-x+  2 sysadmin users    4096 Feb  3 13:45 stest/

$getfacl stest
# file: stest
# owner: sysadmin
# group: sysadmin
user::rwx
group::rwx
other::r-x

# now run
setfacl -R -m u:david:rwX /opt/stest
setfacl -dR -m u:david:rwX /opt/stest

# gives
user:david:rwx
default:user:david:rwx

#now create a file as other user
$ su david -c "touch /opt/stest/test"
-rw-rw-r--+  1 david    users    0 Feb  3 13:51 test

#set with owner only rw like how chromium does
-rw-------+  1 david    users    0 Feb  3 13:51 test

$ getfacl test
# file: test
# owner: david
# group: users
user::rw-
user:david:rwx          #effective:---
group::rwx          #effective:---
mask::---
other::---

それで私が受け取れなかった部分です。ファイルの「acl以外」の所有者がtestDavidである理由

# file: test
# owner: david

ディレクトリのsysadmin所有権を付与される代わりに。sysadminデフォルトでは、私はsetfaclが常にディレクトリ所有者にアクセス権を与えると思います。 aclエントリがsysadmin sysdamin許可されている他のユーザーによって作成された場合でも、ファイルに手動で追加する必要があるようです。そうしないと、独自のファイルがロックされる可能性があります。これは私にとって直感的ではありません。

これが私がすべきことですか?他のユーザーがファイルを作成している場合は、ディレクトリでinotify waitを実行してからsysamdinをaclリストに追加する必要がありますか?私の状況ACLや他の状況に最適なソリューションは何ですか?

カーネル5.4.0-65-でUbuntu 20.04を実行しています。

- 2日後

私は別のアプローチを試しました。 sudoを使用して、両方のユーザーをファイルとデフォルトのaclリストに追加しました。その後、ログアウトして別のユーザーとしてログインします。次に、問題のファイルの1つからgetfaclを実行します。 2 人のユーザーがリストされますが、rw 以外は何も表示されません。ああ。 。作成したファイルには、現在ユーザーがsysadminアクセスできません。david有効なときにrwが表示されないのはなぜですか? ? ?

-rw---------+ 1 DavidDavid125146 2月6日 09:12 設定

getfacl Preferences 
# file: Preferences
# owner: david
# group: david
user::rw-
user:sysadmin:rwx       #effective:---
user:david:rwx          #effective:---
group::rwx          #effective:---
group:users:rwx         #effective:---
mask::---
other::---

ベストアンサー1

わかりました。問題を解決したようです。まったく同じユーザーディレクトリ/プロファイルを使用して、両方のユーザーでChromeを開くことができます。

秘密は、すべてのユーザーを既存のファイルとデフォルトのacl所有者リストに追加することです。次に、マスクセットを取得するには、いくつかの chmod コマンドを実行し、すべての操作を再帰的に実行します。

あなたの便宜のためにスクリプトを書いており、ここにあります。

https://gist.github.com/dkebler/23c8651bd06769770773f07854e161fc

引き続き更新してバグを修正しますが、これまでは私にとって効果的です。試してみると簡単に問題が発生する可能性があるため、テストディレクトリで試してみることをお勧めします。 これを防ぐために、いくつかの確認メッセージを作成しましたが、まだスクリプトを読み、リスクを取って使用してください。

これは、実行されたコマンドを示すスクリプトの出力です。

david@giskard:[common/applications] $ share_dir -o root . sysadmin david
share directory /mnt/AllData/users/common/applications/ with users: sysadmin david ? confirm y
adding acl user sysadmin
these are the acl commands that you will run
******************
sudo setfacl -R -m u:sysadmin:rwX /mnt/AllData/users/common/applications/
sudo setfacl -dR -m u:sysadmin:rwX /mnt/AllData/users/common/applications/
******************
Double Check. Do you want to continue? y
*** new acl entries ***
user:sysadmin:rwx
default:user:sysadmin:rwx
adding acl user david
these are the acl commands that you will run
******************
sudo setfacl -R -m u:david:rwX /mnt/AllData/users/common/applications/
sudo setfacl -dR -m u:david:rwX /mnt/AllData/users/common/applications/
******************
Double Check. Do you want to continue? y
*** new acl entries ***
user:david:rwx
default:user:david:rwx
done adding acl users sysadmin david
these are the chown/chmod commands that you will run
******************
sudo chown -R root:users /mnt/AllData/users/common/applications/
sudo chmod -R u+rwX /mnt/AllData/users/common/applications/
sudo chmod -R g+rwX /mnt/AllData/users/common/applications/
sudo find /mnt/AllData/users/common/applications/ -type d -exec chmod g+s {} +
******************
Double Check. Do you want to continue? y
all done!
total 24
drwxrwsr-x+ 2 root users 4096 Feb  6 13:05  ./
drwxrwsr-x+ 5 root users 4096 Feb  6 11:39  ../
-rwxrwxr-x+ 1 root users  169 Jan 30 11:01 'Hacking Chromium.desktop'*
-rwxrwxr-x+ 1 root users  161 Jan 30 16:03 'Incognito Chromium.desktop'*
# file: /mnt/AllData/users/common/applications/
# owner: root
# group: users
# flags: -s-
user::rwx
user:sysadmin:rwx
user:david:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:sysadmin:rwx
default:user:david:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

おすすめ記事