O shell bash entra em um
modo restrito (quando chamado
rbash
) que impede que os usuários - entre outras coisas - alterem PATH
ou alterando o diretório atual com cd
; acoplando isso com o
restrição de controle de acesso fornecida por grupos do UNIX, você pode restringir
usuários visualizem apenas arquivos em um determinado diretório.
Eu implementaria assim:
-
Crie grupos
A
,B
, etc. - cada grupo pode ler (mas não escrever ) o diretório correspondente e os arquivos de log:$ ls -lF /var/log/syslog-ng drwxr-x--- root A ... A/ drwxr-x--- root B ... B/ [...] $ ls -l /var/log/syslog-ng/A/ -rwxr----- root A ... logfile.log -rwxr----- root A ... logfile.log.1 [...]
-
Modifique
/etc/group
e adicione usuários a esses grupos de acordo com o registros que você quer que eles leiam:$ tail /etc/group [...] A: foo B: bar
-
Crie um diretório para hospedar os comandos aos quais você deseja dar acesso os visualizadores de log; vamos supor que seja
/usr/local/restricted/bin
. Copie ou associe os comandos relevantes a este diretório. -
Modifique
/etc/profile
para que você configure oPATH
correto para o usuários restritos: o PATH restrito deve incluir apenas/usr/local/restricted/bin
(ou qualquer outro diretório que hospede comandos restritos "seguros"). -
Modifique
/etc/passwd
e verifique se os usuários recebem o login shellrbash
e o diretório/var/log/syslog-ng/XXX
relevante como casa. Eles podem agora entrar, mas são presos no diretório home e só pode usar comandos no PATH restrito.
Nota: É fácil contornar o shell do modo restrito se você fornecer acesso a comandos que permitem aos usuários exec um comando arbitrário, por exemplo, PERL ou quase qualquer editor.