名稱解析和Pam

bug--maker發表於2018-08-05
  • 使用者在登陸過程中,列印在終端上面上面的訊息,來自於/etc/issue檔案,這個檔案裡面的內容如下:
    這裡寫圖片描述
  • \表示的是逃逸符號,常見的含義,通過man mingetty來進行顯示
    • \d:insert current day (localtime);
    • \l:insert line on which mingetty is running;
    • \m:inserts machine architecture (uname -m);
    • \n:inserts machine’s network node hostname (uname -n);
    • \o:inserts domain name
  • 對於使用的是agetty那麼就需要使用man agetty來進行檢視;
  • 檔案系統掛載可以通過檢視目錄/proc/mounts來進行檢視
    這裡寫圖片描述
  • 關於PAM
  • 稱為可插入式i認證模組,Pluggable Authentication Module,配置檔案在/etc/pam.d/目錄裡面;
[root@localhost ~]# ls /etc/pam.d/
atd        other             sudo-i
authconfig     passwd            su-l
authconfig-gtk     pirut             system-auth
authconfig-tui     pm-hibernate          system-auth-ac
chfn           pm-powersave          system-cdinstall-helper
chsh           pm-suspend            system-config-authentication
config-util    pm-suspend-hybrid         system-config-date
cpufreq-selector   poweroff          system-config-display
crond          ppp               system-config-kdump
cups           pup               system-config-keyboard
dateconfig     reboot            system-config-language
eject          remote            system-config-lvm
ekshell        rhn_register          system-config-netboot
gdm        run_init          system-config-network
gdm-autologin      runuser           system-config-network-cmd
gdmsetup       runuser-l             system-config-printer
  • 關於資源授權服務:
    • 認證Authentication:表示進行使用者身份的認證,驗證使用者的身份是否合法,一般使用使用者和口令的方式進行使用者身份的認證,因為某些使用者名稱是公開的,所以使用者名稱是不能夠作用使用者驗證的基本手段的;
    • 授權Authorization:用於決定一個使用者是否能夠訪問某些資源或者服務;
    • 系統識別戶是按照 UIDGID來識別的,將字串轉換成對應的數字的過程成為名稱解析,名稱解析,通常是雙向的;
    • 當需要進行使用者名稱稱和ID進行轉換的時候,在開始可以使用一個檔案來進行儲存,然後讓程式去該檔案中進行讀取,但是隨著資料量的增大,這樣就不方便,而且大量的應用程式的原始碼不支援進行檔案位置的重寫;當多個應用程式都需要進行這樣的重寫時,就需要引 nsswitch中間 層 , 稱 為: network service switch(網路服務轉換),本身也是一些庫檔案,當使用時進行呼叫;這個庫本身提供了多種的呼叫方式,在具體到某一個應用程式時,必須在配置檔案裡面說明使用的方式, ,配置檔案是/etc/nsswitch.conf;
    • nsswitch.conf:
#passwd:    db files nisplus nis
#shadow:    db files nisplus nis
#group:     db files nisplus nis

passwd:     files
shadow:     files
group:      files

#hosts:     db files nisplus nis dns
hosts:      files dns

# Example - obey only what nisplus tells us...
#services:   nisplus [NOTFOUND=return] files
#networks:   nisplus [NOTFOUND=return] files
#protocols:  nisplus [NOTFOUND=return] files
#rpc:        nisplus [NOTFOUND=return] files
#ethers:     nisplus [NOTFOUND=return] files
#netmasks:   nisplus [NOTFOUND=return] files     
// 上面語法表示的含義是如果查詢的結果是NOTUOUND那麼就直接返回,後面的不進行查詢
  • 對於查詢的返回結果:
    • SUCCESS:服務正常,已經實現解析;
    • NOTFOUND:表示服務正常,當時要求查詢的,查詢不到;
    • UNAVAIL:表示服務不正常;
    • tryagain:表示服務有臨時性的故障;
  • 預設的動作是,前者成功後,後者不進行查詢,前者失敗,後者進行查詢;
  • 查詢的過程是:首先應用程式在使用名稱轉換機制時,首先根據/etc/nsswitch.conf去匹配對應的庫檔案,如果使用的是files型別,就需要匹配/usr/lib/libnss_files.so這個庫檔案,然後執行庫檔案,最後查詢合適的檔案,完成解析過程;
  • 對於不同的解析機制,就需要不同庫檔案提供支援,配置檔案提供了名稱解析的步驟,同時也指明瞭庫的呼叫方式
  • 庫檔案的位置在/usr/lib/
