Para criar um usuário SSH que tenha permissão apenas para acessar pastas específicas

43

Eu instalei o SSH, mas descobri que se eu usar minha conta original para fazer o login no Ubuntu, ele tem permissões demais.

Eu quero restringir o usuário a ter apenas permissões para pastas específicas no Ubuntu. Como posso configurar esse usuário?

    
por Foolish 06.06.2010 / 14:40

2 respostas

44

Isso é simples. Basta criar um novo usuário com seu diretório inicial definido para o que você precisa que ele tenha acesso (este comando deve ser executado em sudo ou no shell de 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. Ele não terá a capacidade de gravar em qualquer outro diretório por padrão.

Se você já tiver o diretório, poderá executar o comando adduser com uma opção --no-create-home 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 inacessíveis até mesmo os diretórios graváveis do mundo para esse usuário, existem duas variantes.

1) Se você deseja fornecer uma sessão de shell interativa ao usuário, considere seguir este manual ao criar um chroot jail (no seu /restricted/directory ).

Depois disso, adicione o seguinte ao seu sshd_config :

Match user restricted_user
  ChrootDirectory /restricted/directory

2) Se você só precisa dele para copiar arquivos entre seu terminal de conexão e seu host, tudo fica 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

Em seguida, comente o Subsystem sftp /usr/lib/openssh/sftp-server colocando um sinal de hash ( # ) no início.

Depois de reiniciar o servidor SSH (ele não mata as sessões interativas na reinicialização, portanto, é seguro mesmo que você tenha configurado algo incorretamente; além disso, não fecha a sessão em execução antes de verificar se você ainda consegue efetuar login) tudo deve funcionar como pretendido.

    
por 06.06.2010 / 14:49
2

A maneira mais fácil de criar um usuário restrito que não pode se desviar do diretório fornecido (por exemplo, para o diretório superior etc) e ter um conjunto de comandos limitado / escolhido para usar, é usar um Shell restrito. Ref:

link

Primeiro, crie um link simbólico chamado rbash (executado como usuário root).

ln -s /bin/bash /bin/rbash

Em seguida, basta criar um usuário normal com esse Shell restrito e definir seu diretório inicial como a pasta desejada:

useradd -s /bin/rbash -d /home/restricted_folder username

Mesmo sem o Shell restrito, se você não incluir explicitamente esse usuário na lista do sudoer ou em grupos especiais, ele será limitado por padrão.

Com o Shell restrito, os seguintes itens não são permitidos ou não são executados:

  • alterando diretórios com cd

  • definindo ou desativando os valores de SHELL, PATH, ENV ou BASH_ENV

  • especificando nomes de comandos contendo /

  • especificando um nome de arquivo contendo um / como um argumento para o.           comando interno

  • Especificando um nome de arquivo contendo uma barra como um argumento para o           Opção -p para o comando hash builtin

  • importando definições de função do ambiente shell em           inicialização

  • analisando o valor de SHELLOPTS no ambiente do shell em           inicialização

  • redirecionando a saída usando as opções & gt ;, > |, < & gt ;, > & > e > > redirecionamento           operadores iônicos

  • usando o comando exec builtin para substituir o shell por outro           comando

  • adicionando ou excluindo comandos incorporados com as opções -f e -d           para o comando enable builtin

  • Usando o comando enable builtin para ativar o shell desativado           builtins

  • especificando a opção -p para o comando comando builtin

  • desativando o modo restrito com o conjunto + r ou conjunto + o restrito.

Estas 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 / escolhido para uso, você pode criar um .bash_profile somente leitura para esse usuário, com

PATH=$HOME/bin

e vincule simbolicamente os comandos que você permitir na pasta ~ / bin para esse usuário:

ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm

HTH

    
por 04.11.2017 / 03:03