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