使用者帳戶控制
使用者帳戶具有可以變更的屬性。
每一位使用者帳戶都有一組相關的屬性。這些屬性是透過使用 mkuser 指令建立使用者時,從預設值建立。您可以使用 chuser 指令來改變屬性。下列使用者屬性控制登入功能,與密碼好壞無關:
- account_locked
- 如果需要明確鎖定帳戶,可將該屬性設為 True,預設值為 False。
- admin
- 如果設定為 True,該使用者將無法變更密碼。僅管理者可變更它。
- admgroups
- 列出該使用者具備管理權利的群組。使用者可新增或刪除那些群組的成員。
- auth1
- 用來授予使用者存取權的鑑別方法。通常是將它設定為
SYSTEM,這樣就可以使用較新的方法。註: auth1 屬性即將棄用,不應使用它。 - auth2
- 使用者被 auth1 中指定之任何項目鑑別之後的執行方法。它無法阻礙對系統的存取權。通常它是設為
NONE。註: auth2 屬性即將棄用,不應使用它。 - daemon
- 該布林參數會指定使用者是否可使用 startsrc 指令來啟動常駐程式或子系統。此外也會限制使用 cron 及 at 機能。
- login
- 指定該使用者是否可以登入。順利登入時,會從 loginsuccess 子常式將 unsuccessful_login_count 屬性的值重設為
0。 - logintimes
- 限制使用者登入時間。比方說,將使用者限制為只在一般營業時間才能存取系統。
- registry
- 指定使用者登錄。這可以用來讓系統知道,使用者資訊存在於其他登錄,例如 NIS、LDAP 或 Kerberos。
- rlogin
- 指定所指定的使用者是否可以使用 rlogin 或 telnet 指令,來進行登入。rlogin 屬性只會控制遠端登入。如需控制個別遠端指令執行能力的相關資訊,請參閱 rcmds。
- su
- 可指定其他使用者是否可以利用 su 指令,切換到這個 ID。
- sugroups
- 可指定哪些群組可以切換到這個使用者 ID。
- ttys
- 可將某些帳戶限制在實際安全的區域當中。
- expires
- 可管理學生或來賓帳戶;亦可暫時停用帳戶。
- loginretries
- 可指定在系統鎖定使用者 ID 之前,連續失敗登入的次數上限。失敗次數會記錄在 /etc/security/lastlog 檔中。
- umask
- 可指定使用者的起始 umask。
- rcmds
- 指定所指定的使用者是否可以使用 rsh 指令或 rexec 指令,來執行個別指令。值
allow指出您可以使用 rsh 及 rexec 指令來遠端執行指令。值deny指出您無法遠端執行指令。值hostlogincontrol指出執行遠端指令是透過 hostallowedlogin 及 hostsdeniedlogin 屬性所控制。如需控制遠端登入的相關資訊,請參閱 rlogin 屬性。 - hostallowedlogin
- 指定允許使用者登入的主機。多個主機共用使用者屬性的網路環境中,常用到這個屬性。
- hostsdeniedlogin
- 指定不允許使用者登入的主機。多個主機共用使用者屬性的網路環境中,常用到這個屬性。
- maxulogs
- 指定每一位使用者的登入次數上限。如果使用者的登入次數已達上限,就會拒絕其登入。
使用者屬性的完整設定是在這些檔案中定義:/etc/security/user、/etc/security/limits、/etc/security/audit/config 及 /etc/security/lastlog。以 mkuser 指令建立使用者的預設設定,是在 /usr/lib/security/mkuser.default 檔中指定的。mkuser.default 只用來指定會置換 /etc/security/user 和 /etc/securtiy/limits 檔預設段落中一般預設值的選項,以及審核類別。這些屬性有好幾個可以控制使用者登入的方式,您也可以配置它們,讓它們在指定狀況下,自動鎖定使用者帳戶 (以防止進一步登入)。
系統一旦因使用者登入失敗的次數超過上限而鎖定帳戶,使用者便無法登入,除非系統管理者將使用者在 /etc/security/lastlog 檔中的 unsuccessful_login_count 屬性,重設為小於登入重試值。您可以利用下述 chsec 指令完成:
chsec -f /etc/security/lastlog -s username -a
unsuccessful_login_count=0
您可以使用 chsec 指令來變更預設值,即在適當的安全檔案中編輯預設段落,例如 /etc/security/user 或 /etc/security/limits 檔案。許多預設值已定義為標準行為。若要明確指定每次建立新使用者時所設定的屬性,請變更 /usr/lib/security/mkuser.default 中的 user 項目。
如需擴充的使用者密碼屬性的資訊,請參考密碼。
使用者屬性影響的登入相關指令
| 使用者屬性 | 指令 |
|---|---|
| account_locked | rexec、rsh、rcp、ssh、scp、rlogin、telnet、ftp、login |
| login | 只影響從主控台的登入。login 屬性的值不會影響遠端登入指令、遠端 shell 指令或遠端複製指令 (rexec、rsh、rcp、ssh、scp、rlogin、telnet 及 ftp)。 |
| logintimes | rexec、rsh、rcp、ssh、scp、rlogin、telnet、ftp、login |
| rlogin | 只影響遠端登入指令、特定遠端 shell 指令,以及特定遠端複製指令 (ssh、scp、rlogin 及 telnet)。 |
| loginretries | rexec、rsh、rcp、ssh、scp、rlogin、telnet、ftp、login |
| /etc/nologin | rexec、rsh、rcp、ssh、scp、rlogin、telnet、ftp、login |
| rcmds=deny | rexec、rsh、rcp、ssh、scp |
| rcmds=hostlogincontrol and hostsdeniedlogin=<target_hosts> | rexec、rsh、rcp、ssh、scp、rlogin、telnet、ftp、login |
| ttys = !REXEC, !RSH | rexec、rsh、rcp、ssh、scp、rlogin、telnet、ftp、login |
| ttys = !REXEC, !RSH, /dev/pts | rexec、rsh |
| ttys = !REXEC, !RSH, ALL | rexec、rsh |
| expires | rexec、rsh、rcp、ssh、scp、rlogin、telnet、ftp、login |