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

21

Se eu chamar um comando com argumentos assim:

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

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

Nathan Osman
fonte
Uma resposta simples "sim" "não" a esta pergunta contradiz o conteúdo e o título: P
kizzx2 26/02/11
@ kizzx2: corrigido.
bahamat

Respostas:

13

Em geral, sim, eles podem ver. Isto é da wpágina de manual:

As seguintes entradas são exibidas para cada usuário: nome de login, nome do tty, host remoto, tempo de login, tempo ocioso, JCPU, PCPU e a linha de comando do processo atual.

A linha de comando completa do seu processo em execução no momento será exibida. É por isso que você não deseja fornecer coisas como senhas por meio de argumentos de linha de comando.

Jan Hlavacek
fonte
Não há como desativar isso?
Nathan Osman
3
@ George Existe, porque o rdesktop faz isso de alguma forma (o argumento da senha se transforma XXXXXXXX); Eu adoraria saber como. Pode fazer algo esfarrapado, como se bifurcar e passar um argumento falso; Não tenho certeza
Michael Mrozek
13
No Linux, um processo pode substituir a matriz de argumentos passada para ele. Isso é refletido na árvore de processos visível por outros usuários. No entanto, ainda há sempre um momento em que são expostos e podem estar vulneráveis ​​às condições da corrida e aos ataques de tempo.
mattdm
15

Em geral, os argumentos da linha de comando são visíveis para todos. Por exemplo, como usuário não root no OpenBSD, posso ver argumentos de processos em execução 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 /proc/*/cmdlinearquivos 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, o SELinux e o Solaris podem ocultar completamente os processos de outros usuários . Mas, a menos que você saiba absolutamente que está nessa situação, suponha que os argumentos da linha de comando sejam públicos.

Gilles 'SO- parar de ser mau'
fonte
8

Nas 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 que outros processos tenham a chance de vê-los.

No entanto, o conjunto de patches grsecurity inclui um patch que o altera para que apenas o proprietário do processo (e raiz) possa ver os argumentos passados ​​para um processo.

Maciej Piechotka
fonte