天天看點

linux etc nologin,linux中/etc/nologin檔案的作用

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。