GNU/Linux >> Linux の 問題 >  >> Linux

Linux –プロセスの特定のパスを偽造することは可能ですか?

ルートではない複数のユーザーがいるLinuxサーバーでADBを実行しようとしています(Androidエミュレーターで遊ぶため)。 adbデーモンは、ログをファイル/tmp/adb.logに書き込みます。 残念ながら、これはADBにハードコードされているようで、この状況は変わりません。

そのため、adbの実行に失敗し、明らかなエラーが発生します:cannot open '/tmp/adb.log': Permission denied 。このファイルは、別のユーザーと/tmpによって作成されています スティッキービットが付いています。 adb nodaemon serverでadbを起動した場合 stdoutに書き込むようにすると、エラーは発生しません(競合を避けるために、ポートを一意の値に設定しました)。

私の質問は、ADBに/tmp/adb.log以外のファイルに書き込む方法はありますか? ? より一般的には、ある種のプロセス固有のシンボリックリンクを作成する方法はありますか? すべてのファイルアクセスを/tmp/adb.logにリダイレクトしたい たとえば、ファイル~/tmp/adb.log

繰り返しますが、私はサーバーのrootではないので、chrootmount -o rbind およびchmod 有効なオプションではありません。可能であれば、ADBソースを変更したくないのですが、他に解決策がない場合は、変更します。

P.S.特定のADBの場合、adb nodaemon serverを実行することに頼ることができます nohupを使用 と出力のリダイレクトが、一般的な質問はまだ関連しています。

承認された回答:

これは、util-linuxを使用する非常に簡単な例です。 のunshare プロセスをプライベートマウント名前空間に配置し、その親が現在持っているのと同じファイルシステムの異なるビューを与えるには:

{   cd /tmp                      #usually a safe place for this stuff
    echo hey   >file             #some
    echo there >file2            #evidence
    sudo unshare -m sh -c '      #unshare requires root by default
         mount -B file2 file     #bind mount there over hey
         cat file                #show it
         kill -TSTP "$$"         #suspend root shell and switch back to parent
         umount file             #unbind there
         cat file'               #show it
    cat file                     #root shell just suspended
    fg                           #bring it back
    cat file2                    #round it off
}
there                            #root shell
hey                              #root shell suspended
hey                              #root shell restored
there                            #rounded

unshareを使用して、プロセスにファイルシステムのプライベートビューを与えることができます。 最新のLinuxシステムでのユーティリティ。ただし、マウント名前空間機能自体は、3.xカーネルシリーズ全体でかなり成熟しています。 nsenterを使用して、すべての種類の既存の名前名を入力できます 同じパッケージのユーティリティで、manで詳細を確認できます。 。


Linux
  1. Linux でのファイル変更時にプロセスを再起動する

  2. Linux で特定のプログラムのプロセス ID を設定する方法

  3. プロセスの特定のパスを偽造することは可能ですか?

  1. Linux用の10個の便利なBashエイリアス

  2. 効果的なプロセス管理のための8つのLinuxコマンド

  3. Linux プロセスのメモリをファイルにダンプする

  1. Linux –高I / Oの原因となる特定のファイルを決定しますか?

  2. Linux デスクトップ エントリ ファイルの相対パスでアイコンを指定するにはどうすればよいですか?

  3. ターミナルウィンドウからLinuxでファイルを作成するには?