Linuxの備忘録とか・・・(目次へ)Linuxの備忘録とか・・・(目次へ)リモートからrootでログインさせないわけsshとftpとかリモートからログインするアプリでは、セイキュリテュの側面からrootでのログインを許可しないのが一般的だ。sshdの場合一般ユーザでログインし、改めてsuでrootになる。当初rootになるには一般ユーザアカウント、そのパスワード、そしてrootのパスワードという3関所をくぐりぬけなければならない。一般ユーザアカウントは推測されやすいとしてもないよりましだ。HPをぐぐっていたら、rootでログインを許可すると、ブルーフォース攻撃でrootを奪われやすいから。思うに「そりゃそうだ。」アカウント名はrootなんだから・・・と。したらrootのアカウント名を変えればいいんじゃないかと。rootのアカウント名がrootである必要があるのか?include/asm-x86/unistd_32.hでログインのシステムコールがあるかどうか調べてみると存在しない。そこでsuをstraceしてみると、最終的にはcloneで子プロセスを起動し、その時該当ユーザのユーザIDをセットするようだ。実際task_structにはユーザIDでそのアカウント名を保持している箇所はない。sshdが接続されると、ログインチェックをしてOKなら、該当するユーザIDで子プロセスとして複写し、execでシェルを起動すればよさそうだ。実際rootのアカウントをroot1に変えてログインできるかやってみた。/etc/shadowroot1:$6$8l4a.5Bm$tuixKbk1zTWFRJqFrmj04.MOLimbdDhMIGiLHyb7bLekayDNxr2MtMq6BV40:14522:0:99999:7:::bin:*:14498:0:99999:7:::daemon:*:14498:0:99999:7:::sshでアカウント名root1でログインするとログインできた。「我ながらこれはいい。」と思ってしばらく使ってみると。rootというユーザは存在しませんなるほど、アプリケーションによればrootのアカウント名を「rootだ!」として動作するものがある。そのようなアプリが動作しなくなる。root取得をユーザID=0として処理することが仕様だったな、rootのアカウントを自由に設定することが可能でないだろうか・・・と。簡単なものだったらインプリメントされているだろうな。ノースAdsense広告情報が設定されていません。