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
ユーザーとグループだけがアクセスできるにもかかわらず、ファイルを正常に読み書きしています。root
audio
open
どうなりますか?なぜ私はそれを得ることができないのですか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 -l
crw-rw----+
getfacl /dev/bus/usb/001/051
user:admin:rw-
これは、他の権限設定に加えて、ユーザーにadmin
このファイルに対する読み取りおよび書き込み権限が付与されることを意味します。