Linux 無法從本地字元介面(tty1-tty6)登陸深度解析

wuweilong發表於2016-12-13

Linux 無法從本地字元介面(tty1-tty6)登陸深度解析

作者:吳偉龍(PrudentWoo)


問題描述:

每次裝完Oracle資料庫之後,本地的tty1-tty6就無法登陸,只能透過vtty或tty7圖形終端登陸。


問題現象:

輸入完使用者名稱密碼之後,自動彈回如下介面:
  
       
日誌資訊:

  1. [root@nec3 ~]# tail -f /var/log/messages
  2. Dec 13 09:27:58 nec3 init: tty (/dev/tty1) main process ended, respawning
  3. Dec 13 09:28:03 nec3 init: tty (/dev/tty1) main process (2782) terminated with status 1
  4. Dec 13 09:28:03 nec3 init: tty (/dev/tty1) main process ended, respawning
  5. Dec 13 09:28:43 nec3 init: tty (/dev/tty1) main process (2787) terminated with status 1
  6. Dec 13 09:28:43 nec3 init: tty (/dev/tty1) main process ended, respawning
  7. Dec 13 09:29:51 nec3 init: tty (/dev/tty1) main process (2793) terminated with status 1
  8. Dec 13 09:29:51 nec3 init: tty (/dev/tty1) main process ended, respawning

       我們可以從上面的message日誌中看到本地tty1登陸的這個動作,但是沒有報錯,那麼登陸無非要去進行使用者名稱和密碼驗證,那麼使用者密碼驗證資訊會記錄在名為secure的日誌中,如果報密碼錯誤日誌中會顯示驗證失敗,日誌條目為:FAILED LOGIN 1 FROM (null) FOR root, Authentication failure

      實際上我們在secure日誌中看到的資訊是Module is unknow以及無法開啟pam_limits.so模組。 


  1. [root@nec3 ~]# tail -f /var/log/secure
  2. Dec 13 09:28:03 nec3 login: pam_unix(login:session): session opened for user root by LOGIN(uid=0)
  3. Dec 13 09:28:03 nec3 login: Module is unknown
  4. Dec 13 09:28:08 nec3 login: PAM unable to dlopen(/lib/security/pam_limits.so): /lib/security/pam_limits.so: cannot open shared object file: No such file or directory
  5. Dec 13 09:28:08 nec3 login: PAM adding faulty module: /lib/security/pam_limits.so
  6. Dec 13 09:28:43 nec3 login: pam_unix(login:session): session opened for user root by LOGIN(uid=0)
  7. Dec 13 09:28:43 nec3 login: Module is unknown

日誌分析:

       根據上面的日誌條目中我們可以看到有無效模組,而這個無效的模組資訊是我們在資料庫安裝過程中新增到/etc/pam.d/login配置檔案中的,我現在需要判斷下這個模組是否存在,為什麼需要這個模組。


  1. [root@nec3 ~]# grep pam_limits /etc/pam.d/login 
  2. session    required     /lib/security/pam_limits.so 


  3. [root@nec3 ~]# ls -rtl /lib
  4. lib/   lib64/ 
  5. [root@nec3 ~]# ls -rtl /lib/security/pam*
  6. ls: cannot access /lib/security/pam*: No such file or directory

      那麼我們可以看到該模組是不存在的,隨即我們再看下lib64這個目錄中是否有oracle安裝所需的該模組。

  1. [root@nec3 ~]# ls -rtl /lib64/security/pam_limits.so 
  2. -rwxr-xr-x. 1 root root 18592 Oct  7  2013 /lib64/security/pam_limits.so
       那麼我們可以清楚的看到在這裡是存在這個模組的。

問題處理:

       既然已經看到問題的原因,那麼將會有如下三個解決方案:

  1. 1、    複製條目:
  2. [root@nec3 ~]# cp /lib64/security/pam_limits.so /lib/security/pam_limits.so 
  3. [root@nec3 ~]# ls -rtl /lib/security/pam_limits.so 
  4. -rwxr-xr-x. 1 root root 18592 Oct  7  2013 /lib/security/pam_limits.so

  5. 2、    ln pam_limits.so
  6. [root@nec3 ~]# ln -s /lib64/security/pam_limits.so /lib/security/pam_limits.so
  7.     
  8. 3、    修改配置檔案login為如下:
  9. [root@nec3 ~]# grep pam_limits /etc/pam.d/login 
  10. session    required     /lib64/security/pam_limits.so 


後記:

      文中提到為什麼要用pam_limits.so這個模組,因為我們在配置Oracle部署環境的時候配置了limits.conf限制檔案,那麼我們要使這個配置生效,必須要確保pam_limits.so被加入到登陸配置檔案中應用生效。


參考:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Tuning_and_Optimizing_Red_Hat_Enterprise_Linux_for_Oracle_9i_and_10g_Databases/chap-Oracle_9i_and_10g_Tuning_Guide-Setting_Shell_Limits_for_the_Oracle_User.html

 

         That these limits work you also need to ensure that pam_limits is configured in the /etc/pam.d/system-auth file, or in /etc/pam.d/sshd for ssh, /etc/pam.d/su for su, or /etc/pam.d/login for local access and telnet and disable telnet for all log in methods. Here are examples of the two session entries in the /etc/pam.d/system-auth file:




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20674423/viewspace-2130362/,如需轉載,請註明出處,否則將追究法律責任。

相關文章