lshell - Limitando ambiente e comandos a usuários/grupos

Publicado por Gustavo Dorneles de Castro em 19/03/2013

[ Hits: 9.381 ]

 


lshell - Limitando ambiente e comandos a usuários/grupos



Esta dica irá mostrar um exemplo de configuração do lshell, em um sistema Debian Squeeze, para limitar a execução de comandos previamente liberados para um determinado usuário ou grupo, bem como os diretórios aos quais o usuário poderá ter acesso, dentre outras opções relacionadas ao seu ambiente shell.

Instalação do lshell:

# aptitude install lshell

Configuração do lshell - /etc/lshell.conf:

# gedit /etc/lshell.conf

[global]

## Diretório de logs.
## Usuário deve ser membro do grupo lshell.

logpath     : /var/log/lshell/

## Nível de log: 0, 1, 2 ou 3.
loglevel      : 3

## Nome do arquivo de log. (Padrão %u.log. Ex: usuario.log)
logfilename   : %y%m%d-%u

## Configuração padrão. Poderão ser criadas configurações
## separadas para cada usuário ou grupo.
## Ex: [usuariox], [grp:users]

[default]

## Lista de comandos permitidos ao usuário. Use 'all' para permitir
## todos os comandos na variável PATH do usuário.

allowed     : ['ls','echo','cd','ll','date','hora','vim','vi','cat']

## Lista de comandos ou caracteres proibidos.
forbidden     : [';', '&', '|','`','>','<', '$(', '${', 'cat']

## Lista de comandos permitidos quando usados com sudo.
## Devem estar previamente configurados em /etc/sudoers.

sudo_commands    : ['modprobe', 'iptables']

## Número de avisos que o usuário terá antes de ser desconectado
## após tentar entrar em um diretório não permitido ou executar
## um comando da lista 'forbidden'.

warning_counter : 5

## Aliases para comandos. (alias e comando devem estar na lista 'allowed')
aliases     : {'ll':'ls -l', 'vi':'vim', 'hora':'date +%H:%M'}

## Texto a ser exibido ao iniciar o lshell.
intro      : "== Ambiente restrito ==\nDigite '?' ou 'help' para ver a lista de comandos permitidos."

## Tempo máximo de inatividade em segundos antes
## do usuário ser automaticamente desconectado.

timer      : 300

## Lista de pastas as quais poderão ser acessadas pelo usuário.
path      : ['/tmp/','/var']

## Define o diretório home do usuário. Se não especificado,
## sera utilizado o valor da variável de ambiente $HOME.
#home_path    : '/home/usuario/'

## Altera a variável de ambiente PATH do usuário.
#env_path    : ':/usr/local/bin:/usr/sbin'

## Permite ou proíbe o uso de SCP pelo usuário. ( 1 permitir - 0 negar)

scp      : 1

## Permite ou proíbe uploads com SCP ( 1 permitir - 0 negar).
## Parâmetro 'scp' deve possuir valor 1.

scp_upload    : 1

## Permite ou proíbe downloads com SCP ( 1 permitir - 0 negar).
## Parâmetro 'scp' deve possuir valor 1.

scp_download    : 0

## Permite ou proíbe o uso de SFTP ( 1 permitir - 0 negar).
sftp      : 1

## Lista de comandos permitidos através de SSH.
## Ex: ssh usario@host 'ls ~'

overssh      : ['ls','rsync']

## Considerar ou não comandos inválidos como ação proibida, se 1,
## comandos inválidos irão gerar avisos que poderão desconectar
## o usuário, conforme parâmetro 'warning_counter'.

strict      : 0

## Forçar pasta de destino para arquivos enviados por SCP.
scpforce      : "/tmp"

## tamanho máximo do arquivo history.
history_size    : 100

## Nome do arquivo contendo o hipótrico de comandos.
history_file    : "/home/%u/.lshell_history"


Execução do lshell

Para carregar o lshell a partir de uma sessão já existente, execute-o passando como parâmetro o caminho do arquivo de configuração "lshell.conf":

# lshell --config /etc/lshell.conf

Para definir o lshell como shell padrão para um determinado usuário, use o comando usermod ou chsh:

# usermod -s /usr/bin/lshell usuario
Ou:
# chsh -s /usr/bin/lshell usuario

Caso queira habilitar os logs para um determinado usuário, insira-o no grupo "lshell", o qual possui permissão de escrita na pasta /var/log/lshell:

# usermod -aG lshell usuario

Se tiver definido o lshell como shell padrão para um determinado usuário, basta efetuar login com ele e o lshell deverá ser iniciado.

Para mais informações de configuração, verifique o arquivo: /usr/share/doc/lshell/README.gz

Outras dicas deste autor

Vim - Backup de arquivos editados

Leitura recomendada

Estrutura de diretórios para iniciantes

Vivo no Linux com Aiko 82d

Como detectar e prevenir escalada de privilégios no GNU/Linux

Instalando o Atom editor no Funtoo/Gentoo

Servidor de arquivos e instalação silenciosa para técnicos em manutenção usando Debian

  

Comentários
[1] Comentário enviado por tiekookeit em 19/03/2013 - 10:32h

Legal, bom saber que existe, já havia precisado de algo parecido antes tive que fazer gambi.

Valeu!

[2] Comentário enviado por allanbarcelos em 11/12/2013 - 16:50h

sabe como evitar esse erro?

Traceback (most recent call last):
File "/usr/bin/lshell", line 27, in <module>
lshell.main()
File "/usr/lib/pymodules/python2.6/lshell.py", line 1215, in main
userconf = CheckConfig(args).returnconf()
File "/usr/lib/pymodules/python2.6/lshell.py", line 614, in __init__
self.check_scp_sftp()
File "/usr/lib/pymodules/python2.6/lshell.py", line 1113, in check_scp_sftp
os.system(self.conf['ssh'])
File "/usr/lib/pymodules/python2.6/lshell.py", line 584, in _timererror
raise LshellTimeOut, "lshell timer timeout"
lshell.LshellTimeOut: 'lshell timer timeout'



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts