Não é possível listar o conteúdo do diretório com 0755 e de propriedade do usuário atual

2

A plataforma é um telefone Android 8.1 enraizado ( Magisk ) com o Termux aplicativo de emulador de terminal para Android e ambiente Linux instalado. Eu uso isso como um servidor em movimento.

Depois de conectar uma leitora de cartão inteligente USB, como root eu posso ver seus arquivos de dispositivo USB muito bem. No entanto, como usuário comum, não consigo ver esses arquivos, mesmo depois de fazer o proprietário do usuário do diretório que o contém:

$ 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

O que está acontecendo aqui?

    
por feklee 20.08.2018 / 09:05

2 respostas

2

Como descobri, provavelmente tem a ver com o SELinux :

$ su
# getenforce
Enforcing

Arquivos regulares podem receber permissão de acesso do usuário comum, como no exemplo a seguir:

$ 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

O simples uso de restorecon e chmod não é suficiente, no entanto, para me dar acesso a /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

Eu não tentei alterar as permissões mais acima no caminho, pois estou preocupado quebrando o sistema.

(Eu suponho que minha explicação está certa. Ainda uma resposta por alguém experiente sobre o SELinux seria legal.)

    
por 23.08.2018 / 12:06
-1

Tudo dentro do

/sys/bus/usb/devices/

Está contendo um link. A permissão padrão do softlink é sempre 777.

Mas o arquivo real localizado dentro

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

é o arquivo real. Você precisa alterar a permissão para 777 na localização real primeiro para permitir que o usuário u0_a88 abra o diretório / arquivos.

    
por 20.08.2018 / 09:36