Cria um usuário que só pode se conectar a um diretório específico

1

Eu criei uma pasta SSH para alguns amigos. Eu criei os usuários para fazer login via SSH, mas eles se conectam a ~ , como eu posso definir em qual pasta eles podem se conectar?

Eu tenho um diretório chamado / usbdrv / que aponta para o meu drive usb.

PS: Eles não podem ir no diretório pai.

    
por Mitro 07.04.2014 / 16:00

2 respostas

1

A definição do diretório pessoal de um usuário determina apenas o diretório onde eles estão por padrão. Os usuários podem ver o restante do sistema de arquivos.

Se você quiser que uma conta seja restrita à transferência de arquivos e tenha acesso somente a uma árvore de diretórios específica, será necessário "prender" esse usuário. Isso é suportado nativamente pelo OpenSSH ; por exemplo, se você colocar esses amigos (e apenas eles) no grupo friends :

Match Group friends
ForceCommand internal-sftp
ChrootDirectory %h
#AuthorizedKeysFile /etc/sshd/friends/%u.authorized_keys

O ChrootDirectory limita esses usuários ao seu diretório inicial. Se todos eles tiverem o mesmo diretório, todos poderão usar as mesmas chaves SSH, que podem não ser o que você deseja. Descomente a linha AuthorizedKeysFile se você não quiser que esses usuários façam upload de suas próprias chaves autorizadas.

Se você quiser tratar esses usuários independentemente de um ponto de vista de autenticação, não quiser que eles sejam capazes de manipular suas chaves e quiser dar a eles acesso à mesma árvore de diretórios, você pode definir um determinado diretório em vez disso:

Match Group friends
ForceCommand internal-sftp
ChrootDirectory /pub

Se você deseja conceder a esses usuários acesso a várias partes do sistema de arquivos, você pode fazer uma visualização combinada usando uma montagem de ligação.

ForceCommand internal-sftp restringe esses usuários ao acesso por SFTP (por exemplo, com o Filezilla ou SSHFS). Se você quiser permitir outros métodos, como rsync, você precisa de um configuração de amador , por exemplo usando rssh (leia o CHROOT guia).

    
por 07.04.2014 / 23:34
1

A menos que você crie os usuários especificamente sem um diretório base, os diretórios padrão são criados em /home/username . O diretório ~ é apenas um link para o local /home/username apropriado do shell atual ou do usuário ssh.

Por exemplo, o comando cd ~ enviará você para lugares diferentes se executado como root ou como um usuário nomeado.

Você pode especificar os diretórios pessoais do usuário durante a criação do usuário ou movê-los para um diretório pessoal diferente . Para alterar o diretório home atual de um usuário, execute o seguinte como root:

usermod -m -d /path/to/new/home/dir username

Apenas certifique-se de ter a propriedade e as permissões corretas na nova estrutura de diretórios.

Você poderia, alternadamente, apenas alterar o diretório padrão ssh . Mas você provavelmente quer mover os diretórios home como isso parece mais seguro IMHO.

    
por 07.04.2014 / 16:22