Problema de permissões na unidade externa ext4

0

Eu me deparei com um erro estranho com permissões com um disco rígido externo que eu anexei ao meu servidor. Eu queria permitir Transmission para baixar torrents para uma pasta sobre ele, mas descobriu que era incapaz de criar diretórios devido a erros de permissão. Eu mesmo testei e verifiquei que o daemon, rodando como usuário transmission , não pode criar diretórios em uma pasta que possui com 755 permissões.
Eu pensei que poderia ser alguma travessura inode estranho, mas um fsck voltou limpo e tudo parece normal.

matoro@matoro-server ~ $ ls -i /run/media/matoro/drive-data
total 40
43253761 drwxr-xr-x  5 matoro       matoro        4096 Apr 11  2017 backup
11796481 drwxr-xr-x  3 matoro       matoro        4096 Oct 28 22:40 iso
37568568 drwxr-xr-x  2 matoro       matoro        4096 Apr 23  2017 pending
42336296 drwxr-xr-x  3 matoro       matoro        4096 Oct 25 01:26 podcasts
38141969 drwxr-xr-x 39 matoro       matoro       12288 Sep 18 22:05 reading
37519377 drwxr-xr-x  3 transmission transmission  4096 Oct 30 17:10 seeding
37490784 drwxr-xr-x  4 matoro       matoro        4096 Oct 30 17:09 videos
42336292 drwxr-xr-x  3 matoro       matoro        4096 Oct 25 01:23 youtube
matoro@matoro-server ~ $ ls -ia /run/media/matoro/drive-data/seeding
total 912160
37519377 drwxr-xr-x  3 transmission transmission      4096 Oct 30 17:10  .
       2 drwxr-xr-x 11 matoro       matoro            4096 Nov  3 14:56  ..
37584902 drwxr-xr-x  3 transmission transmission      4096 Aug 10  2016 'some directory'
37488367 -rw-r--r--  1 transmission transmission 430297088 Aug 14  2016  some_file
matoro@matoro-server ~ $ sudo -u transmission mkdir -v /run/media/matoro/drive-data/seeding/test
mkdir: cannot create directory ‘/run/media/matoro/drive-data/seeding/test’: Permission denied

Aqui estão as opções de montagem relevantes:

/dev/sdc3 on /run/media/matoro/drive-data type ext4 (rw,nosuid,nodev,noexec,noatime,data=ordered,uhelper=udisks2)

O que poderia estar causando isso? Poderia ter algo a ver com as ACLs?

    
por matoro 04.11.2017 / 00:16

1 resposta

2

O comando mkdir deve percorrer a estrutura de diretórios para localizar o diretório existente /run/media/matoro/drive-data/seeding e, em seguida, adicionar uma entrada a ele. As permissões necessárias são:

  1. x permission on /
  2. x permission on /run
  3. x permission on /run/media
  4. x permission on /run/media/matoro
  5. x permission on /run/media/matoro/drive-data
  6. w e x permissão em /run/media/matoro/drive-data/seeding

(e, claro, todos devem ser diretórios, e o que você está criando não deve existir)

Aposto que você está sentindo falta de um desses (provavelmente # 4 ou # 5) Se o processo já tiver /run/media/matoro/drive-data/seeding como seu diretório atual (o que pode acontecer se as permissões do diretório ancestral forem alteradas depois de você entrar no diretório ou se o processo mudar uid), ele poderá mkdir test e ser bem-sucedido apenas com permissão # 6 ( w e x no diretório atual), enquanto mkdir /run/media/matoro/drive-data/seeding/test exigiria todas as permissões x , mesmo que se refira ao mesmo local.

Quando você usa caminhos absolutos ou caminhos relativos com vários componentes, há uma verificação de permissão x em todos os diretórios ancestrais mencionados por você.

    
por 04.11.2017 / 01:24