2011年11月17日 星期四

帳號與群組

root 的UID及GID皆為0

預設帳號:
Apache或是nobody 執行apache的帳號
dovecot  執行dovecot (pop3伺服器)的帳號
named或bind 執行(DNS伺服器) 的帳號
lp  列印服務的帳號
postfix
squid  (PROXY)

新增帳號設定檔

/etc/default/useradd
SHELL=/bin/sh   //可改為 /bin/bash
# GROUP=100
# HOME=/home
//預設建立一個與帳號相同的群組,在/home 之下
# INACTIVE=-1    //預設不定義密碼變更期限
# EXPIRE=          //預設不定義帳號失效期限


/etc/login.defs
MAIL_DIR        /var/mail    //郵件存放目錄
FAILLOG_ENAB            yes   //登錄失敗狀況

LOG_OK_LOGINS           no      //是否紀綠登入成功的帳號
#記錄 su 的活動
SYSLOG_SU_ENAB          yes
SYSLOG_SG_ENAB          yes
#記錄登入失敗的帳號,可使用lastb查詢
FTMP_FILE       /var/log/btmp
#密碼時效控制
PASS_MAX_DAYS   99999   //可使用日數
PASS_MIN_DAYS   0    //多少日內不得變更
PASS_WARN_AGE   7  //失效幾日前提出警告

# 使用useradd自動取得UID的範圍
UID_MIN                  1000
UID_MAX                 60000
#使用groupadd自動取得GID的範圍
GID_MIN                  1000
GID_MAX                 60000
#密碼錯誤嘗試登入次數
LOGIN_RETRIES           5
#  需在幾秒內登入系統
LOGIN_TIMEOUT           60
#如果帳號目錄不存在,允許登入
DEFAULT_HOME    yes
# 如果群組中沒有其他帳號,使用userdel移除帳號時會一併將該群組刪除
USERGROUPS_ENAB yes


/etc/skel/.bashrc
/etc/skel/.profile

新增帳號
useradd [-u UID] [-g 初始群組] [-G 次要群組] [-mM][-c 說明欄] [-d 家目錄絕對路徑] [-s shell] 使用者帳號名
選項與參數:
-u  :後面接的是 UID ,
-g  :群組名稱, initial group
-G  :群組名稱,還可以加入的群組
-M  :強制!不要建立使用者家目錄!(系統帳號預設值)
-m  :強制!要建立使用者家目錄!(一般帳號預設值)
-c  :說明
-d  :指定某個目錄成為家目錄,而不要使用預設值。務必使用絕對路徑!
-r  :建立一個系統的帳號,這個帳號的 UID 會有限制
-s  :後面接一個 shell ,若沒有指定則預設是 /bin/bash
-e  :後面接一個日期,格式為『YYYY-MM-DD』帳號失效日
-f  :密碼是否會失效。0為立刻失效,-1 為永遠不失效(密碼只會過期而強制於登入時重新設定而已。)


範例一:
useradd -m peter
step 01 /etc/default/useradd
step 02  /etc/login.defs
step 03  /etc/skel/.bash* 複製到該帳號的根目錄之下
/etc/skel/ 預設有 .bashrc  .profile  檔案,由於/etc/default/useradd  指定 SKEL=/etc/skel,因此新增帳號時,會將此目錄下的檔案複製到使用者帳號根目錄下。


範例二:
useradd -u 501 -g 100 -G 1001 -d /home/peter -m peter
由於加了 -m 所以系統會將  /etc/skel 下的 profile 複製到 /home/peter之下的 .bash* ,此外,還有mail spool的相關檔案


範例三:新增與root相同權限的帳號
useradd miffy
passwd miffy
將 miffy 的 uid 與 gid 改為0


useradd 的預設值
useradd -D
GROUP=100        <==預設的群組
HOME=/home        <==預設的家目錄所在目錄
INACTIVE=-1        <==密碼失效日
EXPIRE=            <==帳號失效日
SHELL=/bin/bash        <==預設的 shell
SKEL=/etc/skel        <==使用者家目錄的內容資料參考目錄
CREATE_MAIL_SPOOL=yes   <==是否主動幫使用者建立郵件信箱(mailbox)


