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?
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?
Respostas:
Em geral, sim, eles podem ver. Isto é da w
pá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.
XXXXXXXX
); Eu adoraria saber como. Pode fazer algo esfarrapado, como se bifurcar e passar um argumento falso; Não tenho certeza
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/*/cmdline
arquivos 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.
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.