1. 程式人生 > >linux adduser-s /sbin/nologin和/bin/false的區別

linux adduser-s /sbin/nologin和/bin/false的區別

/bin/false是最嚴格的禁止login選項,一切服務都不能用,
/sbin/nologin只是不允許系統login,可以使用其他ftp等服務

如果想要用false在禁止login的同時允許ftp,則必須在/etc/shells裡增加一行/bin/false。

知道了Linux使用者管理最重要的兩個檔案就是/etc/passwd和/etc/shadow這兩個檔案。其中/etc/passwd是用來儲存登陸使用者資訊的,它的基本格式如下:

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

由上面的格式可以看出,每一行代表一個使用者的資訊,一共包括7個欄位的資訊,每個欄位的資訊用冒號隔開。這7個欄位分別代表:

1. 賬號名稱:即登陸時的使用者名稱
2. 密碼:早期UNIX系統的密碼是放在這個檔案中的,但因為這個檔案的特性是所有程式都能夠讀取,所以,這樣很容易造成資料被竊取,因此後來就將這個欄位的密碼資料改放到/etc/shadow中了
3. UID:使用者ID,每個賬號名稱對應一個UID,通常UID=0表示root管理員
4. GID:組ID,與/etc/group有關,/etc/group與/etc/passwd差不多,是用來規範使用者組資訊的
5. 使用者資訊說明欄: 用來解釋這個賬號是幹什麼的
6. 家目錄:home目錄,即使用者登陸以後跳轉到的目錄,以root使用者為例,/root是它的家目錄,所以root使用者登陸以後就跳轉到/root目錄這裡
7. Shell:使用者使用的shell,通常使用/bin/bash這個shell,這也就是為什麼登陸Linux時預設的shell是bash的原因,就是在這裡設定的,如果要想更改登陸後使用的shell,可以在這裡修改。另外一個很重要的東西是有一個shell可以用來替代讓賬號無法登陸的命令,那就是/sbin/nologin。

當我看到這裡的時候,我就去登陸我們實驗室的伺服器,開啟/etc/passwd這個檔案,裡面果然有很多的類似上面格式的使用者賬號資訊。由於我們實驗室伺服器開放了ftp服務,而我正好有一個ftp的賬號,我看到我的賬號資訊是這樣的lxb:x:530:525::/opt/ftp:/sbin/nologin 通過上面的學習,我覺得它的意思大概是這樣的,使用者名稱是lxb,x表示密碼經過加密放到/etc/shadow檔案中了,UID是530,GID是525,訪問的目錄是/opt/ftp,我看了一下,這個目錄下的內容正好是我登陸ftp後所看到的,至於最後一個/sbin/nologin,應該是登入時候使用的shell,但是它為什麼是nologin呢,難道不讓我登陸嗎?

於是我用root許可權登陸到裡面,把後面的/sbin/nologin改成了/bin/bash,重新用ssh進行登陸,真的登陸進去了,而且登陸後的目錄正好是/opt/ftp。但是我的許可權依舊沒有改變,很多檔案還是打不開。於是我明白了,這個nologin的作用就是限制某些使用者通過ssh登陸到shell上。有時候為了進行系統維護工作,臨時禁止其他使用者登入,可以使用 nologin 檔案,具體做法是在/etc/目錄下建立一個名稱為 nologin 的檔案。例如:

#touch /etc/nologin

這樣將禁止隨後的使用者登入到系統中。禁止使用者登入時,/etc/nologin 檔案中的內容將會顯示給使用者,會一閃而過。例如,按如下方式建立 nologin 檔案:
disable login by admin temperarily!

當用戶試圖登陸時,將會給使用者顯示"disable login by admin temperarily!",當系統維護結束以後,再刪除/etc/nologin檔案,其他使用者就又可以恢復登陸了,這只是限於能登陸shell的使用者來說的,對於那些登陸shell為/sbin/nologin的使用者來說沒有影響,因為他們本身就無法登陸shell。

總結:/etc/nologin 檔案存在時 除root使用者外其他任意使用者無法登入

來自:http://blog.csdn.net/mvpsendoh/article/details/6841078