이 파일을 열 수 있는 이유는 무엇입니까?

이 파일을 열 수 있는 이유는 무엇입니까?

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의 출력에는 다음 한 줄이 포함됩니다.ls -lcrw-rw----+getfacl /dev/bus/usb/001/051

user:admin:rw-

이는 다른 권한 설정 외에도 사용자에게 admin이 파일에 대한 읽기 및 쓰기 권한이 부여됨을 의미합니다.

관련 정보