1. 程式人生 > >一步步完善rootfs:3.使用者登入

一步步完善rootfs:3.使用者登入

使用者登入

一、進入終端

  • 免登入方式:先執行 profile 檔案,再執行 /bin/sh ,然後就會出現命令列
    ::respawn:-/bin/sh
  • 登入方式:使用 /bin/login 或者 /sbin/getty 來代替 /bin/sh
    ::respawn:/bin/login
    ::respawn:/sbin/getty -L tty 115200 vt100

最常見的用於登入的程式是/sbin/getty,在busybox中/sbin/getty和/bin/login差別不大。

二、修改inittab

下面使用getty方式登入,首先要知道系統中的tty是哪一個裝置檔案,我的串列埠裝置檔案有以下四個。注意不同的系統由於串列埠驅動不同,所以裝置檔名會不一樣。


查詢控制檯在使用哪一個串列埠裝置檔案的方法是:先找到類似的四五個比較像的串列埠裝置名,然後依次執行echo hi > /dev/s3c2410_serialx,控制檯有響應的串列埠裝置就是我要找的那個裝置。

inittab檔案登入部分修改為:

#::askfirst:-/bin/sh
::respawn:/sbin/getty -L s3c2410_serial2 115200 vt100

重新啟動系統,發現已經出現了登入提示,但是這裡是登入不進去的,因為系統中還沒有為使用者設定密碼。

三、新增passwd和shadow檔案

passwd檔案中儲存使用者的密碼設定,shadow檔案儲存的是加密後的檔案,採用密文儲存。這兩個檔案可以從ubuntu系統中複製貼上過來,做一些修改就可以用了。

[email protected]:/etc# cp passwd shadow /root/rootfs_zht/rootfs/etc/

修改passwd檔案為以下內容,重點是:第一個/表示當前使用者的主目錄,登入之後會預設切換到此目錄,因為目前rootfs下還沒有root目錄,所以需要手動建立root目錄;/bin/sh表示當前使用者的預設指令碼,登入之後載入此指令碼。

root:x:0:0:root:/root:/bin/sh

改到這裡就可以進行登入了,root使用者的密碼和ubuntu中的一樣。

四、重置密碼

開啟shadow檔案,將第一行以下不用的東西刪掉,保留第一行,再把第一個冒號和第二個冒號之間的內容(即為加密之後的密碼)刪掉,剩下了如下所示內容:

root::14610:0:99999:7:::

這個時候再使用root使用者登入時,不需要輸入密碼就可以進入系統,使用passwd命令為root使用者重新設定密碼,到這裡密碼重置就完成了。


參考資料: 朱老師嵌入式Linux