Isto é simples. Basta criar um novo usuário com o diretório inicial definido como aquele ao qual você precisa que ele tenha acesso (este comando deve ser executado sudo
no shell raiz ou no root):
adduser --home /restricted/directory restricted_user
Isso criará um usuário restricted_user
, o diretório /restricted/directory
e as permissões no diretório serão definidas para que o usuário possa gravar nele. Por padrão, ele não poderá gravar em nenhum outro diretório.
Se você já possui o diretório, pode executar o adduser
comando com uma --no-create-home
opção anexada e definir permissões manualmente (também com privilégios de root), como:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Se você precisar tornar os diretórios graváveis em todo o mundo inacessíveis para esse usuário, existem duas variantes.
1) Se você deseja fornecer uma sessão shell interativa ao usuário, considere seguir este manual sobre a criação de uma prisão chroot (na sua /restricted/directory
).
Depois disso, adicione o seguinte ao seu sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Se você precisar apenas copiar arquivos entre o ponto final de conexão e o host, tudo será muito mais fácil. Adicione estas linhas no final do seu sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Comente o comentário Subsystem sftp /usr/lib/openssh/sftp-server
colocando um #
sinal de hash ( ) no início.
Depois de reiniciar o servidor SSH (ele não interrompe sessões interativas na reinicialização, por isso é seguro, mesmo que você tenha configurado algo errado; além disso, não fecha a sessão em execução antes de verificar se ainda é capaz de efetuar login), tudo deve funcionar como pretendido.
Subsystem sftp internal-sftp
linha no seu segundo exemplo acima doMatch
bloco. Caso contrário, o ssh imprimirá um erro e não será iniciado.A maneira mais fácil de criar usuário restrito que não pode se desviar do diretório especificado (por exemplo, para o diretório superior etc) e ter um conjunto de comandos limitado / escolhido para usar, é usar um Shell Restrito. Ref:
http://man.he.net/man1/rbash
Primeiro, crie um link simbólico chamado
rbash
(execute como usuário root).Em seguida, basta criar um usuário normal com este Shell restrito e defina seu diretório inicial na pasta desejada:
Mesmo sem o Shell Restrito, se você explicitamente não adicionar esse usuário à lista de sudoers ou a nenhum grupo especial, ele será limitado por padrão.
Com o Shell restrito, o seguinte não é permitido ou não é executado:
alterando diretórios com cd
definindo ou desabilitando os valores de SHELL, PATH, ENV ou BASH_ENV
especificando nomes de comandos que contêm /
especificando um nome de arquivo contendo um / como argumento para. comando embutido
Especificando um nome de arquivo que contém uma barra como argumento para a opção -p para o comando hash builtin
Importando Definições de Função do Ambiente Shell na Inicialização
analisando o valor de SHELLOPTS do ambiente shell na inicialização
redirecionando a saída usando os operadores de redirecionamento>,> |, <>,> &, &>, e >>
usando o comando exec builtin para substituir o shell por outro comando
adicionando ou excluindo comandos internos com as opções -f e -d ao comando enable builtin
Usando o comando enable builtin para ativar os buildins de shell desativados
especificando a opção -p para o comando builtin command
desativar o modo restrito com set + r ou set + o restrito.
Essas restrições são aplicadas após qualquer arquivo de inicialização
Além disso / Opcionalmente, para restringir o usuário a um conjunto de comandos limitado / selecionado a ser usado, você pode criar um .bash_profile somente leitura para esse usuário, com
e faça o link simbólico dos comandos que você permitir na pasta ~ / bin para esse usuário:
etc.
HTH
fonte