次のパラメータを使用してコマンドを呼び出すと:
bob@bob-pc:~$ command -arg1 -arg2
...他のユーザーがコマンドに渡された引数を表示できますか?
答え1
通常、コマンドラインパラメータは誰でも見ることができます。たとえば、OpenBSDでは、root以外のユーザーとしてrootとして実行されているプロセスのパラメータを表示できます。
$ ps -U root -o command= |grep getty |head -n 1
/usr/libexec/getty std.9600 ttyC0
/proc/*/cmdline
Linuxでは、すべてのファイルを誰でも読むことができることがわかります。
コマンドラインパラメータが非公開に保たれる非常に具体的な設定があるかもしれません。例えば、SELinuxとSolarisは他のユーザーからプロセスを隠すことができます。。ただし、この設定にあることを明確に知らない限り、コマンドライン引数が公開されているとします。
答え2
一般的に言えばそうです。彼らはそれを見ることができます。これはw
マニュアルページから得られたものです:
各ユーザーに対して、ログイン名、tty名、リモートホスト、ログイン時間、アイドル時間、JCPU、PCPU、および現在のプロセスのコマンドラインエントリが表示されます。
現在実行中のプロセスの完全なコマンドラインが表示されます。これがコマンドライン引数を介してパスワードなどの項目を提供したくない理由です。
答え3
標準設定ではパラメータが表示されます。 〜のようにすでに言及、プロセスはそれをメモリに上書きすることができますが、他のプロセスがそれを見る機会がある前に上書きすることはできません。
しかし、grsecurityパッチセットプロセス所有者(およびルート)のみがプロセスに渡された引数を表示できるように変更するパッチが含まれています。