Criar um usuário remoto apenas no OS X?

15

Gostaria de criar um usuário no OS X que possua privilégios de login ssh remoto, onde eles possam acessar uma determinada pasta / caminho / para / the / goods / e adicionar / modificar / excluir arquivos manualmente ou via rsync enquanto o restante do Mac está fora dos limites (fora do diretório inicial).

Idealmente, o usuário não deve ter acesso para executar outros programas além do rsync.

Esse usuário será usado apenas por um servidor de compilação para efetuar login e implantar arquivos. Eu quero usar um par de chaves pública / privada para que o script de construção não exija entrada de senha.

Como posso fazer isso?

chrisan
fonte

Respostas:

8

A melhor maneira de fazer isso é criar uma prisão chroot para o usuário. Limparei a resposta aqui quando chegar em casa, mas postei a solução no meu blog.

https://thefragens.com/chrootd-sftp-on-mac-os-x-server/

Abaixo estão a maioria das instruções do post acima.

Primeiro, você deve criar o novo usuário no Admin do grupo de trabalho e atribuir a eles privilégios de acesso ao SSH por meio do Server Admin ou atribuí-los a um grupo que tenha privilégios de acesso ao SSH. Discussões adicionais estão abaixo.

Do terminal, comece à direita.

sudo cp /etc/sshd_config /etc/sshd_config.bkup

sudo chown root /
sudo chmod 755 /
sudo mkdir -p /chroot/user/scratchpad
sudo chown -R root /chroot
sudo chown user /chroot/user/scratchpad
sudo chmod -R 755 /chroot

Cada novo usuário adicional adicionado será algo parecido com o seguinte.

sudo mkdir -p /chroot/user2/scratchpad
sudo chown root /chroot/user2
sudo chown user2 /chroot/user2/scratchpad
sudo chmod -R 755 /chroot/user2

Cada pasta no caminho para a cadeia chroot deve pertencer a root. Acho que não importa em que grupo a pasta está. O que fiz acima foi

  1. cópia de segurança /etc/sshd_config
  2. altere a propriedade do diretório raiz para root
  3. altere as permissões do diretório raiz para 755
  4. crie uma pasta chroot
  5. crie uma pasta de usuário dentro da pasta chroot
  6. crie uma pasta dentro da pasta do usuário que o usuário possa modificar
  7. definir propriedade e permissões

Agora, edite /etc/sshd_configpara o seguinte.

#Subsystem  sftp    /usr/libexec/sftp-server
Subsystem   sftp    internal-sftp

Match User user
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    ChrootDirectory /chroot/user

Isso cria uma prisão chroot que, quando o usuário efetuar login, os soltará na pasta /chroot/user, nessa pasta haverá uma pasta na qual eles poderão ser adicionados /chroot/user/scratchpad.

Se você deseja criar um grupo no Admin do grupo de trabalho para 'Usuários chroot', adicione os novos usuários que você criou no Admin do grupo de trabalho ao grupo, não precisará editar o /etc/sshd_configarquivo. Em vez do acima, adicione o seguinte. Certifique-se de adicionar o grupo 'Usuários Chroot' à ACL de acesso SSH no Server Admin.

Match Group chrootusers
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    ChrootDirectory /chroot/%u

Para testar se o procedimento acima está funcionando, emita o seguinte no terminal.

$ sftp [email protected]
Password:
sftp>
afragen
fonte
Apenas resolvendo meus próprios problemas e documentando, caso precise fazê-lo novamente. ;-)
afragen