次のような引数を使用してコマンドを呼び出すと、次のようになります。
bob@bob-pc:~$ command -arg1 -arg2
...他のユーザーはコマンドに渡された引数を表示できますか?
一般的にはい、彼らはそれを見ることができます。これはw
のマニュアルページからのものです。
ユーザーごとに、ログイン名、tty名、リモートホスト、ログイン時間、アイドル時間、JCPU、PCPU、および現在のプロセスのコマンド行のエントリが表示されます。
現在実行中のプロセスの完全なコマンドラインが表示されます。そのため、コマンドライン引数を介してパスワードなどを提供したくないのです。
一般に、コマンドライン引数はすべての人に表示されます。たとえば、OpenBSDの非rootユーザーとして、rootとして実行されているプロセスの引数を見ることができます。
$ ps -U root -o command= |grep getty |head -n 1
/usr/libexec/getty std.9600 ttyC0
Linuxでは、すべての/proc/*/cmdline
ファイルは誰でも読み取り可能です。
コマンドライン引数が非公開のままである非常に特殊な設定がある場合があります。たとえば、 SELinuxとSolarisは他のユーザーからプロセスを完全に隠すことができます 。ただし、そのような設定になっていることが絶対にわかっている場合を除いて、コマンドライン引数はパブリックであると想定してください。
標準設定では、引数が表示されます。 すでに述べた のように、プロセスはメモリ内でそれらを上書きできますが、他のプロセスがそれらを見る機会を得る前に上書きすることはできません。
ただし、 grsecurity patchset には、プロセス所有者(およびルート)のみがプロセスに渡された引数を表示できるように変更するパッチが含まれています。