Não é assim que você aborda o problema. Depois de conceder acesso ao shell a um usuário, você está confiando a ele que faça tudo o que ele / ela tiver as permissões apropriadas. Esqueça o log de comandos, existem muitas maneiras de executar um comando em qualquer sistema Unix.
Por exemplo, o usuário pode iniciar um cliente de email (o único comando registrado é pine
, por exemplo); nele, ele seleciona "Compor", que inicia o VI e, a partir do VI, ele lança qualquer comando que desejar :!cmd
. Este comando não é registrado em nenhum lugar e, do ponto de vista do sistema, é como qualquer aplicativo auxiliar chamado pelo VI, como grep ou sort. O único comando registrado pelo shell foi pine
.
Parece que o que você realmente deseja é chamado de auditoria . Ative o subsistema de auditoria e use o auditctl
comando e o auditd
daemon do pacote de auditoria para controlar o que está registrado. Mais informações estão na página do manual auditctl (8) .
Observe que o registro de todas as instâncias do processo também pode não ser o ideal. Por exemplo, o simples ./configure
para um pacote de software (criado usando ferramentas automáticas) é notável por criar milhares de instanciações de processo. Isso inundará o registro de auditoria com tanto ruído que se torna muito difícil analisá-lo mais tarde.
Parece-me que você está procurando algo como rootsh ( página de manual ). Para citar a página do manual:
Apesar do nome, isso pode ser usado para qualquer usuário.
fonte
Provavelmente é melhor ter usuários usando o sudo (ou similar) para executar comandos importantes e confiar nos usuários em algum nível. À medida que você se aproxima de "controlar totalmente" as coisas, mais difícil é rastrear o que elas estão fazendo. Recentemente, estive analisando ferramentas como essa, por exemplo. Principalmente, eles apenas criam logs que são difíceis de gerenciar se você tiver usuários e máquinas suficientes para fazer isso valer a pena. :)
Considere todas as informações que você estará gerando. Quanto disso você se importa? Provavelmente muito pouco - então você está gerando logs que geralmente não têm valor. Auditar as coisas com as quais você realmente se importa, como os outros sugerem, provavelmente leva você a um estado final melhor.
fonte
O Bash pode ser compilado com suporte ao syslog desde o 4.1.
Não é infalível (a contabilidade do processo pode ser melhor para isso), mas é principalmente a interação do usuário; o volume deve ser mais gerenciável e você poderá mudar para algo mais detalhado se suspeitar de algo anormal.
Dito isto, isso é muito invasivo e, como usuário, eu esperaria um aviso de privacidade muito específico antes de você começar a fazer isso.
fonte
Também há sudosh ( http://sudosh.sourceforge.net ) que fará o registro da sessão. Você tem a opção de executá-lo como um shell definido para um usuário ou através do sudo. Também rastreia os tempos de cada sessão, para que você possa reproduzi-la e assisti-la (incluindo editar sessões e outros enfeites).
fonte