Montar compartilhamentos CIFS como não-raiz no RHEL7 sem área de trabalho

5

Temos um domínio Windows (AD) ao qual um servidor RHEL / CentOS 7 se uniu (SSSD / realmd). Os usuários efetuam login no servidor via SSH com suas credenciais do AD. Agora os usuários devem conseguir montar alguns dos seus compartilhamentos do Windows no servidor RHEL. No entanto, eu quero evitar conceder a todos os usuários direitos sudo para (u) montar e configurar o sinalizador SUID para (u) mount.

Eu descobri o comando gvfs-mount que parece ser o que eu preciso, então fui em frente e instalei os pacotes necessários. Como o aplicativo precisa ter acesso a uma sessão DBus, a variável DBUS_SESSION_BUS_ADDRESS precisa ser exportada. Para poder iniciar um DBus-Daemon ( dbus-launch ), instalei o pacote dbus-x11 .

Executando os comandos

export $(dbus-launch)
gvfs-mount smb://DOMAIN\;USER@HOST/SHARE

monta o compartilhamento com sucesso.

Meu pensamento inicial foi apenas colocar a primeira linha no .bash_profile . Existem, no entanto, dois grandes problemas relacionados a essa solução:

  1. Toda vez que alguém faz login, uma nova instância de dbus-daemon é criada e não é eliminada no logout. Pior ainda, o pacote dbus-x11 instalou o script /etc/X11/xinit/xinit.rc.d/00-start-message-bus.sh que inicia já uma instância por login, mas como obtenho a variável de endereço?
  2. Se o usuário esquecer de desmontar o compartilhamento, ele não poderá ser desmontado em um login posterior, pois a variável de endereço é desconhecida.

Idealmente, o dbus-daemon deve ser iniciado no login e a variável de endereço deve ser exportada. Quando a sessão SSH é finalizada (o logout é opcional), todos os compartilhamentos que ainda estão montados devem ser desmontados e o daemon deve ser eliminado. Como faço isso de uma maneira elegante?

Relacionado, mas antigo e essencialmente não respondido: Reutilizar D-Bus sessões através de sessões de login

    
por sven 20.01.2016 / 17:11

1 resposta

2

Em vez de usar gvfs-mount , que é realmente destinado a trabalhar em um login gráfico, eu consegui fazer isso usando o autofs.

Eu só tenho um arquivo de configuração do autofs em /etc/auto.master.d/ chamado winhome.autofs (ele tem que terminar com .autofs), e é algo como isto:

/winhome -fstype=cifs,sec=krb5,uid=&,user=&,cruid=& ://sharename/&

Contanto que você tenha sssd configurado para obter um tíquete kerberos, ele usará esse tíquete para montar automaticamente o volume \ sharename \ username quando o usuário abrir esse diretório (usando um aplicativo gráfico ou por meio do shell).

    
por 23.01.2016 / 04:43