要登入 Linux 系統一定要有帳號與密碼才行,否則怎麼登入,您說是吧?!不過, 不同的使用者應該要擁有不同的權限才行吧?我們還可以透過 user/group 的特殊權限設定, 來規範出不同的群組開發專案呢∼在 Linux 的環境下,我們可以透過很多方式來限制使用者能夠使用的系統資源, 包括 bash shell 章節提到的 ulimit 限制、還有特殊權限限制,如 umask 等等。 透過這些舉動,我們可以規範出不同使用者的使用資源。另外,還記得系統管理員的帳號嗎?對! 就是 root 。請問一下,除了 root 之外,是否可以有其他的系統管理員帳號? 為什麼大家都要盡量避免使用數字型態的帳號?如何修改使用者相關的資訊呢?這些我們都得要瞭解瞭解的! |
[root@linux ~]# vi /etc/passwd .....(前面省略)..... dmtsai:x:501:501::/home/dmtsai:/bin/bash <==將原本的 501:501 改成 3000:501 [root@linux ~]# ls -ld /home/ drwxr-xr-x 3 501 dmtsai 4096 Aug 30 10:37 dmtsai # 瞧!這裡就能夠知道,其實檔案記錄的是 UID 啦∼ |
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 |
id 範圍 | 該 ID 使用者特性 |
0 | 當 UID 是 0 時,代表這個帳號是『系統管理員』!所以當你要作另一個系統管理員帳號時, 你可以將該帳號的 UID 改成 0 即可;這也就是說,一部系統上面的系統管理員不見得只有 root 喔! 不過,不很建議有多個帳號的 UID 是 0 啦∼ |
1~499 | 保留給系統使用的 ID,其實 1~65534 之間的帳號並沒有不同,
也就是除了 0 之外,其他的 UID 並沒有不一樣,預設 500
以下給系統作為保留帳號只是一個習慣。這樣的好處是,以有名的 DNS 伺服器的啟動服務『 named
』為例,這個程式的預設所有人 named 的帳號 UID 是 25 ,當有其他的帳號同樣是 25
時,很可能會造成系統的一些小問題!為了杜絕這樣的問題,建議保留 500 以前的 UID 給系統吧! 不過,一般來說, 1~99 會保留給系統預設的帳號,另外 100~499 則保留給一些服務來使用。 |
500~65535 | 給一般使用者用的。事實上,目前的 linux 核心 (2.6.x 版)已經可以支援到 4294967295 (2^32-1) 這麼大的 UID 號碼喔! |
root:$1$i9Ejldjfjio389u9sjl$jljsoi45QE/:12959:0:99999:7::: bin:*:12959:0:99999:7::: daemon:*:12959:0:99999:7::: adm:*:12959:0:99999:7::: |
dmtsai:$1$8zdAKdfC$XDa8eSus2I7nQL7UjRsIy/:13025:5:60:7:2:13125: |
You must wait longer to change your password passwd: Authentication token manipulation error |
Warning: your password will expire in 5 days |
root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon sys:x:3:root,bin,adm |
[root@linux ~]# grep dmtsai /etc/passwd /etc/group /etc/gshadow
/etc/passwd:dmtsai:x:501:501::/home/dmtsai:/bin/bash
/etc/group:users:x:100:dmtsai
/etc/group:dmtsai:x:501:
/etc/gshadow:users:::dmtsai
/etc/gshadow:dmtsai:!::
|
[dmtsai@linux ~]$ groups
dmtsai users
|
[dmtsai@linux ~]$ newgrp users [dmtsai@linux ~]$ groups users dmtsai |
root:::root bin:::root,bin,daemon daemon:::root,bin,daemon sys:::root,bin,adm |
[root@linux ~]# useradd [-u UID] [-g initial_group] [-G other_group] \ > -[Mm] [-c 說明欄] [-d home] [-s shell] username 參數: -u :後面接的是 UID ,是一組數字。直接指定一個特定的 UID 給這個帳號; -g :後面接的那個群組名稱就是我們上面提到的 initial group 啦∼ 該 group ID (GID) 會被放置到 /etc/passwd 的第四個欄位內。 -G :後面接的群組名稱則是這個帳號還可以支援的群組。 這個參數會修改 /etc/group 內的相關資料喔! -M :強制!不要建立使用者家目錄 -m :強制!要建立使用者家目錄! -c :這個就是 /etc/passwd 的第五欄的說明內容啦∼可以隨便我們設定的啦∼ -d :指定某個目錄成為家目錄,而不要使用預設值; -r :建立一個系統的帳號,這個帳號的 UID 會有限制 (/etc/login.defs) -s :後面接一個 shell ,預設是 /bin/bash 的啦∼ 範例: 範例一:完全參考預設值建立一個使用者,名稱為 vbird1 [root@linux ~]# useradd vbird1 [root@linux ~]# ls -l /home drwxr-xr-x 3 vbird1 vbird1 4096 Aug 30 17:33 vbird1 [root@linux ~]# grep vbird1 /etc/passwd /etc/shadow /etc/group /etc/passwd:vbird1:x:502:502::/home/vbird1:/bin/bash /etc/shadow:vbird1:!!:13025:0:99999:7::: /etc/group:vbird1:x:502: # 做這個範例只是想要讓您瞭解,其實系統已經規範好了一些新增使用者時的參數了! # 因此,當我們使用 useradd 時,系統會主動的去修改 /etc/passwd 與 /etc/shadow, # 而這兩個檔案內的相關欄位參考值,則會以一些設定檔的內容來規範喔! # 同時也要注意到,使用 useradd 新增使用者時,這個使用者的 /etc/shadow # 密碼欄會是不可登入的 (以 !! 為開頭),因此還需要使用 passwd # 來給予 vbird1 密碼後,才算新增完畢! 範例二:我知道我的系統當中有個群組名稱為 users ,且 UID 700 並不存在, 請用這兩個參數給予 vbird2 建立一個帳號! [root@linux ~]# useradd -u 700 -g users vbird2 [root@linux ~]# ls -l /home drwxr-xr-x 3 vbird2 users 4096 Aug 30 17:43 vbird2 [root@linux ~]# grep vbird2 /etc/passwd /etc/shadow /etc/group /etc/passwd:vbird2:x:700:100::/home/vbird2:/bin/bash /etc/shadow:vbird2:!!:13025:0:99999:7::: # 看一下,UID 與 initial group 確實改變成我們需要的了! 範例三:建立一個系統帳號,名稱為 vbird3 [root@linux ~]# useradd -r vbird3 [root@linux ~]# grep vbird3 /etc/passwd /etc/shadow /etc/group /etc/passwd:vbird3:x:101:102::/home/vbird3:/bin/bash /etc/shadow:vbird3:!!:13025:::::: /etc/group:vbird3:x:102: # 很重要喔!您會發現, UID 竟然是 101 ,而 GID 怎麼會是 102, # 並且與 /etc/group 有對應的關係喔!有沒有加 -r 差很多ㄟ! |
GROUP=100 <==預設的群組 HOME=/home <==預設的家目錄所在目錄 INACTIVE=-1 <==在 /etc/shadow 內的第 7 欄 EXPIRE= <==在 /etc/shadow 內的第 8 欄 SHELL=/bin/bash <==預設的 shell SKEL=/etc/skel <==使用者家目錄的內容資料參考目錄 |
MAIL_DIR /var/spool/mail <==使用者預設郵件信箱放置目錄 PASS_MAX_DAYS 99999 <==/etc/shadow 內的第 5 欄 PASS_MIN_DAYS 0 <==/etc/shadow 內的第 4 欄 PASS_MIN_LEN 5 <==密碼最短的字元長度,建議可以改到 6 以上 PASS_WARN_AGE 7 <==/etc/shadow 內的第 6 欄 UID_MIN 500 <==使用者最小的 UID,意即小於 500 的 UID 為系統保留 UID_MAX 60000 <==使用者能夠用的最大 UID GID_MIN 500 <==使用者自訂群組的最小 GID,小於 500 為系統保留 GID_MAX 60000 <==使用者自訂群組的最大 GID CREATE_HOME yes <==在不加 -M 及 -m 時,是否主動建立使用者家目錄? |
[root@linux ~]# passwd [useraccount] 範例一:如果 root 要幫 dmtsai 修改密碼時? [root@linux ~]# passwd dmtsai Changing password for user dmtsai. New UNIX password: <==這裡直接輸入新的密碼,螢幕不會有任何反應 BAD PASSWORD: it is based on a dictionary word <==密碼太簡單時的錯誤! Retype new UNIX password: <==再輸入一次同樣的密碼 passwd: all authentication tokens updated successfully. <==竟然還是成功修改了! 範例二: dmtsai 這個使用者想要修改自己的密碼時 [dmtsai@linux ~]$ passwd Changing password for user dmtsai. Changing password for dmtsai (current) UNIX password: <==這裡輸入『原有的舊密碼』 New password: <==這裡輸入新密碼 BAD PASSWORD: it is based on your username <==密碼的規範是很嚴格的 New password: BAD PASSWORD: it is based on your username New password: BAD PASSWORD: it is based on a dictionary word passwd: Authentication token manipulation error |
[root@linux ~]# usermod [-cdegGlsuLU] username 參數: -c :後面接帳號的說明,即 /etc/passwd 第五欄的說明欄,可以加入一些帳號的說明。 -d :後面接帳號的家目錄,即修改 /etc/passwd 的第六欄; -e :後面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 內的第八個欄位資料啦! -g :後面接 group name,修改 /etc/passwd 的第四個欄位,亦即是 GID 的欄位! -G :後面接 group name,修改這個使用者能夠支援的群組,修改的是 /etc/group 囉∼ -l :後面接帳號名稱。亦即是修改帳號名稱, /etc/passwd 的第一欄! -s :後面接 Shell 的實際檔案,例如 /bin/bash 或 /bin/csh 等等。 -u :後面接 UID 數字啦!即 /etc/passwd 第三欄的資料; -L :暫時將使用者的密碼凍結,讓他無法登入。其實僅改 /etc/shadow 的密碼欄。 -U :將 /etc/shadow 密碼欄的 ! 拿掉,解凍啦! 範例: 範例一:修改使用者 dmtsai 的說明欄,加上『VBird's test』的說明。 [root@linux ~]# usermod -c "VBird's test" dmtsai [root@linux ~]# grep dmtsai /etc/passwd dmtsai:x:501:501:VBird's test:/home/dmtsai:/bin/bash 範例二:使用者 dmtsai 密碼在 2006/01/01 失效。 [root@linux ~]# usermod -e "2006-01-01" dmtsai [root@linux ~]# grep dmtsai /etc/shadow dmtsai:$1$24ISJM4K$bbdijdreoieaVaBMAHsm6.:13026:0:99999:7::13149: 範例三:暫時凍結 dmtsai 的密碼! [root@linux ~]# usermod -L dmtsai [root@linux ~]# grep dmtsai /etc/shadow dmtsai:!$1$24ISJM4K$bbdijdreoieaVaBMAHsm6.:13026:0:99999:7::13149: # 注意到,密碼欄(第二欄)多了一個 ! 號!那個驚嘆號會讓密碼無效喔! [root@linux ~]# usermod -U dmtsai <==這樣就解開了! 範例四:萬一 dmtsai 這個傢伙被建立時忘記建立家目錄,該如何是好? [root@linux ~]# usermod -d /home/dmtsai2 -m dmtsai # 如果僅是 -d /home/dmtsai2 表示僅修改 /etc/passwd 第六欄的內容而已, # 如果加上 -m 這個參數,則表示新建一個家目錄的意思! # 另外,如果原本的家目錄是 /home/dmtsai ,那 -d /home/dmtsai2 -m # 會將原本的 /home/dmtsai 更名為 /home/dmtsai2 喔! |
[root@linux ~]# userdel [-r] username 參數: -r :連同使用者的家目錄也一起刪除 範例: 範例一:刪除 vbird2 ,連同家目錄一起刪除 [root@linux ~]# userdel -r vbird2 |
[dmtsai@linux ~]$ chsh [-ls] 參數: -l :列出目前系統上面可用的 shell ,其實就是 /etc/shells 的內容! -s :設定修改自己的 Shell 囉 範例: 範例一:列出目前系統上面所以的 shell ,並且指定 csh 為自己的 shell [dmtsai@linux ~]$ chsh -l /bin/sh /bin/bash /sbin/nologin /bin/ksh /bin/tcsh /bin/csh /bin/zsh [dmtsai@linux ~]$ chsh -s /bin/csh; grep dmtsai /etc/passwd Password: <==為了防止帳號被亂搞∼所以需要輸入 dmtsai 的密碼確認! Shell changed. dmtsai:x:501:501::/home/dmtsai:/bin/csh |
[root@linux ~]# chfn [-foph] 參數: -f :後面接完整的大名; -o :您辦公室的房間號碼; -p :辦公室的電話號碼; -h :家裡的電話號碼! 範例: 範例一:我用 dmtsai 這個使用者來更改一下自己的相關資訊! [dmtsai@linux ~]$ chfn Changing finger information for dmtsai. Password: <==為了防止帳號被亂搞∼所以需要輸入 dmtsai 的密碼確認! Name []: VBird' Test account Office []: Tainan office 1 Office Phone []: 06-1234567 Home Phone []: 06-7654321 Finger information changed. [dmtsai@linux ~]$ grep dmtsai /etc/passwd dmtsai:x:501:501:VBird' Test account,Tainan office 1,06-1234567,06-7654321: /home/dmtsai:/bin/bash |
[root@linux ~]# finger [-s] username 參數: -s :使用長串資料輸出格式。 範例: 範例一:將剛剛 dmtsai 建立的一些使用者資訊呼叫出來視察! [root@linux ~]# finger dmtsai Login: dmtsai Name: VBird's Test account Directory: /home/dmtsai Shell: /bin/bash Office: Tainan office 1, 06-1234567 Home Phone: 06-7654321 Last login Tue Aug 30 15:01 (CST) on tty1 from localhost No mail. No Plan. |
[root@linux ~]# id [username] 範例一:查閱自己的相關資訊! [root@linux ~]# id uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),10(wheel) 範例二:查閱一下 dmtsai 吧∼ [root@linux ~]# id dmtsai uid=501(dmtsai) gid=501(dmtsai) groups=501(dmtsai),100(users) |
[root@linux ~]# groupadd [-g gid] [-r] 參數: -g :後面接某個特定的 GID ,用來直接給予某個 GID ∼ -r :建立系統群組啦!與 /etc/login.defs 內的 GID_MIN 有關。 範例: 範例一:新建一個群組,名稱為 group1 [root@linux ~]# groupadd group1 [root@linux ~]# grep group1 /etc/group /etc/gshadow /etc/group:group1:x:502: /etc/gshadow:group1:!:: # 注意注意!在 /etc/gshadow 裡面可以發現,密碼是不許登入的喔! 範例二:新建一個系統群組,名稱為 group2 [root@linux ~]# groupadd -r group2 [root@linux ~]# grep group2 /etc/group /etc/gshadow /etc/group:group2:x:101: /etc/gshadow:group2:!:: |
[root@linux ~]# groupmod [-g gid] [-n group_name] 參數: -g :修改既有的 GID 數字; -n :修改既有的群組名稱 範例: 範例一:將剛剛上個指令建立的 group2 名稱改為 groupname , GID 為 103 [root@linux ~]# groupmod -g 103 -n groupname group2 [root@linux ~]# grep groupname /etc/group /etc/gshadow /etc/group:groupname:x:103: /etc/gshadow:groupname:!:: |
[root@linux ~]# groupdel [groupname] 範例一:將剛剛的 groupname 刪除! [root@linux ~]# groupdel groupname 範例二:若要刪除 dmtsai 這個群組的話?? [root@linux ~]# groupdel dmtsai groupdel: cannot remove user's primary group. |
關於系統管理員(root)做的動作: [root@linux ~]# gpasswd groupname [root@linux ~]# gpasswd [-A user1,...] [-M user3,user4...] groupname [root@linux ~]# gpasswd [-rR] groupname 參數: :若沒有任何參數時,表示給予 groupname 一個密碼(/etc/gshadow) -A :將 groupname 的主控權交由後面的使用者管理(該群組的管理員) -M :將某些帳號加入這個群組當中! -r :將 groupname 的密碼移除 -R :讓 groupname 的密碼欄失效,所以 newgrp 就不能使用了! 關於群組管理員(Group administrator)做的動作: [someone@linux ~]$ gpasswd [-ad] user groupname 參數: -a :將某位使用者加入到 groupname 這個群組當中! -d :將某位使用者移除出 groupname 這個群組當中。 範例一:建立一個新群組,名稱為 testgroup 且群組交由 dmtsai 管理: [root@linux ~]# groupadd testgroup [root@linux ~]# gpasswd testgroup Changing the password for group testgroup New Password: Re-enter new password: # 輸入兩次密碼就對了! [root@linux ~]# gpasswd -A dmtsai -M dmtsai,vbird testgroup [root@linux ~]# grep testgroup /etc/group /etc/gshadow /etc/group:testgroup:x:502:dmtsai,vbird /etc/gshadow:testgroup:1CEVbrcjxO6Ps:dmtsai:dmtsai,vbird # 很有趣吧!此時 dmtsai 則擁有 testgroup 的主控權喔!若以我們討論區 ( # http://phorum.vbird.org 的概念來說,群組管理員有點像『版主』啦! 範例二:以 dmtsai 登入系統,並且讓他加入 vbird1 成為 testgroup 成員之一: [dmtsai@linux ~]$ gpasswd -a vbird1 testgroup Adding user vbird1 to group testgroup |
[root@linux ~]# passwd [-lunxwS] username 參數: -l :將 username 這個帳號的密碼鎖住 (lock),在 /etc/shadow 內的密碼欄修訂∼ -u :將 -l 的 lock 解開! -n :後面接天數 (數字) ,最短天數;亦即是 /etc/shadow 內的第四欄; -x :後面接天數 (數字) ,最長天數;亦即是 /etc/shadow 內的第五欄; -w :後面接天數 (數字) ,警告天數;亦即是 /etc/shadow 內的第六欄; -S :顯示目前這個 username 的相關資訊。 範例: 範例一:將 dmtsai 這個使用者的密碼凍結,並觀察他! [root@linux ~]# passwd -l dmtsai Locking password for user dmtsai. passwd: Success [root@linux ~]# passwd -S dmtsai Password locked. [root@linux ~]# grep dmtsai /etc/shadow dmtsai:!!$1$TDy6D7eg$jVJV/FMaQn14v5Kl7sqw6/:13026:0:99999:7::13149: 範例二:將上述密碼凍結解開 [root@linux ~]# passwd -u dmtsai |
[root@linux ~]# su [-lcm] [username] 參數: - :如果執行 su - 時,表示該使用者想要變換身份成為 root ,且使用 root 的 環境設定參數檔,如 /root/.bash_profile 等等。 -l :後面可以接使用者,例如 su -l dmtsai ,這個 -l 好處是,可使用欲變換身份者 他的所有相關環境設定檔。 -m :-m 與 -p 是一樣的,表示『使用目前的環境設定,而不重新讀取新使用者的設定檔。』 -c :僅進行一次指令,所以 -c 後面可以加上指令喔! 範例: 範例一:由原本的 dmtsai 這個使用者,變換身份成為 root 。 [dmtsai@linux ~]$ su Password: <==這裡輸入 root 的密碼喔! [root@linux ~]# env USER=dmtsai USERNAME=root MAIL=/var/spool/mail/dmtsai LOGNAME=dmtsai # 注意到了嗎?如果使用 su 沒有加上 - 的話,那麼很多原本使用者的相關設定會繼續存在, # 這也會造成後來的 root 身份在執行時的困擾。最常見的就是 PATH 這個變數的問題! [root@linux ~]# exit <==這樣可以離開 su 的環境! [dmtsai@linux ~]$ su - Password: <==這裡輸入 root 的密碼喔! [root@linux ~]# env USER=root MAIL=/var/spool/mail/root LOGNAME=root # 瞭解差異了吧?!所以,下次在變換成為 root 時,記得最好使用 su - 喔! 範例二:使用 root 的身份,執行 head -n 3 /etc/shadow [dmtsai@linux ~]$ su - -c "head -n 3 /etc/shadow" Password: <==這裡輸入 root 的密碼喔! root:$1$jaldj9843u29jlj9u839jljlcghjlE/:12959:0:99999:7::: bin:*:12959:0:99999:7::: daemon:*:12959:0:99999:7::: 範例三:原本是 dmtsai 這個使用者,想要變換身份成為 vbird 時? [dmtsai@linux ~]$ su -l vbird Password: <==這裡輸入 vbird 的密碼喔! |
[root@linux ~]# sudo [-u [username|#uid]] command 參數: -u :後面可以接使用者帳號名稱,或者是 UID。例如 UID 是 500 的身份,可以: -u #500 來作為切換到 UID 為 500 的那位使用者。 範例: 範例一:一般身份使用者使用 sudo 在 /root 底下建立目錄: [dmtsai@linux ~]$ sudo mkdir /root/testing We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. Password: <==這裡輸入 dmtsai 自己的密碼 dmtsai is not in the sudoers file. This incident will be reported. # 瞧!因為 dmtsai 不在 /etc/sudoers ,所以他就無法執行 sudo 喔! 範例二:假設 dmtsai 已經具有 sudo 的執行權限,如何在 /root 底下建立目錄? [dmtsai@linux ~]$ sudo mkdir /root/testing Password: <==這裡輸入 dmtsai 自己的密碼 範例三:如何將 sudo 與 su 搭配使用? [dmtsai@linux ~]$ sudo su - 範例四:dmtsai 想要切換身份成為 vbird 來進行 touch 時? [dmtsai@linux ~]$ sudo -u vbird touch /home/vbird/test |
[root@linux ~]# visudo # sudoers file. # This file MUST be edited with the 'visudo' command as root. # See the sudoers man page for the details on how to write a sudoers file. # # Host alias specification # User alias specification # Cmnd alias specification # Defaults specification # Runas alias specification # User privilege specification root ALL=(ALL) ALL dmtsai ALL=(ALL) ALL <==這裡將 dmtsai 製作成完全可用! # Uncomment to allow people in group wheel to run all commands # %wheel ALL=(ALL) ALL # Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL # Samples # %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom # %users localhost=/sbin/shutdown -h now |
例題:我想要建立一個可以幫忙系統管理員變更使用者密碼的群組,名稱為 ADMPW
( 注意,在 sudoers 內,這個別名的名稱一定要是大寫字元才行!)但是這個群組不能修改 root 的密碼喔!
且他們執行 sudo 時,不需要密碼驗證。 答:
User_Alias ADMPW = vbird, dmtsai, vbird1, vbird3 ADMPW ALL = NOPASSWD: !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, \ !/usr/bin/passwd root上面的意思是說,我的系統上面有四個帳號,分別是 vbird, vbird1, vbird3 與 dmtsai 這四個帳號加入 sudo 內的 ADMPW 群組中,這四個帳號可以使用 sudo 進行『 /usr/bin/passwd * 』 密碼的更改動作,但是不能 (在指令前面加入 ! 代表不可) 使用 /usr/bin/passwd 或 /usr/bin/passwd root ,如此一來,就讓該 ADMPW 可以更改使用者的密碼,但是不能變更 root 的密碼囉! ^_^ |
例題:我的系統中有 DNS 服務,他的啟動指令在 /etc/init.d/named ,如果我想要建立一個 DNSMASTER
的群組來管理他時?如何是好? 答:
User_Alias DNSMASTER = vbird, dmtsai Cmnd_Alias DNSCMD = /etc/init.d/named, /usr/bin/vim /var/named/* DNSMASTER ALL = DNSCMD看的懂嗎?嘿嘿!因為 DNS 的設定檔大多在 /var/named 裡面,所以,我也允許相關帳號用 vi 去處理 DNS 的設定檔啦!很簡單對吧! ^_^ |
This account is currently not available. |
[root@linux ~]# cat /etc/pam.d/passwd
#%PAM-1.0
auth required pam_stack.so service=system-auth
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
|
[root@linux ~]# cat /etc/pam.d/login #%PAM-1.0 auth required pam_securetty.so auth required pam_stack.so service=system-auth auth required pam_nologin.so account required pam_stack.so service=system-auth password required pam_stack.so service=system-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_stack.so service=system-auth session optional pam_console.so # pam_selinux.so open should be the last session rule session required pam_selinux.so multiple open |
tty1 tty2 tty3 tty4 ... |
[root@linux ~]# vi /etc/security/limits.conf # 新增這兩行 dmtsai hard fsize 10240 @users hard fsize 10240 # 注意到,帳號前面加上 @ 表示為『群組!』 |
[root@linux ~]# lastlog Username Port From Latest root tty1 Tue Aug 16 18:06:20 +0800 2005 bin **Never logged in** daemon **Never logged in** ....以下省略..... |
[vbird@linux ~]$ w
16:50:39 up 1:58, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
vbird pts/0 vbird 4:37pm 0.00s 0.06s 0.01s w
dmtsai pts/1 dmtsai 4:38pm 1:51 0.07s 0.01s man write
|
[vbird@linux ~]$ write dmtsai Hi, How are you doing today.... Nothing.... just say hello to you! <==這裡按下 [ctrl]+d |
[dmtsai@linux ~]$ Hi, How are you doing today.... Nothing.... just say hello to you! EOF |
[dmtsai@linux ~]$ mesg n
|
[vbird@linux ~]$ write dmtsai
write: dmtsai has messages disabled
|
[root@linux ~]# wall "I will shutdown the linux server about 5m later.
> If you still have to login, please tell me.
> Or I will do it....."
|
[vbird@linux ~]$ mail dmtsai -s "nice to meet you" Hello, D.M. Tsai Nice to meet you in the network. You are so nice. byebye! . <==這裡很重要喔,結束時,最後一行輸入小數點 . 即可! Cc: <==這裡是所謂的『副本』,不需要寄給其他人,所以直接 [Enter] [vbird@linux ~]$ <==出現提示字元,表示輸入完畢了! |
例題:請將你的家目錄下的環境變數檔 (~/.bashrc) 寄給自己! 答:
|
[dmtsai@linux ~]$ mail Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/dmtsai": 1 message 1 new >N 1 vbird@linux.site Fri Sep 2 23:53 16/552 "nice to meet you" & <==這裡可以輸入很多的指令,如果要查閱,輸入 ? 即可! |
& ?
Mail Commands
t <message list> type messages
n goto and type next message
e <message list> edit messages
f <message list> give head lines of messages
d <message list> delete messages
s <message list> file append messages to file
u <message list> undelete messages
R <message list> reply to message senders
r <message list> reply to message senders and all recipients
pre <message list> make messages go back to /usr/spool/mail
m <user list> mail to specific users
q quit, saving unresolved messages in mbox
x quit, do not remove system mailbox
h print out active message headers
! shell escape
cd [directory] chdir to directory or home if none given
|
指令 | 意義 |
h | 將信件的標題列出來。如果想要查閱 40 封信件左右處的所有信件標頭,可以輸入『 h 40 』 |
d | 刪除啦∼假設我要刪除第10封信,可以『 d10 』,假如我想要刪除 20-40 封信,可以『 d20-40 』, 不過,這個動作要生效的話,必須要配合 q 這個指令才行(參考底下說明)! |
s | 將信件儲存成為檔案。舉例來說,我要將第 5 封信件的內容存成 ~/mail.file 的話,可以: 『 s 5 ~/mail.file 』喔! |
x | 或者輸入 exit 都可以。這個是『不作任何動作離開 mail 程式』的意思。 不論你剛剛刪除了什麼信件,或者讀過什麼,使用 exit 都會直接離開 mail,所以剛剛進行的刪除與閱讀工作都會無效。 如果您只是查閱一下郵件而已的話,一般來說,建議使用這個離開啦!除非你真的要刪除某些信件。 |
q | 相對於 exit 是不動作離開, q 則會進行兩項動作: 1. 將剛剛刪除的信件移出 mailbox 之外; 2. 將剛剛有閱讀過的信件存入 ~/mbox ,且移出 mailbox 之外。鳥哥通常不很喜歡使用 q 離開, 因為,很容易忘記讀過什麼咚咚∼導致信件給他移出 mailbox 說∼ |
[root@linux ~]# pwck
user adm: directory /var/adm does not exist
user news: directory /etc/news does not exist
user uucp: directory /var/spool/uucp does not exist
|
[root@linux ~]# echo "dmtsai:abcdefg" | chpasswd
|
1. 建立群組 normalgroup ,假設 520 這個 GID 沒有被使用!並且同步化 gshadow [root@linux ~]# vi /etc/group # 在最後一行加入底下這一行! normalgroup:x:520: [root@linux ~]# grpconv [root@linux ~]# grep 'normalgroup' /etc/group /etc/gshadow /etc/group:normalgroup:x:520: /etc/gshadow:normalgroup:x:: # 簡單!搞定群組囉! ^_^ 2. 建立 normaluser 這個帳號,假設 UID 700 沒被使用掉! [root@linux ~]# vi /etc/passwd # 在最後一行加入底下這一行! normaluser:x:700:520::/home/normaluser:/bin/bash 3. 同步化密碼,並且建立該使用者的密碼 [root@linux ~]# pwconv [root@linux ~]# grep 'normaluser' /etc/passwd /etc/shadow /etc/passwd:normaluser:x:700:520::/home/normaluser:/bin/bash /etc/shadow:normaluser:x:13030:0:99999:7::: # 呵呵!沒錯沒錯!已經建立妥當囉∼但是密碼還不對∼ [root@linux ~]# passwd normaluser Changing password for user normaluser. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. 4. 建立使用者家目錄,並且修訂權限! [root@linux ~]# cp -a /etc/skel /home/normaluser [root@linux ~]# chown -R normaluser:normalgroup /home/normaluser |
1. 修改帳號屬性 [root@linux ~]# vi /etc/passwd popuser:x:720:12::/home/popuser:/sbin/nologin 2. 密碼同步,並且給予密碼! [root@linux ~]# pwconv [root@linux ~]# passwd popuser |
#!/bin/bash # # 這支程式主要在幫您建立大量的帳號之用, # 更多的使用方法請參考: # http://linux.vbird.org/linux_basic/0410accountmanager.php#manual_amount # # 本程式為鳥哥自行開發,在 FC4 上使用沒有問題, # 但不保證絕不會發生錯誤!使用時,請自行負擔風險∼ # # History: # 2005/09/05 VBird 剛剛才寫完,使用看看先∼ PATH=/sbin:/usr/sbin:/bin:/usr/bin; export PATH accountfile="user.passwd" # 1. 進行帳號相關的輸入先! read -p "帳號開頭代碼 ( Input title name, ex> std )======> " username_start read -p "帳號層級或年級 ( Input degree, ex> 1 or enter )=> " username_degree read -p "起始號碼 ( Input start number, ex> 520 )========> " nu_start read -p "帳號數量 ( Input amount of users, ex> 100 )=====> " nu_amount read -p "密碼標準 1) 與帳號相同 2)亂數自訂 ==============> " pwm if [ "$username_start" == "" ]; then echo "沒有輸入開頭的代碼,不給你執行哩!" ; exit 1 fi testing1=`echo $nu_amount | grep '[^0-9]' ` testing2=`echo $nu_start | grep '[^0-9]' ` if [ "$testing1" != "" ] || [ "$testing2" != "" ]; then echo "輸入的號碼不對啦!有非為數字的內容!" ; exit 1 fi if [ "$pwm" != "1" ]; then pwm="2" fi # 2. 開始輸出帳號與密碼檔案! [ -f "$accountfile" ] && mv $accountfile "$accountfile"`date +%Y%m%d` nu_end=$(($nu_start+$nu_amount-1)) for (( i=$nu_start; i<=$nu_end; i++ )) do account=$username_start$username_degree$i if [ "$pwm" == "1" ]; then password="$account" else password="" test_nu=0 until [ "$test_nu" == "8" ] do temp_nu=$(($RANDOM*50/32767+30)) until [ "$temp_nu" != "60" ] do temp_nu=$(($RANDOM*50/32767+30)) done test_nu=$(($test_nu+1)) temp_ch=`printf "\x$temp_nu"` password=$password$temp_ch done fi echo "$account":"$password" | tee -a "$accountfile" done # 3. 開始建立帳號與密碼! cat "$accountfile" | cut -d':' -f1 | xargs -n 1 useradd -m chpasswd < "$accountfile" pwconv echo "OK!建立完成!" |