[root@localhost ~]# ls /usr/lib/ | grep 'nss'
libgnutls-openssl.so.13
libgnutls-openssl.so.13.0.6
libnss3.so
libnssckbi.so
libnss_db.so
libnss_ldap.so
libnssutil3.so
nss
[root@localhost ~]# ls /usr/lib64/ | grep 'nss'
libgnutls-openssl.so.13
libgnutls-openssl.so.13.0.6
libnfsidmap_nsswitch.so
libnfsidmap_nsswitch.so.0
libnfsidmap_nsswitch.so.0.0.0
libnss3.so
libnssckbi.so
libnss_db.so
libnss_ldap.so
libnssutil3.so
libnss_winbind.so
libnss_wins.so
nss
  • 不同的協議使用的轉換的檔案是不同的,對於檔案的使用的機制都是files,但是是不同的檔案;
  • /etc/protocols定義的是協議和埠的對應檔案
[root@localhost ~]# cat /etc/protocols 
# /etc/protocols:
# $Id: protocols,v 1.5 2006/10/11 15:39:11 pknirsch Exp $
#
# Internet (IP) protocols
#
#   from: @(#)protocols 5.1 (Berkeley) 4/17/89
#
# Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992).
#
# See also http://www.iana.org/assignments/protocol-numbers

ip  0   IP      # internet protocol, pseudo protocol number
hopopt  0   HOPOPT      # hop-by-hop options for ipv6
icmp    1   ICMP        # internet control message protocol
igmp    2   IGMP        # internet group management protocol
ggp 3   GGP     # gateway-gateway protocol
ipencap 4   IP-ENCAP    # IP encapsulated in IP (officially ``IP'')
st  5   ST      # ST datagram mode
tcp 6   TCP     # transmission control protocol
cbt 7   CBT     # CBT, Tony Ballardie <A.Ballardie@cs.ucl.ac.uk>
egp 8   EGP     # exterior gateway protocol
igp 9   IGP     # any private interior gateway (Cisco: for IGRP)
bbn-rcc 10  BBN-RCC-MON # BBN RCC Monitoring
nvp 11  NVP-II      # Network Voice Protocol
pup 12  PUP     # PARC universal packet protocol
argus   13  ARGUS       # ARGUS
emcon   14  EMCON       # EMCON
xnet    15  XNET        # Cross Net Debugger
chaos   16  CHAOS       # Chaos
udp 17  UDP     # user datagram protocol
mux 18  MUX     # Multiplexing protocol
dcn 19  DCN-MEAS    # DCN Measurement Subsystems
hmp 20  HMP     # host monitoring protocol
prm 21  PRM     # packet radio measurement protocol
xns-idp 22  XNS-IDP     # Xerox NS IDP
trunk-1 23  TRUNK-1     # Trunk-1
trunk-2 24  TRUNK-2     # Trunk-2
leaf-1  25  LEAF-1      # Leaf-1
leaf-2  26  LEAF-2      # Leaf-2
rdp 27  RDP     # "reliable datagram" protocol
irtp    28  IRTP        # Internet Reliable Transaction Protocol
iso-tp4 29  ISO-TP4     # ISO Transport Protocol Class 4
  • 還有一個檔案是/etc/services
