Como alterar a saída do comando 'who' e 'w'?

1

Eu não quero que meus usuários vejam as informações de login / ip dos outros, então eu quero alterar a saída quando eles usarem o comando 'who' e 'w' para esconder essa informação - existe uma maneira de fazer isso?

    
por james 28.12.2011 / 13:47

4 respostas

1

Não globalmente, não. Você pode, no entanto, restringir o acesso a /usr/bin/w e colocar um arquivo alternativo como /usr/local/bin/w . Isso pode ser um script simples que chama a ferramenta original com parâmetros e argumentos de filtro e uma instrução setuid .

Coisas como:

w -hus | tr -s ' ' | cut -d' ' -f5-

etc.

    
por 28.12.2011 / 13:54
1

As informações usadas por w e who são mantidas em /var/run/utmp ou /run/utmp (às vezes /etc/utmp em sistemas antigos). Você precisa restringir o acesso de leitura a esse arquivo.

(Não se preocupe em remover os comandos; se você deixar utmp legível, qualquer pessoa poderá obter os endereços com um script de dois minutos.)

No entanto, isso não ocultará os nomes de login de outros usuários. Para isso, você tem que impedir que usuários comuns vejam todos os processos - o que só pode ser feito com tais correções de kernel como grsec . (Se você for conceder acesso a pessoas aleatórias e não confiáveis, o grsec pode ser uma boa ideia, de qualquer maneira.)

Em segundo lugar, se você está indo para a privacidade, você teria que impedir que os usuários listem todas as contas do sistema; isso não pode ser feito com o tradicional Unix /etc/passwd , pois restringir o acesso de leitura a ele quebraria muitas coisas. Em vez disso, você precisaria de um diretório de usuário separado, como sssd , LDAP, talvez algum banco de dados SQL.

    
por 28.12.2011 / 13:57
0

Por padrão, o campo FROM em w é mostrado apenas para raiz e não para usuários 'regulares'. Supondo que seus usuários estejam em contas regulares, eles não devem ver os detalhes que você está vendo. Se a sua versão compilada fizer isso, use a opção -f para suprimir as informações:

w -f

Você pode adicionar isso como um alias para w em perfis de usuários (~ / .bash_profile):

alias w='w -f'
    
por 28.12.2011 / 13:52
0

Você poderia pensar em fornecer aos usuários um shell restrito e configurar um diretório bin especial para eles, em que você tenha empacotado ou versões especiais de "w" e "who". Veja a seção bash manpage RESTRICTED SHELL.

    
por 28.12.2011 / 14:09