[unix] 다른 사용자가 명령에 전달 된 인수를 볼 수 있습니까?

다음과 같은 인수로 명령을 호출하면

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

… 다른 사용자가 명령에 전달 된 인수를 볼 수 있습니까?



답변

일반적으로 그렇습니다. 이것은 w맨 페이지 에서 온 것입니다 .

각 사용자에 대해 로그인 이름, tty 이름, 원격 호스트, 로그인 시간, 유휴 시간, JCPU, PCPU 및 현재 프로세스의 명령 행 항목이 표시됩니다.

현재 실행중인 프로세스의 전체 명령 줄이 표시됩니다. 그렇기 때문에 명령 줄 인수를 통해 암호와 같은 것을 제공하고 싶지 않습니다.


답변

일반적으로 명령 행 인수는 모두에게 표시됩니다. 예를 들어, OpenBSD에서 루트가 아닌 사용자로서 루트로 실행되는 프로세스의 인수를 볼 수 있습니다.

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

Linux에서는 모든 /proc/*/cmdline파일을 읽을 수 있음을 알 수 있습니다.

명령 행 인수가 개인용으로 유지되는 매우 구체적인 설정이있을 수 있습니다. 예를 들어 SELinux와 Solaris는 다른 사용자로부터 프로세스를 숨길 수 있습니다 . 그러나 당신이 그런 설정에 있다는 것을 절대적으로 알지 못한다면 명령 줄 인수가 공개라고 가정하십시오.


답변

표준 설정에서는 인수가 표시됩니다. 로서 이미 언급 , 프로세스는 메모리에 덮어 쓸 수 있지만 다른 프로세스를 볼 수있는 기회가하지 전에.

그러나 grsecurity 패치 세트 에는 패치를 변경하는 패치가 포함되어있어 프로세스 소유자 (및 루트)만이 프로세스에 전달 된 인수를 볼 수 있습니다.


답변