2010-06-06 12:40:52 +0000 2010-06-06 12:40:52 +0000
50
50

Criar um utilizador SSH que só tem permissão para aceder a pastas específicas

Instalei SSH, mas descobri que se utilizar a minha conta original para entrar no Ubuntu, esta tem demasiadas permissões.

Quero limitar o utilizador a ter apenas permissões para pastas específicas no Ubuntu. Como posso configurar um utilizador deste tipo?

Respostas (2)

53
53
53
2010-06-06 12:49:32 +0000

Isto é simples. Basta criar um novo utilizador com o seu directório home definido para aquele a que precisa de ter acesso (este comando deve ser executado sob sudo ou na shell raiz):

adduser --home /restricted/directory restricted_user

Isto criará um utilizador restricted_user, o directório /restricted/directory e depois as permissões no directório serão definidas para que o utilizador possa escrever para ele. Não terá a capacidade de escrever para qualquer outro directório por defeito.

Se já tiver o directório, pode 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 por exemplo:

chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory

Se precisar de tornar inacessíveis para este utilizador directórios escrevíveis mesmo a nível mundial, existem duas variantes.

1) Se quiser fornecer uma sessão de shell interactiva ao utilizador, então considere seguir este manual ao criar uma cadeia de chroot (no seu /restricted/directory).

Depois disso, adicione o seguinte ao seu sshd_config:

Match user restricted_user
  ChrootDirectory /restricted/directory

2) Se precisar apenas dele para copiar ficheiros entre o seu ponto final de ligação e o seu anfitrião, tudo é muito mais fácil. Adicione estas linhas no final da sua sshd_config:

Match user restricted_user
  ForceCommand internal-sftp
  ChrootDirectory /restricted/directory

Subsystem sftp internal-sftp

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

Depois de reiniciar o seu servidor SSH (não mata sessões interactivas no reinício, por isso é seguro mesmo que tenha configurado mal alguma coisa; também, não fecha a sua sessão em execução antes de ter verificado que ainda é capaz de iniciar sessão), tudo deve funcionar como pretendido.

5
5
5
2017-11-04 02:03:42 +0000

A maneira mais fácil de criar um utilizador restrito que não pode sair do directório dado (por exemplo, para o directório superior, etc.), e que tem um conjunto de comandos limitado/escolhido para utilizar, é utilizar uma Shell Restrita. Ref: http://man.he.net/man1/rbash

Primeiro, criar um symlink chamado rbash (correr como utilizador root).

ln -s /bin/bash /bin/rbash

Depois, basta criar um utilizador normal com esta Shell Restrita, e definir a sua pasta home dir para a pasta desejada:

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

Mesmo sem a Shell Restrita, se não adicionar explicitamente este utilizador à lista do sudoer, ou a quaisquer grupos especiais, então ele será limitado por defeito.

Com a Concha Restrita, o seguinte não é permitido ou não é executado:

  • alterar directórios com cd

  • definir ou desactivar os valores de SHELL, PATH, ENV, ou BASH_ENV

  • especificar nomes de comandos contendo /

  • especificar um nome de ficheiro contendo um / como argumento para o . builtin comando

& - especificando um nome de ficheiro contendo uma barra contendo uma / como argumento para a opção -p para o comando hash builtin

  • importando definições de funções do ambiente shell no arranque

& - analisando o valor de SHELLOPTS do ambiente shell no arranque

  • redireccionando a saída usando o comando >, >, >, >&, &>, e >> redirect- ion operators

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

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

  • usando o comando builtin para activar comandos builtin desactivados

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

  • desligando o modo restrito com o set +r ou set +o restricted.

Estas restrições são aplicadas após qualquer ficheiro de arranque

Além disso/Opcionalmente, para restringir o utilizador a um conjunto de comandos limitado/picado para utilizar, pode criar um .bash_profile apenas para leitura a esse utilizador, com

PATH=$HOME/bin

e symlink quaisquer que sejam os comandos permitidos na pasta ~/bin para esse utilizador:

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

etc.

HTH