linux那點事兒(四)—-使用者管理詳解

來源:互聯網
上載者:User

 

使用者管理----使用者資訊與密碼的設定檔                                                                                                      

      

     使用者管理要學的內容很多,當然了,不會簡單的放兩個建立使用者的命令,這樣的文章太多了。我們來看兩個使用者管理中非常重要的設定檔吧!     我們來看看使用者的相關設定檔都存放在什麼地方。 使用者資訊檔:      /etc/passwd 密碼檔案:            /etc/shadow 使用者組檔案:        /etc/group 使用者組密碼檔案: /etc/gshadow 使用者設定檔:    /etc/login.defs    /etc/default/useradd 新使用者資訊檔:/etc/skel 登入資訊:          /etc/motd  ======================== 使用者資訊檔詳解============================================我們先看一下使用者資訊檔裡都放的什麼 [root@localhost ~]#   vi   /etc/passwdroot:x:0:0:root:/root:/bin/bashdaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinnews:x:9:13:news:/etc/news:/sbin/nologin........每一行內容存放一個使用者的資訊,每個使用者資訊有7部分組成 root:x:0:0:root:/root:/bin/bashroot        使用者名稱         使用者登入系統時使用的使用者名稱x             密碼            密碼位2             UID            使用者標識號2             GID            預設組標識root     注釋性描述      例如存放使用者全名等資訊/root         宿主目錄       使用者登入系統後的預設目錄/bin/bash   命令直譯器    使用者使用的Shell ,預設為bash  UID ?     關於上面的UID這裡細說一下,其實決定使用者是什麼許可權,是由UID號決定的。     linux使用者分為三種: 超級使用者:(root   UID=0) 普通使用者: (UID 500~60000) 偽使用者:  (UID  1~499)    所以,我們可以修改使用者的UID號來修改使用者的類型,如果把root的UID號為500,那麼root就變成了普通使用者,如果把fnngj使用者的UID改為0,那麼它就擁有了root使用者的超能力。[root@localhost ~]#  vi   /etc/passwd   進入之後修改,完了儲存退出就OK了。  偽使用者?     說到使用者種類,又牽扯到一個偽使用者,那麼偽使用者是幹什麼用的?1.偽使用者與系統和程式服務相關    bin、daemon、shutdown、halt等,任何Linux系統預設都有這些偽使用者。    mail、news、games、apache、ftp、mysql及sshd等,與linux系統的進程相關。2. 偽使用者通常不需要或無法登入系統3. 可以沒有宿主目錄 ========================== 密碼檔案詳解========================================       使用者密碼檔案,使用者資訊檔中留有密碼位,為什麼沒密碼了呢? 其實,最早的linux這個位置真的是放密碼的,因為不全安,所以,就將密碼單獨存放了,現在只是用x表示這裡有存放密碼的位置。    為什麼要把密碼放在/etc/shadow中 [root@bogon /]#  ls -l /etc/shadow    -r--------  1 root root 1021  2月 27 21:31 /etc/shadow          我可以看到這個檔案只有管理員root有許可權查看修改 現在我們來看密碼檔案都放了什嗎?[root@bogon /]#  more /etc/shadowroot:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15391:0:99999:7:::bin:*:15391:0:99999:7:::daemon:*:15391:0:99999:7:::adm:*:15391:0:99999:7:::lp:*:15391:0:99999:7:::sync:*:15391:0:99999:7:::shutdown:*:15391:0:99999:7:::halt:*:15391:0:99999:7:::mail:*:15391:0:99999:7:::news:*:15391:0:99999:7:::uucp:*:15391:0:99999:7:::operator:*:15391:0:99999:7:::games:*:15391:0:99999:7:::.......................... 我們還以第一行為例進行分解。 root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15391:0:99999:7:::root              使用者名稱       使用者登入系統時使用的使用者名稱$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.    密碼     加密密碼   MD515391     最後一次修改時間    linux這裡以1970年1月1日作為1,1971年1月1日就是366,依次類推到我修改密碼的日期表示為15391了。0         最小時間間隔           這個欄位代表要經過多久才可以更改密碼。如果是“0”表密碼可以隨時更改。99999         最大時間間隔           於害怕密碼被人盜取而危害到整個系統的安全,所以安排了這個欄位,你必須在這個時間內重新修改密碼,否則這個帳號將暫時失效。上面的99999,表示密碼不需要重新輸入,最好設定一段時間修改密碼。確保系統安全7         密碼變更期期限快到前的警告期:當帳號的密碼失效期限快到時,系統依據這個欄位的設定發出警告,提醒使用者“再過n天您的密碼將到期,請儘快重新設定密碼。預設的是七天。帳號失效期:     如果使用者過了警告期沒有重新輸入密碼,使得密碼失效,而該使用者在這個欄位限定的時間內又沒有向管理員反映,讓帳號重新啟用,那麼這個帳號將暫時失效。帳號取消日期:  這個日期跟第三個欄位一樣,都是使用1970年以來的日期設定方法。這個欄位表示:這個帳號在此欄位規定的日期之後將無法再使用。這個欄位通常用於收費服務系統中,可以規定一個日期讓該帳號不能再使用。保留:     最後一個欄位是保留的,看以後有沒有新功能加入。  疑問既然shadow檔案儲存了密碼,而passwd檔案中沒有儲存密碼,為什麼不把passwd檔案中的密碼位取消掉呢?    其實,密碼在存放之前,是先放在passwd檔案中的,然後再轉換到shadow檔案中的。下面來驗證下[root@bogon /]#  grep root /etc/passwd  /etc/shadow/etc/passwd:root:x:0:0:root:/root:/bin/bash/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin/etc/shadow:root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15391:0:99999:7::: [root@bogon /]#  pwunconv      將密碼回寫[root@bogon /]#  grep root /etc/passwd  /etc/shadow/etc/passwd:root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:0:0:root:/root:/bin/bash/etc/passwd:operator:*:11:0:operator:/root:/sbin/nologingrep: /etc/shadow: 沒有那個檔案或目錄 [root@bogon /]#  pwconv     轉換到shdow檔案中,只不過平時這個動作平時由linux自動完成。[root@bogon /]#  grep root /etc/passwd  /etc/shadow/etc/passwd:root:x:0:0:root:/root:/bin/bash/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin/etc/shadow:root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15456:0:99999:7:::        linux對使用者登入的驗證就是通passwod檔案來驗證使用者名稱是否存在,然後通過shadow檔案來驗證使用者名稱對應的密碼是否正確,那麼理解了底層東西很有必要,我們可以不需要去學習建立使用者命令,真接通過vim命令在兩個檔案中添加使用者。這就是linux的魅力噢。不像windows一樣,我們不但知其然,還知其所以然。   “會靈魂附體的”命令許可權                                                                        繼續使用者管理的學習,上一小節我們知道,只有root可以修改密碼檔案,那麼普通使用者為什麼可以修改自己的密碼,這是因為我們所操作有命令“靈魂附體”般的擁有了root許可權。這個小節自我感覺不教難理解,而我的內容也是順著思路寫,按著順序看,最好去實驗一下。^_^ 小節重點:===============================setUID=4   所有人setGID=2   所屬組粘著位=1    其它人===============================  建立使用者:[root@localhost ~]# useradd lisi      添加建立了一使用者lisi[root@localhost ~]# passwd lisi       設定lisi的密碼Changing password for user wangwu.New UNIX password:                    這裡輸入密碼BAD PASSWORD: it is based on a dictionary wordRetype new UNIX password:         再次確認密碼passwd: all authentication tokens updated successfully.  上面這種是不被推薦的一種建立使用者的方式,任何的使用者都應該屬於某個組。建立這樣的“散人”實際中沒有太大意義。 [root@localhost ~]# grep lisi /etc/passwdlisi:x:502:502::/home/lisi:/bin/bash   從上面資訊中看到,系統預設為我們建立了一個lisi的組,組ID為504   使用者切換:[root@localhost ~]# su -- lisi        root切換到lisi使用者[lisi@localhost root]$ su -- root     lisi使用者切換到rootPassword:                                    普通使用者切換root使用者是要密碼的喲!親!普通使用者切換到其它普通使用者也是要密碼的喲!  使用者修改密碼:[lisi@localhost root]$ passwdChanging password for user lisi.Changing password for wangwu(current) UNIX password:        先輸入原始密碼New UNIX password:               輸入新有密碼Retype new UNIX password:    再次確認新密碼passwd: all authentication tokens updated successfully.  上面是鋪墊,下面才是重點。。  思考:在上一節中,我們提到,存放使用者密碼的檔案shadow只有root使用者才可操作。那麼普通使用者為什麼可以修改密碼呢? ========================= setUID===============================                 這裡引出一個東東----setUID        定義:當一個可執行程式具有setUID許可權,使用者執行這個程式時,將以這個程式所有者的身份執行。       哈哈!小狼不能和小羊談朋友,小羊可以與小羊談朋友,於是,小狼披上了羊的外衣,然後以羊的身份和小羊一起幸福的生活。吼吼。       其實,使用者執行的這個程式就是命令,passwd命令授權了SetUID許可權。所以普通使用者也可以通過passwd命令改密碼。 下面來做個實驗!!很有意思的噢,要不要也來試試噢? 切換到lisi使用者下面。[lisi@localhost ~]$ touch file01   touch建立一個file01的檔案[lisi@localhost ~]$ ls -l file01-rw-rw-r--  1 lisi lisi 0  5月  5 22:14 file01  我們看到,這個時候用touch命令建立的檔案,所有者是lisi,所屬於組是lisi組 切換到root下面[root@localhost ~]# ls -l /bin/touch   -rwxr-xr-x  1 root root 38056 2009-07-03  /bin/touch細心朋友會發現許可權前面還多一位。沒錯!setUID就屬於這一位。 setUID=4 現在我們給touch命令授予個setUID授予setUID許可權有兩種方式。[root@localhost ~]# chmod  u+s /bin/touch  [root@localhost ~]# chmod  4755  /bin/touch關於使用者權限不理解的看我之前的相關文章。 再次切換到lisi目錄下[lisi@localhost ~]$ touch file02   建立檔案file02[lisi@localhost ~]$ ls -l file02-rw-rw-r--  1 root lisi 0  5月  5 22:35 file02    這次我們發現,同樣的一個命令touch ,這次建立出來的檔案所有者變成的root  去掉setUID許可權的兩種方式:[root@localhost ~]# chmod  u-s /bin/touch  [root@localhost ~]# chmod  755  /bin/touch  ======================== setGID=================================          setGID的用法與setUID的用法一起,它是添加組許可權的。setGID=2添加setGID的方式如下:[root@localhost ~]# chmod  g+s /bin/touch  [root@localhost ~]# chmod  2755  /bin/touch 一般的命令我們不能隨便授予setUID許可權假如給vi命令授予setUID命令,無疑於給linux留了個後面,那樣我們就可以通過vi命令修改使用者與密碼資訊檔了。那麼到底有哪些命令設定有setUID呢?我們可以尋找一下。 [root@localhost ~]# find / -perm -4000 -o -perm -2000在目前的目錄下(/)尋找具有setUID(-perm -4000)或者(-o)具有 setGID(-perm -2000)許可權的命令   ======================= 粘著位==================================   粘著位有什麼作用,我們來看一個例子,這樣更容易理解。。 [root@localhost test]# mkdir abc                   建立一個目錄abc[root@localhost test]# touch abc/newfile      在這個目錄下建立一個檔案newfile[root@localhost test]# chmod 777 abc          對這個目錄設定許可權為所有人都有所有許可權[root@localhost test]# ls -ld abcdrwxrwxrwx  2 root root 4096  5月  5 23:44 abc [root@localhost test]# ls -l abc/newfile          newfile檔案的許可權是其它人沒有刪改的許可權。-rw-r--r--  1 root root 0  5月  5 23:44 abc/newfile 切換到lisi使用者[lisi@localhost test]$ rm -rf abc        具然把abc目錄下面的newfile幹掉了,lisi使用者雖然有對abc目錄的所有許可權,但對newfile檔案沒有刪除許可權呀。這就是linux對檔案的許可權規定。       假如張三和李四對一個檔案夾都有所有權,這個檔案夾下放的有張三的檔案,也有李四的檔案,如果張三看李四的檔案不爽,那麼他就直接幹掉了,李四上去一看哭了。為什麼辦法讓李四不哭呢?這裡就用到粘著位了。  粘著位粘著位=1t,如果一個許可權為777目錄有粘著位,每個使用者都可以在這個目錄下建立檔案,但只能刪除自己是所有者的檔案。  粘著位的授權方式:[root@localhost test]# chmod  o+t abc  [root@localhost test]# chmod  1755  abc 我們再來刪除試試:[lisi@localhost abc]$ rm newfilerm:是否刪除有防寫保護的一般空檔案‘newfile’? yrm: 無法刪除‘newfile’: 許可權不夠 自己建立的檔案就可以刪除噢![root@localhost test]# touch newfile2[root@localhost test]# rm newfile2 rm:是否刪除一般空檔案‘newfile2’? y  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.