このファイルを開くことができるのはなぜですか?

このファイルを開くことができるのはなぜですか?

USBデバイスの使用をデバッグ中に、次のような奇妙な動作が発生しましたopen(2)

admin@anahata-core-i5:/tmp$ groups
admin sudo
admin@anahata-core-i5:/tmp$ ls -l /dev/bus/usb/001/051
crw-rw----+ 1 root audio 189, 50 Jun 19 20:03 /dev/bus/usb/001/051
admin@anahata-core-i5:/tmp$ cat test.c 
#include <fcntl.h>

int main()
{
    return open("/dev/bus/usb/001/051",O_RDWR);
}
admin@anahata-core-i5:/tmp$ gcc test.c -o test && ./test ; echo $?
3

上記のセッションログに示すように、/dev/bus/usb/001/051ユーザーとグループだけがアクセスできるにもかかわらず、ファイルを正常に読み書きしています。rootaudioopen

どうなりますか?なぜ私はそれを得ることができないのですかEPERM

編集するコメントに返信:

admin@anahata-core-i5:/tmp$ getfacl  /dev/bus/usb/001/051
getfacl: Removing leading '/' from absolute path names
# file: dev/bus/usb/001/051
# owner: root
# group: audio
user::rw-
user:admin:rw-
group::rw-
mask::rw-
other::---

ベストアンサー1

()のモード出力は、+ACLが使用中であることを示します。 OPの出力には、次の1行が含まれます。ls -lcrw-rw----+getfacl /dev/bus/usb/001/051

user:admin:rw-

これは、他の権限設定に加えて、ユーザーにadminこのファイルに対する読み取りおよび書き込み権限が付与されることを意味します。

おすすめ記事