背景:
同じコンピュータで、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以外」の所有者がtest
Davidである理由
# 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