sshからのアクセスかどうかを判定しGUIアプリの起動を防止しました。
今回、原始的ではありますが親をたどっていくという方法をとりました。結果、3回親をたどってようやくたどり着くことができました。なんか、もっと簡単な方法(lsof,netstat)がありそうですが、ご存じの方は教えてください。
exec('ps ax -o pid,ppid,command');
を実行。このプロセスのPIDが8915です。
PID PPID COMMAND
8915 8908 php /home/pi/rfriends2/script/rfriends.php
8908 24982 sh rfriends2.sh
24982 24979 -bash
24979 24968 sshd: pi@pts/2
?
sshではGUIのフォワーディングもできるようですが、今回はパス。
また、telnet接続の場合の判定はできていません。下記のように、loginとなりguiのterminalとの区別ができません。telnetd:になればよかったのですが。今回はtelnetのサポートは見送ります。というか敢えてtelnetを使うメリットもありませんし。
PID PPID COMMAND
10129 10114 php /home/pi/rfriends2/script/rfriends.php
10114 10096 sh rfriends2.sh
10096 10086 -bash
10086 10085 login -h 192.168.1.153 -p