현재 사용자가 소유한 0755 디렉터리의 내용을 나열할 수 없습니다.

현재 사용자가 소유한 0755 디렉터리의 내용을 나열할 수 없습니다.

플랫폼은 루팅된 Android 8.1 휴대폰입니다(마지스크)그리고테먹스 Android 터미널 에뮬레이터 및 Linux 환경 애플리케이션설치하다. 모바일 서버로 사용하고 있습니다.

USB 스마트 카드 리더를 연결한 후 루트로서 USB 장치 파일을 정상적으로 볼 수 있습니다. 그러나 일반 사용자로서 사용자를 포함 디렉터리의 소유자로 만든 후에도 이러한 파일을 볼 수 없습니다.

$ whoami
u0_a88
$ ls -l /sys/bus/usb/devices
ls: cannot open directory '/sys/bus/usb/devices': Permission denied
$ ls -ld /sys/bus/usb/devices
drwxr-xr-x 2 root root 0 Aug 20 08:48 /sys/bus/usb/devices
$ su
# whoami
root
# ls -l /sys/bus/usb/devices/
total 0
lrwxrwxrwx 1 root root 0 Aug 20 08:49 1-0:1.0 -> ../../../devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb1/1-0:1.0
lrwxrwxrwx 1 root root 0 Aug 20 08:49 1-1 -> ../../../devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb1/1-1
lrwxrwxrwx 1 root root 0 Aug 20 08:49 1-1:1.0 -> ../../../devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb1/1-1/1-1:1.0
lrwxrwxrwx 1 root root 0 Aug 20 08:49 2-0:1.0 -> ../../../devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb2/2-0:1.0
lrwxrwxrwx 1 root root 0 Aug 20 08:49 usb1 -> ../../../devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb1
lrwxrwxrwx 1 root root 0 Aug 20 08:49 usb2 -> ../../../devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/usb2
# chown u0_a88.u0_a88 /sys/bus/usb/devices
# exit
$ ls -ld /sys/bus/usb/devices
drwxr-xr-x 2 u0_a88 u0_a88 0 Aug 20 08:54 /sys/bus/usb/devices
~$ ls -l /sys/bus/usb/devices
ls: cannot open directory '/sys/bus/usb/devices': Permission denied

여기서 무슨 일이 일어나고 있는 걸까요?

답변1

내가 찾은 한, 이것은 다음과 관련이 있을 수 있습니다.SELinux:

$ su
# getenforce
Enforcing

다음 예와 같이 일반 파일에 일반 사용자 액세스 권한을 부여할 수 있습니다.

$ su
# echo foo >bar
# exit
$ cat foo
cat: bar: Permission denied
$ su
# ls -Z bar
u:object_r:app_data_file:s0 bar
# restorecon bar
SELinux: Loaded file_contexts
# ls -Z bar
u:object_r:app_data_file:s0:c512,c768 bar
# chown u0_a88.u0_a88 bar
# exit
$ cat bar
foo

그러나 단지 restoreconand를 사용하는 것만 chmod으로는 다음 항목에 액세스할 수 없습니다 /sys/bus/usb/devices.

# restorecon /sys/bus/usb/devices
# chown u0_a88.u0_a88 /sys/bus/usb/devices
# ls -Zd /sys/bus/usb/devices
u:object_r:sysfs:s0
# exit
$ ls -ld /sys/bus/usb/devices
drwxr-xr-x 2 u0_a88 u0_a88 0 Aug 23 11:49 /sys/bus/usb/devices
$ ls -l /sys/bus/usb/devices
ls: cannot open directory '/sys/bus/usb/devices': Permission denied

시스템이 망가질까 걱정되어 경로 위의 권한을 변경하려고 시도하지 않았습니다.

(제 설명이 맞는 것 같습니다. SELinux를 아시는 분께서 답변해주시면 좋을 것 같습니다.)

답변2

내부의 모든 것

/sys/버스/USB/장치/

소프트 링크가 포함되어 있습니다. 소프트 링크의 기본 권한은 항상 777입니다.

하지만 실제 파일은 그 안에 있습니다

/devices/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.0.auto/

실제 문서입니다. 사용자 u0_a88이 디렉터리/파일을 열려면 먼저 실제 위치의 권한을 777로 변경해야 합니다.

관련 정보