在Linux下登錄用戶帳戶的管理是通過utmp和wtmp這兩個工具來實現的。wtmp還記錄系統重啟和系統狀態變化的有關信息。所有與utmp和wtmp相關的數據都分別被保存在/var/run/utmp和/var/log/wtmp這兩個文件中。這兩個文件均歸屬於root用戶所有並且訪問權限被設置為644,這些文件中的數據是加密過的。可以用dump-utmp這個工具將原始的數據轉換為ASCII的數據,便於系統管理員分析用戶的登錄以及系統重啟和系統狀態變化的有關信息。
登錄帳戶管理的相關命令
last 命令提供了每個用戶登錄和退出的時間,同時還有系統重新啟動以及運行狀態改變的信息。默認情況下,last分析/var/log/wtmp文件並顯示每個連接和運行狀態改變的信息。Last輸出的信息可能太多而讓查看的人無法應付,典型的用法是last –5,表示查看/var/log/wtmp中的最新5條記錄的內容。
who 命令的主要用處是報告系統中當前登錄進來的用戶信息。Who命令提供了如下的信息:用戶登錄進入使用的系統終端設備、用戶的地址、使用的主機名、X顯示的窗口(假如使用了X Windows系統)、用戶是否接受其他用戶的消息和交談請求等。
ac 命令提供了有關用戶連接的大概統計,我們可以使用帶有標志 d 和 p 的 ac 命令。標志 d 顯示了一天的總連接統計,標志 p 顯示了每一個用戶的連接時間。這種統計信息的方式對了解與探測入侵有關的用戶情況及其他活動很有幫助。
lastlog 命令讀取/var/log/lastlog文件並產生用戶最後一次登錄信息的報告lastlog命令也用於在Linux系統中檢查不尋常的登錄記錄。
2、系統帳戶的審計
Linux操作系統可以通過設置日志文件可以對每個用戶的每一條命令進行紀錄,不過這一功能默認是沒有打開的。
開啟這個功能的過程:
# touch /var/log/pacct # action /var/log/pact
也可以用自已的文件來代替/var/log/pacct這個文件。但必須路徑和文件名的正確。
sa命令與 ac 命令一樣,sa 是一個統計命令。該命令可以獲得每個用戶或每個命令的進程使用的大致情況,並且提供了系統資源的消費信息。在很大程度上,sa 又是一個記帳命令,對於識別特殊用戶,特別是已知特殊用戶使用的可疑命令十分有用。另外,由於信息量很大,需要處理腳本或程序篩選這些信息。
lastcomm命令, 與 sa 命令不同,lastcomm 命令提供每一個命令的輸出結果,同時打印出與執行每個命令有關的時間印戳。就這一點而說,lastcomm 比 sa 更有安全性。如果系統被入侵,請不要相信在 lastlog、utmp、wtm中記錄的信息,但也不要忽略,因為這些信息可能被修改過了。另外有可能有人替換了who程序來掩人耳目。通常,在已經識別某些可疑活動後,進程記帳可以有效的發揮作用。使用 lastcomm 可以隔絕用戶活動或在特定時間執行命令。
3、使用logrorate對審計文件管理
/var/log/utmp,/var/log/wtmp和/var/log/pacct文件都是動態的數據文件。wtmp和pacct文件是在文件尾部不斷地增加記錄。在繁忙的網絡上,這些文件會變得很大。Linux提供了一個叫logrotate的程序,它允許管理員對這些文件進行管理。
Logrotate讀取/etc/logrotate.d目錄下的文件。管理員通過該目錄下的腳本文件,控制logrotate程序的運作。一個典型的腳本文件如下:
{ rotate 5 weekly errors root@serve1r mail root@server1 copytruncate compress size 100k }
腳本文件的含義如下:
● rotate 5——保留該文件一份當前的備份和5份舊的備份。
● weekly——每周處理文件一次,通常是一周的第一天。
● errors——向郵件地址發送錯誤報告。
● mail——向郵件地址發送相關的信息。
● copytruncate——允許進程持續地記錄,備份文件創建後,把活動的日志文件清空。
● compress——使用gzip工具對舊的日志文件進行壓縮。
● size 100k——當文件超過100k 時自動處理。
與用戶(user)和用戶組(group)相關的配置文件
1)與用戶(user)相關的配置文件;
/etc/passwd 注:用戶(user)的配置文件;
/etc/shadow 注:用戶(user)影子口令文件;
2)與用戶組(group)相關的配置文件;
/etc/group 注:用戶組(group)配置文件;
/etc/gshadow 注:用戶組(group)的影子文件;
管理用戶(user)和用戶組(group)的相關工具或命令
1)管理用戶(user)的工具或命令
useradd 注:添加用戶;
adduser 注:添加用戶;
passwd 注:為用戶設置密碼;
usermod 注:修改用戶命令,可以通過;
usermod 來修改登錄名、用戶的家目錄等等;
pwcov 注:同步用戶;
從/etc/passwd 到/etc/shadowpwck 注:pwck是校驗用戶配置文件/etc/passwd 和/etc/shadow 文件內容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是從/etc/shadow和 /etc/passwd 創建/etc/passwd ,然後會刪除 /etc/shadow 文件;
finger 注:查看用戶信息工具;
id 注:查看用戶的UID、GID及所歸屬的用戶組;
chfn 注:更改用戶信息工具;
su 注:用戶切換工具;
sudo 注:sudo 是通過另一個用戶來執行命令(execute a command as another user),su 是用來切換用戶,然後通過切換到的用戶來完成相應的任務,但sudo 能後面直接執行命令,比如sudo 不需要root 密碼就可以執行root 賦與的執行只有root才能執行相應的命令;但得通過visudo 來編輯/etc/sudoers來實現;
visudo 注:visodo 是編輯 /etc/sudoers 的命令;也可以不用這個命令,直接用vi 來編輯 /etc/sudoers 的效果是一樣的;
sudoedit 注:和sudo 功能差不多;2)管理用戶組(group)的工具或命令;
groupadd 注:添加用戶組;
groupdel 注:刪除用戶組;
groupmod 注:修改用戶組信息;
groups 注:顯示用戶所屬的用戶組;
grpckgrpconv 注:通過/etc/group和/etc/gshadow 的文件內容來同步或創建/etc/gshadow ,如果/etc/gshadow 不存在則創建;
grpunconv 注:通過/etc/group 和/etc/gshadow 文件內容來同步或創建/etc/group ,然後刪除gshadow文件。
3、/etc/skel 目錄;/etc/skel目錄一般是存放用戶啟動文件的目錄,這個目錄是由root權限控制,當我們添加用戶時,這個目錄下的文件自動復制到新添加的用戶的家目錄下;/etc/skel 目錄下的文件都是隱藏文件,也就是類似.file格式的;我們可通過修改、添加、刪除/etc/skel目錄下的文件,來為用戶提供一個統一、標准的、默認的用戶環境。
[root@localhost beinan]# ls -la /etc/skel/總用量 92drwxr-xr-x 3 root root 4096 8月 11 23:32 .drwxr-xr-x 115 root root 12288 10月 14 13:44 ..-rw-r--r-- 1 root root 24 5月 11 00:15 .bash_logout-rw-r--r-- 1 root root 191 5月 11 00:15 .bash_profile-rw-r--r-- 1 root root 124 5月 11 00:15 .bashrc-rw-r--r-- 1 root root 5619 2005-03-08 .canna-rw-r--r-- 1 root root 438 5月 18 15:23 .emacs-rw-r--r-- 1 root root 120 5月 23 05:18 .gtkrcdrwxr-xr-x 3 root root 4096 8月 11 23:16 .kde-rw-r--r-- 1 root root 658 2005-01-17 .zshrc /etc/skel 目錄下的文件,一般是我們用useradd 和adduser 命令添加用戶(user)時,系統自動復制到新添加用戶(user)的家目錄下;如果我們通過修改 /etc/passwd 來添加用戶時,我們可以自己創建用戶的家目錄,然後把/etc/skel 下的文件復制到用戶的家目錄下,然後要用chown 來改變新用戶家目錄的屬主。
4、/etc/login.defs 配置文件;/etc/login.defs 文件是當創建用戶時的一些規劃,比如創建用戶時,是否需要家目錄,UID和GID的范圍;用戶的期限等等,這個文件是可以通過root來定義的;
比如Fedora 的 /etc/logins.defs 文件內容;
# *REQUIRED*# Directory where mailboxes reside, _or_ name of file, relative to the # home directory. If you _do_ define both, MAIL_DIR takes precedence. # QMAIL_DIR is for Qmail #QMAIL_DIR MaildirMAIL_DIR /var/spool/mail 注:創建用戶時, 要在目錄/var/spool/mail中創建一個用戶mail文件; #MAIL_FILE .mail# Password aging controls: # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires. #PASS_MAX_DAYS 99999 注:用戶的密碼不過期最多的天數; PASS_MIN_DAYS 0 注:密碼修改之間最小的天數;PASS_MIN_LEN 5 注:密碼最小長度;PASS_WARN_AGE 7 注: # Min/max values for automatic uid selection in useradd #UID_MIN 500 注:最小UID為500 ,也就是說添加用戶時,UID 是從500開始的; UID_MAX 60000 注:最大UID為60000; #Min/max values for automatic gid selection in groupadd #GID_MIN 500 注:GID 是從500開始;GID_MAX 60000 # If defined, this command is run when removing a user. # It should remove any at/cron/print jobs etc. owned by # the user to be removed (passed as the first argument). #USERDEL_CMD /usr/sbin/userdel_local # If useradd should create home directories for users by default # On RH systems, we do. This option is ORed with the -m flag on # useradd command line.#CREATE_HOME yes 注:是否創用戶家目錄,要求創建;
5、/etc/default/useradd 文件;
通過useradd 添加用戶時的規則文件;useradd defaults fileGROUP=100HOME=/home 注:把用戶的家目錄建在/home中;INACTIVE=-1 注:是否啟用帳號過期停權,-1表示不啟用;EXPIRE= 注:帳號終止日期,不設置表示不啟用;SHELL=/bin/bash 注:所用SHELL的類型;SKEL=/etc/skel 注: 默認添加用戶的目錄默認文件存放位置;也就是說,當我們用adduser添加用戶時,用戶家目錄下的文件,都是從這個目錄中復制過去的。
後記
關於用戶(user)和用戶組(group)管理內容大約就是這麼多;只要把上面所說的內容了解和掌握,用戶(user)和用戶組(group)管理就差不多了;由於用戶(user)和用戶組(group)是和文件及目錄權限聯系在一起的,所以文件及目錄權限的操作也會獨立成文來給大家介紹;
本文只是讓新手弟兄明白用戶(user)和用戶組(group)一些原理,所以我在寫此文的時候,大多是解說內容,我的意思是通過解說和索引一些命令,讓新手弟兄明白一點理論是比較重要的,技術操作無非是命令的用法.