bsquare-voip    1071/udp            # BSQUARE-VOIP
cardax      1072/tcp            # CARDAX
cardax      1072/udp            # CARDAX
bridgecontrol   1073/tcp            # Bridge Control
bridgecontrol   1073/udp            # Bridge Control
fastechnologlm  1074/tcp            # FASTechnologies License Manager
fastechnologlm  1074/udp            # FASTechnologies License Manager
rdrmshc     1075/tcp            # RDRMSHC
rdrmshc     1075/udp            # RDRMSHC
dab-sti-c   1076/tcp            # DAB STI-C
dab-sti-c   1076/udp            # DAB STI-C
imgames     1077/tcp            # IMGames
imgames     1077/udp            # IMGames
avocent-proxy   1078/tcp            # Avocent Proxy Protocol
avocent-proxy   1078/udp            # Avocent Proxy Protocol
asprovatalk 1079/tcp            # ASPROVATalk
asprovatalk 1079/udp            # ASPROVATalk
pvuniwien   1081/tcp            # PVUNIWIEN
pvuniwien   1081/udp            # PVUNIWIEN
amt-esd-prot    1082/tcp            # AMT-ESD-PROT
amt-esd-prot    1082/udp            # AMT-ESD-PROT
ansoft-lm-1 1083/tcp            # Anasoft License Manager
ansoft-lm-1 1083/udp            # Anasoft License Manager
ansoft-lm-2 1084/tcp            # Anasoft License Manager
ansoft-lm-2 1084/udp            # Anasoft License Manager
webobjects  1085/tcp            # Web Objects
webobjects  1085/udp            # Web Objects
cplscrambler-lg 1086/tcp            # CPL Scrambler Logging
cplscrambler-lg 1086/udp            # CPL Scrambler Logging
cplscrambler-in 1087/tcp            # CPL Scrambler Internal
cplscrambler-in 1087/udp            # CPL Scrambler Internal
cplscrambler-al 1088/tcp            # CPL Scrambler Alarm Log
cplscrambler-al 1088/udp            # CPL Scrambler Alarm Log
ff-annunc   1089/tcp            # FF Annunciation
ff-annunc   1089/udp            # FF Annunciation
ff-fms      1090/tcp            # FF Fieldbus Message Specification
ff-fms      1090/udp            # FF Fieldbus Message Specification
ff-sm       1091/tcp            # FF System Management
ff-sm       1091/udp            # FF System Management
obrpd       1092/tcp            # Open Business Reporting Protocol
obrpd       1092/udp            # Open Business Reporting Protocol
proofd      1093/tcp            # PROOFD
proofd      1093/udp            # PROOFD
rootd       1094/tcp            # ROOTD
rootd       1094/udp            # ROOTD
nicelink    1095/tcp            # NICELink
nicelink    1095/udp            # NICELink
cnrprotocol 1096/tcp            # Common Name Resolution Protocol
cnrprotocol 1096/udp            # Common Name Resolution Protocol
sunclustermgr   1097/tcp            # Sun Cluster Manager
sunclustermgr   1097/udp            # Sun Cluster Manager
rmiactivation   1098/tcp            # RMI Activation
rmiactivation   1098/udp            # RMI Activation
rmiregistry 1099/tcp            # RMI Registry
rmiregistry 1099/udp            # RMI Registry
mctp        1100/tcp            # MCTP
mctp        1100/udp            # MCTP
pt2-discover    1101/tcp            # PT2-DISCOVER
pt2-discover    1101/udp            # PT2-DISCOVER
adobeserver-1   1102/tcp            # ADOBE SERVER 1
adobeserver-1   1102/udp            # ADOBE SERVER 1
adobeserver-2   1103/tcp            # ADOBE SERVER 2
  • 幾乎每一個埠都已經被佔用
  • 作業系統提供的一個特殊的命令getent
  • getent:get entries from administrative database;
  • 可以用於驗證nss配置完成之後,是否能夠正常執行,這個命令沒有選項;
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  • 或者獲取某個條目的具體資訊
[root@localhost ~]# getent passwd root
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# getent hosts 
127.0.0.1       localhost.localdomain localhost
  • 上面的機制完成的是字串和ID的轉換過程,接下來就是驗證的過程
  • 認證是將使用者標示和認證口令進行對比的過程;
  • 使用者登入的過程:
    • root使用者為為例,root首先進行按照nsswitch查詢passwd:files得到使用者的ID;
    • 其次在根據使用者輸入的密碼,同時結合nsswitch查詢shados:files檔案;
    • 使用者認證的過程就是使用對應的演算法並結合加密字串,並且進行對比的過程;
  • 對於認證過程,可以藉助於名稱解析實現對應條目的查詢,但是也可以自己實現名稱解析;

  • 認證的過程類似於名稱解析,通過中間層來實現認證機制的切換,這個中間層是PAM,是一個認證框架,通過庫檔案來實現認證;
    這裡寫圖片描述

  • pam_unix.so是用來實現創痛意義上面的,通過/etc/shadow來實現使用者認證機制的庫檔案;
  • 具體通過那種機制來實現使用者認證的過程,是通過配置檔案/etc/pam.d/login來實現的,對於不同的服務,存在不同的配置檔案;
    這裡寫圖片描述
  • pam實現認證的過程
    這裡寫圖片描述
  • 關於上面一些解釋,說明:
    • AUTH:用於檢查,使用者輸入的帳號密碼是否是匹配的,就是用於進行使用者認證的;
    • ACCOUNT:用於檢查使用者賬戶的狀態,
    • PASSWORD:在使用者修改密碼時進行相關的設定,比如檢查密碼的複雜度,使用者密碼的使用時間等;
    • session:用於定義使用者會話的相關屬性,例如登陸時間等問題;
  • pam的配置檔案是在/etc/pam.d/service,一般是和服務名稱相同的;
    • type:表示的是型別,例如:AUTH,ACCOUNT,PASSWORD,SESSION等;
    • control:表示控制.當認證存在多個時,之間的關係;
    • module-path:需要完成功能使用的認證模組;
    • module-argument:表示認證的模組的引數;
    • 關於service的說明:服務名必須是小寫字母;other檔案是用來定義預設的規則的;
    • control的說明:
      • required :表示裡面的引數如果通過,那麼繼續後面的檢查,如果沒有通過,直接返回不通過,後面的檢查任然需要進行,;否決,仍然檢查,但是結果是否決的
      • requisite:如果通過繼續檢查後面的,如果沒有通過那麼就返回無法通過,後面的檢查就不需要進行了,一票否決,後面不檢查
      • suffcient:表示通過那麼就直接通過,後面的檢查就不需要進行了,如果沒有通過,那麼不受影響;一票通過權;
      • optional:表 示建 議性 意見,不進 行 採 納;
      • include:表 示 包 含 其 他 文 件,通過其他檔案的定義進行說明;
  • pam支援通過下面的方式進行定義:
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
  • 關於[]裡面的返回值,包括success, open_err,symbol_err, service_error,system_err,buf_err, perm_denied, auth_err, cred_insufficient;

  • 模組認證完成後的動作:

    • OK:表示這個模組通過,需要繼續檢查;
    • Done:表示這個模組通過,後面的不需要檢查;
    • Bad:表示結果失敗,繼續檢查;
    • Die: :表示結果失敗,後面的不進行檢查;
    • Ignore:表示忽略檢查;
    • Reset:表示忽略以前的所有結果,從這項開始檢查;
  • 上面的動作類似於下面的圖
    這裡寫圖片描述
  • 一個配置檔案:
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
~                                     
  • 常見的幾個模組的意義:
    • pam_unix:傳統意義上面的密碼認證模組,用於到/etc/shadow裡面進行使用者認證;
      • nullok:表示允許為空;
      • shadow:表示通過shadow的方式進行驗證;
      • md5:表示密碼是通過md5的方式進行存放的;
      • try_first_pass:如果使用者之前輸入過密碼,使用之前輸入的密碼進行嘗試;
      • use_first_pass:如果使用者之前輸入過密碼,直接使用使用者之前輸入的密碼;
    • pam_permit:表示允許訪問,否則就什麼都不做;
    • pam_deny:是用來拒絕訪問的,通知應用成程式,認證不通過,通常用於other服務裡面;
    • pam_cracklib:用於檢查字典中包含的密碼,如果包括,就不通過,用於檢查密碼的安全性;
      • minlen:表示使用者密碼的最短長度;
      • difok:用於驗證密碼和之前的是否相同;
      • dcredit:用於定義最少包含多少個數字;
      • ucredit:用於定義最少包含多少個大寫字母;
      • lcredit:用於定義最少包含多少個小寫字母;
      • ocredit:用於定義包含幾個其他字元;
      • retry:用於定義允許嘗試的次數;
  • 例如這一段的資訊:
