他のユーザーは、コマンドに渡された引数を表示できますか?


21

次のような引数を指定してコマンドを呼び出した場合:

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

...他のユーザーはコマンドに渡された引数を表示できますか?


この質問に対する単純な「はい」「いいえ」の答えは、コンテンツとタイトルと矛盾します
。P– kizzx2

@ kizzx2:修正されました。
バハマ

回答:


13

一般的にはい、彼らはそれを見ることができます。これはwmanページからです:

各ユーザーについて、ログイン名、tty名、リモートホスト、ログイン時間、アイドル時間、JCPU、PCPU、および現在のプロセスのコマンドラインのエントリが表示されます。

現在実行中のプロセスの完全なコマンドラインが表示されます。そのため、コマンドライン引数を使用してパスワードなどを指定したくないのです。


それを無効にする方法はありませんか?
ネイサンオスマン

3
@Georgeがあります。rdesktopが何らかの方法でそれを行うためです(パスワード引数がに変わりますXXXXXXXX)。方法を知りたいです。それは、自分自身をフォークして偽の引数を渡すだけのような不自由なことをするかもしれません。わからない
マイケルMrozek

13
Linuxでは、プロセスは渡された引数配列を上書きできます。これは、他のユーザーから見えるプロセスツリーに反映されます。ただし、それらは常に公開されており、競合状態やタイミング攻撃に対して脆弱な場合があります。
mattdm

15

一般に、コマンドライン引数はすべてに表示されます。たとえば、OpenBSDの非ルートユーザーとして、ルートとして実行されているプロセスの引数を確認できます。

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

Linuxでは、すべての/proc/*/cmdlineファイルが誰でも読み取り可能であることに気付くでしょう。

コマンドライン引数がプライベートのままである非常に特定の設定があるかもしれません。たとえば、SELinuxとSolarisは、他のユーザーからプロセスを完全に隠すことができます。しかし、あなたがそのような設定にいることを絶対に知らない限り、コマンドライン引数はパブリックであると仮定してください。


8

標準セットアップでは、引数が表示されます。すでに言及した、プロセスは他のプロセスがそれらを見る機会があった前に、メモリに上書きすることはできませんが。

ただし、grsecurityパッチセットには、プロセスの所有者(およびルート)のみがプロセスに渡された引数を表示できるように変更するパッチが含まれています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.