O módulo pam_mount permite exportação de pastas compartilhadas pelo Servidor. A utilização do recurso ocorre através da configuração do arquivo correspondente ao módulo referido (
/etc/security/pam_mount.conf).
Esse arquivo apresenta três partes constituintes, com funções correspondentes: a. inicialização de ferramentas, b. montagens automáticas e c. desmontagens. Cada uma das partes tem funções específicas:
a. inicialização:
O mecanismo de inicialização do pam_mount ativa a verificação das ferramentas necessárias à montagem dos possíveis compartilhamentos. Cria o ponto de montagem correspondente (caso não esteja criado), faz as checagens necessárias e lê as opções de configuração correspondentes.
debug 0
mkmountpoint 1
fsckloop /dev/loop7
options_allow nosuid,nodev,loop,encryption,fsck
options_require nosuid,nodev
b. montagens automatizadas:
A chamada do processo de montagem dos compartilhamentos, no arquivo correspondente (
/etc/pam_mount.conf), é realizada em três colunas (ferramenta, path, opções de montagem).
lsof /usr/bin/lsof %(MNTPT)
fsck /sbin/fsck -p %(FSCKTARGET)
losetup /sbin/losetup -p0 "%(before=\"-e\" CIPHER)" "%(before=\"-k\" KEYBITS)" %(FSCKLOOP) %(VOLUME)
unlosetup /sbin/losetup -d %(FSCKLOOP)
cifsmount /bin/mount -t cifs //%(SERVER)/%(VOLUME) %(MNTPT) -o "user=%(USER),uid=%(USERUID),gid=%(USERGID)%(before=\",\" OPTIONS)"
smbmount /usr/bin/smbmount //%(SERVER)/%(VOLUME) %(MNTPT) -o "username=%(USER),uid=%(USERUID),gid=%(USERGID)%(before=\",\" OPTIONS)"
ncpmount /usr/bin/ncpmount %(SERVER)/%(USER) %(MNTPT) -o "pass-fd=0,volume=%(VOLUME)%(before=\",\" OPTIONS)"
smbumount /usr/bin/smbumount %(MNTPT)
ncpumount /usr/bin/ncpumount %(MNTPT)
fusemount /sbin/mount.fuse %(VOLUME) %(MNTPT) "%(before=\"-o\" OPTIONS)"
fuseumount /usr/bin/fusermount -u %(MNTPT)
# volume user smbfs krueger public /home/user/krueger - - -
# volume user ncpfs krueger public /home/user/krueger user=user.context - -
# volume * smbfs krueger homes /home/&/remote dmask=0711 - -
c. desmontagens correspondentes:
Utilizando uma fórmula geral o arquivo determina a desmontagem qualquer ponto de montagem existente.
umount /bin/umount %(MNTPT)
Ajustamos o perfil do Servidor Samba para que seja possível configurar a exportação dos compartilhamentos criados no servidor. A configuração específica de servidor que apresentamos possui os compartilhamentos atribuídos a grupos específicos. Por isso, a criação de compartilhamentos ocorre por intermédio da criação de grupos:
cria_grupo(){
echo -n "Digite o nome do Grupo: " # Incluir grupos no Servidor de domínio
read grupo
echo -n "Digite o caminho do Diretório dos compartilhamentos no Servidor (/dados): "
read base
echo "Criando compartilhamento no Servidor... "
echo -n "Deseja criar o diretório do grupo somente para leitura ? [sim/nao] "
read resp
if [ $resp == sim ];then
sudo groupadd $grupo
echo "Criando compartilhamento somente para leitura... " # Compartilhar somente leitura para
sudo mkdir -p $base/$grupo # os membros do grupo
sudo chgrp -R $grupo $base/$grupo
sudo chmod -R 2750 $base/$grupo
echo "
[$grupo]
path = $base/$grupo
writable = no
browseable = yes
read list = @$grupo
write list = @$grupo
admin users = @$grupo @secinfo" >>/tmp/smb.conf
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.old
sudo cat /tmp/smb.conf >>/etc/samba/smb.conf
echo "Criando compartilhamento sem escrita em $base... "
sleep 2
echo "Exportando compartilhamento sem escrita criado no Servidor..."
echo "
volume * smbfs $servidor $compart ~/$compart uid=&,gid=&,dmask=2750, - -
">/tmp/pam_mount.conf
sudo cat /tmp/pam_mount.conf >>/etc/security/pam_mount.conf
sleep 3
else
sudo groupadd $grupo
echo "Criando compartilhamento para leitura e escrita do grupo... " # Compartilhar leitura/escrita
sudo mkdir -p $base/$grupo # somente para os membros do grupo
sudo chgrp -R $grupo $base/$grupo
sudo chmod -R 2770 $base/$grupo
sudo echo "
[$grupo]
path = $base/$grupo
writable = yes
browseable = yes
read list = @$grupo
write list = @$grupo
admin users = @$grupo @secinfo" >>/tmp/smb.conf
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.old
sudo cat /tmp/smb.conf >>/etc/samba/smb.conf
echo "Criando compartilhamento com escrita em $base... "
sleep 2
echo "Exportando compartilhamento com escrita criado no Servidor..."
echo "
volume * smbfs $servidor $compart ~/$compart uid=&,gid=&,dmask=2770 - -
">/tmp/pam_mount.conf
sudo cat /tmp/pam_mount.conf >>/etc/security/pam_mount.conf
sleep 3
fi
echo -n " Grupo $grupo criado em $base."
sleep 2
}
O código completo do programa em questão poderá ser encontrado na seção de script shell, no programa consamba.sh. Aqui no VOL.
Abraços a todos.