password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok  //表示的含義是設定密碼為i第一次使用者檢查通過的哪個密碼;
password    required      pam_deny.so
* `pam_shells`:表示使用者使用`shell`必須是`/etc/shells`裡面設定的`shell`;
* `pam_security`:限制管理員登陸的裝置,可以通過增加`/etc/securetty`來進行定義;
* `pam_listfile`:表示的含義是,通過自己定義的檔案,來定義那些使用者可以登入系統,那些使用者不可以登陸系統;
        * `item=[tty|user|rhost|ruser|group|shell]`:表示的這個條目的含義是什麼;
        * `sense=[allow|deny]`:表示的是允許的動作是什麼;
        * `file=/path/to/filename`:表示是通過哪個檔案進行定義的;
        * `onerr=[success|fail]` :表示一旦發生錯誤,是成功,還是失敗;
        * `apply=[user|@group]`:表示允許那些組登陸;
        * `quiet`:

* 通過修改上面的檔案,來實現使用者登入的一個控制;
* 首先備份一份檔案:

[root@localhost pam.d]# cp system-auth-ac /mnt/
  • 在第二行新增
auth        required      pam_listfile.so item=group sense=allow file=/etc/pamgroup_allow
  • 然後建立配置檔案
root
hello //這裡面表示的是組
  • 新增hello
[root@localhost pam.d]# groupadd hello
  • 建立一個新的使用者
[root@localhost pam.d]# useradd westos
[root@localhost pam.d]# passwd westos
Changing password for user westos.
New UNIX password: 
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
//這個使用者並不屬於hello組
uid=500(westos) gid=501(westos) groups=501(westos) context=root:system_r:unconfined_t:SystemLow-SystemHigh
  • 來使用這個使用者進行登陸
    這裡寫圖片描述

  • 這裡的密碼是沒有輸入錯誤的,接下來,將這個使用者加入hello