刪除帳號
userdel


連根目錄一起刪除
userdel  -r

usermod [-cdegGlsuLU] username   修改帳號
-c  :後面接帳號的說明
-d  :後面接帳號的家目錄
-e  :後面接日期,格式是 YYYY-MM-DD,也就是在 /etc/shadow 內的第八個欄位
-f  :後面接天數,為 shadow 的第七欄位。
-g  :後面接初始群組,修改 /etc/passwd 的第四個欄位!
-G  :後面接次要群組,修改使用者能夠支援的群組,修改的是 /etc/group
-a  :與 -G 合用,可『增加次要群組的支援』而非『設定』
-l  :後面接帳號名稱。亦即是修改帳號名稱, /etc/passwd 的第一欄!
-s  :後面接 Shell 的實際檔案,如 /bin/bash 或 /bin/csh
-u  :後面接 UID 數字
-L  :暫時將使用者的密碼凍結,僅改 /etc/shadow 的密碼欄。
-U  :將 /etc/shadow 密碼欄的 ! 拿掉,帳號可恢復使用

gpasswd:群組管理員功能   
gpasswd groupname
gpasswd [-A user1,...] [-M user3,...] groupname
gpasswd [-rR] groupname
選項與參數:
    :若沒有任何參數時,表示給予 groupname 一個密碼(/etc/gshadow)
-A  :將 groupname 的主控權交由後面的使用者管理(該群組的管理員)
-M  :將某些帳號加入這個群組當中!
-r  :將 groupname 的密碼移除
-R  :讓 groupname 的密碼欄失效
gpasswd [-ad] user groupname
-a  :將某位使用者加入到 groupname 這個群組當中!
-d  :將某位使用者移除出 groupname 這個群組當中。

groupadd 建立群組
groupadd testgroup  <==建立群組

資料來源:鳥哥的 Linux 私房菜 

相關設定檔
/etc/passwd  帳號設定檔
1.帳號名稱:
2.密碼:加密過的密碼欄位,若使用/etc/shadow,則此一欄位為x。若未使用shadow,且密碼欄位為*,則無法使用login
3.UID:使用者識別碼,0(系統管理員),1~1000(系統帳號)
4.GID:主要群組,定義在 /etc/group
5.使用者資訊說明欄:註解
6.家目錄:
7.Shell:(與系統的核心溝通以進行使用者的操作任務),若為 /sbin/nologin 無法登入

若是不想讓帳號登入,除密碼欄位設為*外,可使用passwd -l user ,或是在shell填入 /sbin/nologin 

/etc/shadow 加密過的密碼檔
1.帳號名稱:
2.密碼:加密過的密碼欄位,在此欄位前加上 ! 或 * 改變密碼欄位長度,就會讓密碼『暫時失效』了。
3.最近更動密碼的日期
4.密碼不可被更動的天數,0沒限制
5.密碼需要重新變更的天數,99999沒限制
6.密碼需要變更期限前的警告天數
7.密碼過期後的帳號寬限時間(密碼失效日),不過如果密碼過期了, 那當你登入系統時,系統會強制要求你必須要重新設定密碼才能登入繼續使用喔,
8.帳號失效日期:
9.保留

日期的時間是以 1970 年 1 月 1 日作為 1 而累加的日期

/etc/group
1.群組名稱:
2.群組密碼:這個設定通常是給『群組管理員』使用的,目前很少有這個機會設定群組管理員,密碼已經移動到 /etc/gshadow去,這個欄位只會存在一個『x』
3.GID:就是群組的 ID 啊
4.此群組支援的帳號名稱:若有多個人員,以『,』隔開


/var/mail/帳號名稱  使用者郵件

newgrp: 有效群組的切換
exit 離開回原有效群組
參考資料:鳥哥的 Linux 私房菜 


沒有留言:

張貼留言