다음과 같은 인수로 명령을 호출하면
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 패치 세트 에는 패치를 변경하는 패치가 포함되어있어 프로세스 소유자 (및 루트)만이 프로세스에 전달 된 인수를 볼 수 있습니다.