/ tmpディレクトリとクラスタコマンドの永続ビットで奇妙な動作が発生します。 2つのシナリオを試しました。
状況1:Ubuntuユーザーを使用してファイルを生成します。ルートには、生成されたファイルにアクセスする権限がありません。
ubuntu@:~$ touch -a /tmp/ubuntu_user_created.lck
ubuntu@:~$ flock -n /tmp/ubuntu_user_created.lck -c "echo 123"
123
ubuntu@:~$ sudo flock -n /tmp/ubuntu_user_created.lck -c "echo 123"
flock: cannot open lock file /tmp/ubuntu_user_created.lck: Permission denied
シナリオ2:rootユーザーを使用してファイルを作成し、rootユーザーとUbuntuユーザーの両方で作成されたファイルにアクセスできます。
ubuntu@:~$ sudo touch -a /tmp/root_user_created.lck
ubuntu@:~$ flock -n /tmp/root_user_created.lck -c "echo 123"
123
ubuntu@:~$ sudo flock -n /tmp/root_user_created.lck -c "echo 123"
123
両方のファイルに対する権限:
ls -la /tmp/
total 52
drwxrwxrwt 12 root root 4096 Oct 6 08:08 .
drwxr-xr-x 19 root root 4096 Oct 6 03:42 ..
-rw-r--r-- 1 root root 0 Oct 6 07:56 root_user_created.lck
-rw-rw-r-- 1 ubuntu ubuntu 0 Oct 6 07:54 ubuntu_user_created.lck
rファイルがroot所有でflock -n /tmp/root_user_created.lck
あるため、Ubuntuユーザーがコマンドを正常に実行できる理由を理解できません。 Flockコマンドはこのファイルを読み取りモードでのみ開きたいですか?oot_user_created.lck
Flockコマンドに読み取りアクセスのみが必要な場合、flock -n /tmp/ubuntu_user_created.lck
root権限でコマンドを実行すると拒否された権限が返されるのはなぜですか?