login
Wed 22 of Mar, 2023 (19:35 UTC)

[root@madeira.eng.br ~]#

Linux - It is now safe to turn on your computer

atualizar cache imprimir

Adicionando ACL's em diretórios

Criada por: Frederico Madeira, última modificação em: Mon 26 of Oct, 2009 (02:30 UTC)
Em meu servidor eu rodo o aplicativo TorrentFlux para gerenciar o download dos meus torrents. O problema é que ele tem que rodar com o usuário apache. Desta forma, todo novo arquivo baixado possui o usuário apache como dono. Configurei SGID na pasta onde os arquivos são baixados pelo programa e fiz ele parte do grupo admins no qual o meu usuário faz parte. Mesmo assim, para todo novo arquivo baixado, o meu usuário continua sem permissão de escrita, pois o umask do sistema está configurado para 022 fazendo com que todo novo diretório possa a permissão 0755 e todo novo arquivo 0644. Observe que com isso apenas o dono pode alterar o diretório/arquivos.

A solução para o meu problema foi a adoção de ACL's no meu filesystem. Abaixo descrevo os passo necessários para ativá-lo e configurá-lo em seu linux.



1. Preparação da Partição

Primeiramente precisamos montar a partição onde o diretório em questão se encontra para que possua suporte a ACL's.
No meu caso a partição desejada é a /dev/VolGroup00/LogVol02.
Edite o /etc/fstab e altere a linha

/dev/VolGroup00/LogVol02 /home			ext3	defaults	1 1

para
/dev/VolGroup00/LogVol02 /home			ext3	defaults,acl,user_xattr	1 1


Caso este processo não seja feito, o erro característico é:

setfacl: /home/torrent: Operation not supported.


2. Remontando a Partição

Agora para que você possa fazer uso deste recurso, é necessário remontar a partição para que seja ativo o suporte a ACL. Neste passo um simples reboot resolveria, mas se for um sistema crítico, basta rodar o comando abaixo:

[root@matheus /]# mount -o remount /dev/VolGroup00/LogVol02


Para validar rodamos o comando mount e verificamos os parâmetros da partição em questão:

[root@matheus /]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/mapper/VolGroup00-LogVol02 on /home type ext3 (rw,acl,user_xattr)
/dev/mapper/nvidia_gegjceddp1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)


3. Setando ACL's para seu diretório

Existem dois comandos que utilizamos com ACL's:
setfacl - Atribuir/remover ACL's de arquivos/diretórios
getfacl - Ler os ACL's de arquivos/diretórios

Lendo as permissões do meu diretório, temos:

[root@matheus /]# getfacl /home/torrent
getfacl: Removing leading '/' from absolute path names
# file: home/torrent
# owner: apache
# group: admins
user::rwx
group::r-x
mask::rwx
other::r-x


Vamos agora adicionar o grupo admins com permissão 777 sobre o diretório onde o torrentflux baixa meus arquivos torrent:

setfacl -R -m group:admins:rwx /home/torrent


Vamos ler novamente as permissões:

[root@matheus /]# getfacl /home/torrent
getfacl: Removing leading '/' from absolute path names
# file: home/torrent
# owner: apache
# group: admins
user::rwx
group::r-x
group:admins:rwx
mask::rwx
other::r-x


Desta forma, o grupo geral possui apenas r-x e o grupo adicional (via ACL) possui rwx, resolvendo assim meu problema.

4. Referências:

Unix File and Directory Permissions and Modes
Using ACLs with Fedora Core 2 (Linux Kernel 2.6.5)



Comentários