Erro de permissionamento por ACL – -????????? ? ? ? ? ?

Bom dia amigos!

   Num belo dia de um sol para cada um no Rio de Janeiro, quando um usuário me pediu que desse permissão a ele para acesso aos logs do servidor para consulta, fui definir uma simples ACL e me deparei com um pequeno problema, que até certo ponto me deixou com pé atrás achando que poderia ser algo pior. Ao aplicar a ACL, efetuar login com o usuário e efetuar um teste, me deparei com um problema que nunca antes tinha visto.

Aplicando a ACL para o usuário:

# setfacl -R -m u:usuario:rx /var/log

Verificando a ACL aplicada:

# getfacl /var/log
getfacl: Removing leading ‘/’ from absolute path names
# file: var/log
# owner: root
# group: root
user::rwx
user:usuario:r-x
group::—
mask::rwx
other::—

   Após efetuei login com o usuário e fiz um teste listando os arquivos e diretórios para ver se a ACL tinha entrado corretamente. Me deparei com isso:

# su – usuario
$ ls -l /var/log
d????????? ? ? ? ?            ? audit
-????????? ? ? ? ?            ? boot.log
-????????? ? ? ? ?            ? boot.log-20111127
-????????? ? ? ? ?            ? boot.log-20111204
-????????? ? ? ? ?            ? boot.log-20111211
-????????? ? ? ? ?            ? btmp
-????????? ? ? ? ?            ? btmp-20151201
d????????? ? ? ? ?            ? ConsoleKit
-????????? ? ? ? ?            ? cron
-????????? ? ? ? ?            ? cron-20131208

   Nesse momento eu gelei e o coração parou (rs….). Pensei comigo, truncou o FS (File System), o HD está morrendo, deu zica no vmx (pois é uma máquina virtualizada), culpa do PT (brincadeirinha) e por aí vai (rs…). Com isso fiquei pensando o que poderia ser e fui checar para ver se o ponto de montagem estava com a opção de ACL ativa. Quando executei o comando abaixo e tive a surpresa.

# mount
/dev/mapper/vg_system-lv_root on / type ext4 (rw,acl,acl)

   Quando vi ACL duas vezes aí não entendi mais nada. Bem, pensei que pudesse ser um bug do SO na hora de exibir a informação. Para fazer um teste resolvi remover todas as ACLs do diretório /var/log (que eram somente desse usuário) e depois listas os mesmos arquivos para validar e ver se as permissões poderiam ser vistas normalmente ou não. Antes fiz um pequeno backup dos permissionamentos, pois se algo desse errado pelo menos poderia recuperar de uma vez e não ficar me matando reparando um por um.

# getfacl -R /var/log > /tmp/perm.acl.var.log.bkp
# setfacl -R -b /var/log
# su – usuario
$ ls -l /var/log
drwxr-xr-x 13 root   root    4.0K Dec 13 03:28 .
drwxr-xr-x. 19 root   root    4.0K Nov 24  2011 ..
drwxr-x—. 2 root   root       4096 Dec 17 13:10 audit
-rw-r–r–  1 root   root       3073 Nov 25 22:13 boot.log
-rw-r–r–  1 root   root       2312 Nov 24  2011 boot.log-20111127
-rw-r–r–  1 root   root          0 Nov 27  2011 boot.log-20111204
-rw-r–r–  1 root   root          0 Dec  4  2011 boot.log-20111211
-rw——-  1 root   utmp       8064 Dec 16 16:48 btmp
-rw——-  1 root   utmp       1152 Nov 25 22:09 btmp-20151201
drwxr-xr-x  2 root   root       4096 Aug  9  2012 ConsoleKit
-rw——-  1 root   root    1015920 Dec 18 08:31 cron
-rw——-  1 root   root     170773 Dec  8  2013 cron-20131208

   Confirmada minha suspeita então parti para a resolução que num primeiro momento era corrigir a opção de ACL no ponto de montagem.

Removendo a opção ACL:

# mount -o remount,defaults /

Readicionando a opção ACL:

# mount -o remount,defaults,acl /

Conferindo para ver se ficou tudo ok:

# mount
/dev/mapper/vg_system-lv_root on / type ext4 (rw,acl)
# setfacl -R -m u:usuario:rx /var/log
# getfacl /var/log
getfacl: Removing leading ‘/’ from absolute path names
# file: var/log
# owner: root
# group: root
user::rwx
user:usuario:r-x
group::—
mask::rwx
other::—

# su – usuario
$ ls -l /var/log
drwxr-xr-x+ 13 root   root    4.0K Dec 13 03:28 .
drwxr-xr-x. 19 root   root    4.0K Nov 24  2011 ..
drwxr-x—+ 2 root   root       4096 Dec 17 13:10 audit
-rw-r–r– + 1 root   root       3073 Nov 25 22:13 boot.log
-rw-r–r–+  1 root   root       2312 Nov 24  2011 boot.log-20111127
-rw-r–r–+  1 root   root          0 Nov 27  2011 boot.log-20111204
-rw-r–r–+  1 root   root          0 Dec  4  2011 boot.log-20111211
-rw——-+  1 root   utmp       8064 Dec 16 16:48 btmp
-rw——-+  1 root   utmp       1152 Nov 25 22:09 btmp-20151201
drwxr-xr-x+  2 root   root       4096 Aug  9  2012 ConsoleKit
-rw——-+  1 root   root    1015920 Dec 18 08:31 cron
-rw——-+  1 root   root     170773 Dec  8  2013 cron-20131208

Sendo assim, o problema foi corrigido, o permissionamento ficou correto e meu coração voltou a bater normalmente.

Espero que com isso possa ajudar outras pessoas assim como me ajudou.

Grande abraço e até a próxima!

Mario Neto

Anúncios