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의 출력에는 다음 한 줄이 포함됩니다.ls -l
crw-rw----+
getfacl /dev/bus/usb/001/051
user:admin:rw-
이는 다른 권한 설정 외에도 사용자에게 admin
이 파일에 대한 읽기 및 쓰기 권한이 부여됨을 의미합니다.