[root@localhost pam.d]# usermod -a -G hello westos
  • 再次嘗試登陸
    這裡寫圖片描述

  • 登陸是成功的;

  • pam_rootok:表示只要是 root使用者登入,直接通過,也就是su的過程是不需要出入密
    碼的;檔案在/etc/pam.d/su檔案裡面,模組資訊是pam_rootok.so;如果想要更改,就去修改auth sufficient pam_rootok.so這一行的資訊
#%PAM-1.0
auth            sufficient      pam_rootok.so   //就是這一行,管理員直接通過,不使用密碼;
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth           required        pam_wheel.so use_uid
auth            include         system-auth
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         optional        pam_xauth.so
  • pam_limits:表示在一次使用者會話裡面可以使用的系統資源的限定,管理員也是接受這
    個限制的,預設情況下,使用的限制的配置檔案:/etc/security/limits.conf其他的配置檔案在/etc/security/limits.d/*.conf裡面;
#<domain> can be:
#        - an user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#        - the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files    //最大檔案數量
#        - rss - max resident set size (KB)     //使用的實際記憶體集合
#        - stack - max stack size (KB)          
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit            //線性物理空間限制
#        - maxlogins - max number of logins for this user   
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to
#        - rtprio - max realtime priority

#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc[程式組]           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -[表示都限制]       maxlogins       4
  • 這裡面的解釋已經比較完善的;
  • 臨時調整:
[root@localhost pam.d]# help ulimit
ulimit: ulimit [-SHacdfilmnpqstuvx] [limit]
    Ulimit provides control over the resources available to processes
    started by the shell, on systems that allow such control.  If an
    option is given, it is interpreted as follows:

        -S  use the `soft' resource limit
        -H  use the `hard' resource limit
        -a  all current limits are reported
        -c  the maximum size of core files created
        -d  the maximum size of a process's data segment
        -e  the maximum scheduling priority (`nice')
        -f  the maximum size of files written by the shell and its children
        -i  the maximum number of pending signals
        -l  the maximum size a process may lock into memory
        -m  the maximum resident set size (has no effect on Linux)
        -n  the maximum number of open file descriptors
        -p  the pipe buffer size
        -q  the maximum number of bytes in POSIX message queues
        -r  the maximum real-time scheduling priority
        -s  the maximum stack size
        -t  the maximum amount of cpu time in seconds
        -u  the maximum number of user processes
        -v  the size of virtual memory
        -x  the maximum number of file locks
  • 普通使用者僅僅能喔咕調整自己的軟限制;
  • pam_env:根據/etc/security/pam_env.conf來進行環境變數的設定;
#PAGER      DEFAULT=less
#MANPAGER   DEFAULT=less
#LESS       DEFAULT="M q e h15 z23 b80"
#NNTPSERVER DEFAULT=localhost
#PATH       DEFAULT=${HOME}/bin:/usr/local/bin:/bin\
#:/usr/bin:/usr/local/bin/X11:/usr/bin/X11
#
# silly examples of escaped variables, just to show how they work.
#
#DOLLAR     DEFAULT=\$
#DOLLARDOLLAR   DEFAULT=    OVERRIDE=\$${DOLLAR}
#DOLLARPLUS DEFAULT=\${REMOTEHOST}${REMOTEHOST}
#ATSIGN     DEFAULT=""  OVERRIDE=\@
  • 這個檔案是註釋的,redhat是通過/etc/profile.d來進行設定的;
  • Pam_wheel:用來設定那個使用者可以直接su到管理員賬戶;可以為這個組中新增使用者;
#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth           required        pam_wheel.so use_uid
auth            include         system-auth
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
  • 裡面的兩項是已經存在的,並且wheel組,也是存在
[root@localhost pam.d]# cat /etc/group | grep wheel
wheel:x:10:root
  • pam_motd:是用於定義是否顯示pam_motd裡面的內容的;
  • pam_issue:作用和上面是一樣的;
  • pam_succeed_if:用於定義使用者的帳號滿足某些資訊,就可以登陸系統,或者不允許登陸系統;
  • pam_time: 用於限定使用者只能在什麼時候登陸的;
  • 這個檔案的定義,需要配置檔案/etc/security/time.conf來進行定義的;
  • pam_securetty.so:用於限制使用者從那些終端登入系統的,配置檔案是/etc/securetty
[root@localhost ~]# cat /etc/securetty
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
  • pam 可以通過/usr/share/doc/pam-版本號來檢視裡面更加詳細的資訊;

相關文章