Outros usuários podem visualizar os argumentos passados para um comando?

21

Se eu invocar um comando com argumentos assim:

bob@bob-pc:~$ command -arg1 -arg2

... outros usuários podem ver os argumentos passados para o comando?

    
por Nathan Osman 26.02.2011 / 00:17

3 respostas

13

Em geral sim, eles podem ver isso. Esta é a partir da página w man:

The following entries are displayed for each user: login name, the tty name, the remote host, login time, idle time, JCPU, PCPU, and the com‐ mand line of their current process.

A linha de comando completa do seu processo atualmente em execução será exibida. É por isso que você não quer fornecer coisas como senhas através de argumentos de linha de comando.

    
por 26.02.2011 / 00:31
15

Em geral, os argumentos da linha de comando são visíveis para todos. Por exemplo, como um usuário não-root no OpenBSD, eu posso ver argumentos de processos rodando como root:

$ ps -U root -o command= |grep getty |head -n 1
/usr/libexec/getty std.9600 ttyC0

No Linux, você notará que todos os arquivos /proc/*/cmdline são legíveis pelo mundo.

Pode haver configurações altamente específicas nas quais os argumentos da linha de comando permanecem privados. Por exemplo, SELinux e Solaris podem, no geral, ocultar processos de outros usuários . Mas, a menos que você absolutamente saiba que está nessa configuração, suponha que os argumentos da linha de comando sejam públicos.

    
por 26.02.2011 / 00:38
8

Em configurações padrão, os argumentos são visíveis. Como já mencionado , os processos podem substituí-los na memória, mas não antes de outros processos terem a chance de vê-los.

No entanto, o patchset do grsecurity inclui um patch que o altera para que somente o proprietário do processo (e o root) possa ver os argumentos passados para um processo .

    
por 26.02.2011 / 02:00