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

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

[ Hits: 9.426 ]

 


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

ShellBot - API em shell script para criação de bots no Telegram

Openfire Autenticando no Active Directory

Tamanho da fonte no XTerm

Definição de senha para uma página da web

Solução para travamento na instalação do Ubuntu10.10 (notebooks e netbooks)

  

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