我們都知道老版本的Solaris系統都將/sbin/sh設定為缺省的root shell。在Solaris 8和Solaris 9中,你確實應當這樣做,因為所有的動態鏈接庫都在/usr/lib目錄中,而/usr/lib可以在一個單獨的/usr文件系統中。這一文件系統在維護啟動階段可能是訪問不了的,因此修改root shell被認為是很不好。
為了保證超級用戶總是能夠登入系統,我們將/sbin/sh指定給root,這是一個靜態鏈接的二進制文件,所以它不需要任何外部的庫就能正常運行。
bash-2.03$ file /sbin/sh
/sbin/sh: ELF 32-bit MSB executable SPARC Version 1, statically linked, stripped
bash-2.03$ ldd /sbin/sh
ldd: /sbin/sh: file is not a dynamic executable or shared object
但是Solaris 10在這方面有了很大的改進,主要有兩點:
(1)現在所有的標准庫都位於/lib目錄下,因此在維護啟動階段你總是可以訪問到這些庫。這樣,現在我們的/sbin/sh就可以是一個使用動態庫的常規的可執行文件了。
bash-3.00$ file /sbin/sh
/sbin/sh: ELF 32-bit MSB executable SPARC Version 1, dynamically linked, stripped
bash-3.00$ ldd /sbin/sh
(2)Solaris 10對於非可執行的root shell有一個內建的保護機制,因此如果你將root shell修改成另外一種shell,並且由於某種原因,該shell不能正常啟動,那麼你就會自動的到一個標准的/sbin/sh。同樣,這種保護機制也適用於sudo命令。
這一改進確保了你可以將自己的root shell設定成任何你喜歡的東西。