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

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

다음과 같은 매개변수를 사용하여 명령을 호출하면:

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

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

답변1

일반적으로 명령줄 매개변수는 모든 사람이 볼 수 있습니다. 예를 들어, OpenBSD에서 루트가 아닌 사용자로서 루트로 실행되는 프로세스의 매개변수를 볼 수 있습니다.

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

/proc/*/cmdlineLinux에서는 모든 파일을 누구나 읽을 수 있다는 것을 알 수 있습니다 .

명령줄 매개변수가 비공개로 유지되는 매우 구체적인 설정이 있을 수 있습니다. 예를 들어,SELinux와 Solaris는 다른 사용자로부터 프로세스를 숨길 수 있습니다.. 그러나 이 설정에 있다는 사실을 확실히 알지 않는 한 명령줄 인수가 공개라고 가정하십시오.

답변2

일반적으로 말하면 그렇습니다. 그들은 그것을 볼 수 있습니다. 이것은 w매뉴얼 페이지에서 가져온 것입니다:

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

현재 실행 중인 프로세스의 전체 명령줄이 표시됩니다. 이것이 명령줄 인수를 통해 비밀번호와 같은 항목을 제공하고 싶지 않은 이유입니다.

답변3

표준 설정에서는 매개변수가 표시됩니다. ~처럼이미 언급됨, 프로세스는 이를 메모리에 덮어쓸 수 있지만 다른 프로세스가 이를 볼 기회를 갖기 전에는 덮어쓸 수 없습니다.

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

관련 정보