linux adduser-s /sbin/nologin和/bin/false的區別
/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用戶外其他任意用戶無法登錄
轉自:https://blog.csdn.net/liujinsuoabc/article/details/25714613
