Usando o autofs para montar sob o diretório home de cada usuário

4

(crosspost de SF, onde eu não estava recebendo muita alegria)

Eu tenho uma caixa do CentOS 6.2 em funcionamento e configurei o autofs para automontar os compartilhamentos do Windows em uma pasta / mydomain, usando vários howtos na internet. Especificamente, eu tenho três arquivos:

/etc/auto.master

# ...
/mydomain   /etc/auto.mydomain --timeout=60
# ...

/etc/auto.mydomain

* -fstype=autofs,-DSERVER=& file:/etc/auto.mydomain.sub

/etc/auto.mydomain.sub

* -fstype=cifs,uid=${UID},gid=${EUID},credentials=${HOME}/.smb/mydomain ://${SERVER}/&

Isso funciona e permite que cada usuário especifique suas próprias credenciais em um arquivo em seu diretório pessoal.

No entanto, as montagens criadas por eles ficam disponíveis para todos, com as credenciais do usuário original, até que o tempo limite seja atingido. Isso é menos do que ideal, então estou tentando fazer um dos seguintes:

  1. Configure o autofs para que as montagens sejam locais para cada usuário, mas sob o mesmo caminho, para que cada um possa acessar simultaneamente /mydomain/server1 com suas próprias credenciais
  2. Configure o autofs para que os pontos de montagem fiquem na pasta inicial de cada usuário, para que eles possam acessar simultaneamente ~/mydomain/server1 com suas próprias credenciais
  3. Configure o autofs para que as montagens fiquem sob uma pasta nomeada pelo usuário, para que possam acessar /mydomain/$USER/server1 simultaneamente com suas próprias credenciais (mas também preciso garantir que /mydomain/$USER seja 0700 para o USUÁRIO $ fornecido)

Até agora, não vejo nenhum modo de fazer o # 1, mas, para o # 2 ou # 3, tentei alterar a entrada em /etc/auto.master para que a chave seja ${HOME}/mydomain ou /mydomain/${USER} , mas nenhum deles funcionou (o primeiro não mostrou nenhuma entrada correspondente em /var/log/messages e o segundo não pareceu fazer a substituição de variável).

Eu estou sentindo falta de algo óbvio?

(PS: Bonus adereços se você puder fornecer uma maneira de evitar a necessidade de um arquivo de credenciais de texto simples - talvez um prompt direto para nome de usuário / domínio / senha, ou talvez até mesmo alguma magia de kerberos?)

(PPS: Eu olhei brevemente para smbnetfs , mas eu não consegui configurar / make-it pergunta por fuse >= 2.6 mesmo que eu tenha v2.8.3 de acordo com fusermount --version - e eu não consegui encontrar uma versão liberada para yum install )

(PPPS: também observei brevemente o /etc/auto.smb fornecido, mas parecia que ele sofreria os mesmos problemas de compartilhamento?)

    
por jimbobmcgee 08.01.2013 / 02:54

3 respostas

4

Eu trabalhei muito com autofs e montei vários tipos diferentes de recursos usando-o. Você pode conferir a página de manual para autofs , que responde a algumas de suas perguntas se você puder manter isso em mente quando estão se referindo a $USER na documentação, estão se referindo ao usuário que está executando o daemon autofs . Estas são as variáveis que você recebe por padrão:

Variable Substitution

The following special variables will be substituted in the key and location fields of an automounter map if prefixed with $ as customary from shell scripts (Curly braces can be used to separate the field name):
ARCH    Architecture (uname -m)
CPU    Processor Type
HOST    Hostname (uname -n)
OSNAME    Operating System (uname -s)
OSREL    Release of OS (uname -r)
OSVERS    Version of OS (uname -v)
autofs provides additional variables that are set based on the user requesting the mount:

USER    The user login name
UID    The user login ID
GROUP    The user group name
GID    The user group ID
HOME    The user home directory
HOST    Hostname (uname -n)
Additional entries can be defined with the -Dvariable=Value map-option to automount(8).

Você provavelmente se sentiria tentado a usar o -DUSER=$USER , mas isso só definiria $USER dentro do arquivo autofs map para o usuário que iniciou o daemon autofs . O daemon geralmente é de propriedade de um usuário como root ou um usuário chrooted configurado especificamente para autofs .

NOTA # 1: um arquivo autofs é composto por key e value . As variáveis só são permitidas para uso na parte value de uma entrada.

OBSERVAÇÃO # 2: Se a opção -D=... não substituir uma variável incorporada, $USER ou $UID conteria o valor da pessoa $USER & $UID que está acessando a montagem.

Limitando o acesso ao compartilhamento CIFS

Com relação à sua pergunta sobre como limitar o acesso a uma CIFS mount, não vejo uma maneira de realizar isso com autofs .

As credenciais usadas para montar um compartilhamento CIFS são usadas durante todo o período em que o compartilhamento é montado. Com efeito, autofs , executando o daemon automount como diz root , é "equivalente" às credenciais do usuário CIFS .

Isso não é o que eu consideraria comportamento típico para autofs e é um subproduto do uso de mount.cifs . O comportamento típico de autofs respeitaria as permissões na outra extremidade da montagem, enquanto que com mount.cifs isso não aconteceria.

Linha de fundo

Acho que você está sem sorte realizando sua configuração usando o autofs. Acho que você terá que usar fuse se realmente quiser que cada usuário acesse CIFS compartilhamentos usando suas próprias credenciais.

    
por 08.01.2013 / 05:02
1

Você pode forçar as permissões definidas na montagem CIFS com as opções file_mode e dir_mode , em conjunto com a configuração uid=${USER} que você já estava usando, fornecendo uma linha de mapa de automontagem com algo como isto:

* -fstype=cifs,uid=${UID},gid=${EUID},file_mode=0600,dir_mode=0700,credentials=${HOME}/.smb/mydomain ://${SERVER}/&

O sistema de arquivos montado será propriedade do usuário e as permissões serão definidas para impedir o acesso a todos os outros usuários. Eu apenas tentei isso e parece funcionar bem:)

Você pode querer definir file_mode=0700 se houver arquivos executáveis que você espera poder executar armazenados no compartilhamento. Meu exemplo remove a permissão de execução, pois esse era o comportamento que eu queria.

Observação: essa opção pode não ter existido no momento em que a pergunta foi feita, mas acontece agora!

    
por 28.03.2017 / 14:15
0

Usando o Samba:

Em /etc/auto.home :

*       -fstype=cifs,credentials=/etc/smbcreds.& ://MYSERVERIP/homes

Você precisará armazenar todos os usuários e senhas em um arquivo independente /etc/smbcreds

A última parte da linha será montada via samba.

Usando o NFS:

Em /etc/auto.home: (para NFS)

*       MYSERVERIP:/home/&
    
por 15.10.2015 / 16:39

Tags