Permitir que o usuário acesse o diretório pessoal de outros usuários

5

Eu tenho um servidor Fedora. Eu criaria uma conta de usuário SFTP que tem permissão para acessar o diretório inicial de outro usuário. É possível? Por exemplo

user1 -> /home/user1
user2 -> /home/user1

user2 pode acessar o sistema em SFTP. Eu crio o user2 com o grupo generic-group e o chrooted:

(no meu / etc / ssh / sshd_config)

AllowUsers user1 user2
Match Group generic-group
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no
  AllowAgentForwarding no
  X11Forwarding no

Quando tento acessar no SFTP o sistema como user2, no / var / log / secure:

Jan 31 11:46:24 perseo sshd[30073]: fatal: bad ownership or modes for chroot directory component "/home/user1/"

Eu também tentei esta regra diferente:

Match Group sftpusers
        ChrootDirectory /sftp/%u
        ForceCommand internal-sftp

e

mount --bind /sftp/user2/ /home/user1

sem sucesso.

    
por giuseppe 31.01.2014 / 12:07

3 respostas

1

Você dá ao usuário1 e ao usuário2 um diretório para compartilhar no servidor remoto? com permissão de gravação em grupo.

O chroot é usado para configurar um ambiente restritivo (um mini sistema de arquivos raiz) e dentro dele um / home / shared_directory poderia ficar.

O primeiro erro é porque você configura o diretório chroot para o diretório inicial do usuário (tudo no chroot deve ser de propriedade de root e não gravável).

O segundo erro que você está definindo o chroot para / sftp / username

Aqui está uma pergunta semelhante.

Usuários SFTP do Chroot que requerem acesso a vários diretórios na mesma pasta pai

    
por 31.01.2014 / 13:27
1

Você não diz isso diretamente na sua pergunta, mas tenho a sensação de que você está tentando configurar um diretório pessoal comum para vários usuários para fins de SFTP. Eu tenho um servidor SFTP corporativo que eu configurei há algum tempo, então compartilharei com você como abordei o problema.

Configuração da conta de usuário

Para usuários que tinham um diretório pessoal compartilhado, eu configurei as contas da seguinte forma:

$ useradd -n -M -s $shell -g $group -d "/home/$homedir" "$uname"

Onde:

  • $shell foi igual a /sbin/nologin
  • $group foi definido para este grupo: sftponly
  • $homedir era o nome do diretório inicial comum
  • $uname é o nome de usuário desse usuário específico.

Configuração do diretório inicial

Eu, então, configuro os diretórios pessoais da seguinte forma:

$ mkdir -m 555 -p "/sftpdata/$homedir"
$ cp -pr /usr/local/bin/skel/. "/sftpdata/$homedir/."

OBSERVAÇÃO: Visto que estes não eram logins totalmente capacitados, mantive um diretório de esqueleto separado com arquivos de ponto básicos que as contas desses usuários precisavam.

Neste ponto, você pode relaxar o diretório home. permissões acima para 775 se você quiser permitir que os usuários gravem dados em seu diretório inicial. Eu configurei para que o usuário tivesse um upload & baixei o diretório, mas eu usei o automounter, autofs desde que seus diretórios home foram montados a partir do nosso NAS.

/etc/auto.master
/home         /etc/auto.cifs_sftp    --timeout=2    --ghost
/etc/auto.cifs_sftp
*   /         -fstype=cifs,ro,noperm,netbiosname=${HOST},file_mode=0444,dir_mode=0555,credentials=/etc/sftpuser_credentials.txt ://NASServer/sftpdata/& \
    /upload   -fstype=cifs,rw,noperm,netbiosname=${HOST},file_mode=0666,dir_mode=0777,credentials=/etc/sftpuser_credentials.txt ://NASServer/sftpdata/&/upload

Estruturando dessa forma autofs estava impedindo que os usuários gravassem no diretório de download, mas permitindo que eles acessassem o diretório de upload. O arquivo de credenciais (deve ser permissões -rw-------. ) teria uma conta com acesso permitido para acessar os compartilhamentos no NAS. Eles geralmente são da forma:

username=dom\user
password=somethingreallylong

Configuração SSH

A última parte da tecnologia que precisamos empregar são algumas modificações no SSH, de modo que, quando o SFTP do usuário estiver em sua conta, ele seja chrooted.

/ etc / ssh / sshd_config
Subsystem   sftp    internal-sftp -f AUTH -l INFO

AllowGroups sftponly

Match   Group sftponly
    ChrootDirectory %h
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no
    PasswordAuthentication yes

Depois, lembre-se de reiniciar o daemon SSH.

$ service sshd restart
    
por 01.02.2014 / 05:30
0

Se você executar o comando chroot user2 e controlá-lo dentro da caixa, por que você não usa o user2 como user1?

Edite seu / etc / passwd e copie o uid do usuário1 para o usuário2.

Dependendo do que você quer, isso pode ser uma solução.

    
por 31.01.2014 / 13:46