linux中/etc/passwd文件的用法

昨天被虛擬機網絡samba問題毆打了一天,最終解決,睡了個好覺,一早醒來,想起看到相似這樣一段話:linux

「大多數的服務器都禁止了root帳戶的直接登錄,而是利用sudo將權限分配給其餘管理員,或者先用普通用戶登錄,再su成root用戶來進行操做,下降了風險。」shell

因而動手開始進行操做:安全

sudo vi /etc/passwd bash

直接編輯passwd文件,將root用戶的後面加上了nologin服務器

root:x:0:0:root:/root:/bin/bash/nologin網絡

試驗一下,果真不準登錄了(其實寫錯了,正確的應該是root:x:0:0:root:/root:/bin/bash:/sbin/nologin)ssh

but.....工具

sudo -i和su指令都沒法登錄到root帳戶下學習

sudo -i
sudo: /bin/bash/: command not found加密

su
Password:
su: incorrect password

趕忙改回來

root:x:0:0:root:/root:/bin/bash/

仍是不成,有點頭大了,reboot下看看吧

>_<.....難道要動用那個術了?

正當想使用SL絕招通殺一切時,又看了一眼passwd文件,發現正確的寫法是:/sbin/bash,正經常使用戶的配置文件是:/bin/bash

ls /bin/bash/
ls: cannot access /bin/bash/: Not a directory

ls -l /bin/bash

-rwxr-xr-x. 1 root root 938832 Jul 18  2013 /bin/bash

沒有d,這是一個文件,而非目錄,難怪沒法登錄

修改回來,一切正常

=================================================================華麗的分隔線

下面是轉載的一些參考內容,裏面有nologin文件的詳細用法

=================================================================

早上來了沒什麼事看會鳥哥的Linux私菜房,看看用戶管理的相關東西。知道了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。

================================================================

禁止root用戶直接登錄sshd

-----------------------------------------------------------------------------------------------------

  • linux最高權限用戶root,默承認以直接登陸sshd。爲了提升服務器的安全度,須要對它進行禁止,使得攻擊者沒法經過暴力破解來獲取root權限。

1,新建一個用戶;

#useradd xxx (xxx爲你要新建的用戶名)

2,爲新用戶設置密碼;

#passwd xxx (xxx爲你要新建的用戶名)

3,修改SSHD配置,禁止root直接登陸

#vi /etc/ssh/sshd_config

查找「#PermitRootLogin yes」,將前面的「#」去掉,短尾「Yes」改成「No」,並保存文件。

4,修改完畢後,重啓sshd服務

#service sshd restart

5,下次登陸,先使用xxx登陸,而後經過su root 來獲取root權限。

 

  • 修改sshd默認端口

雖然更改端口沒法在根本上抵禦端口掃描,可是,能夠在必定程度上提升防護。

1.打開sshd配置文件

#vi /etc/ssh/sshd_config

2.找到#Port 22字段刪掉#,將22改成其餘不被使用的端口

服務器端口最大能夠開到65536

3.重啓sshd服務

#service sshd restart

4.別忘了修改登錄工具那的端口設置。

=======================================================================

conclusion

1.作事的時候要細心,一個符號,字母,/都能引發意想不到的後果

2.動手前留備份文件

3./etc/nologin是個文本文件,裏面存放給用戶的拒絕鏈接提示信息,只要這個文件存在,用戶就沒法登錄,可用於維護期間禁止用戶登錄

 維護完成後刪除,用戶便可恢復登錄,已經登錄的用戶不受影響。

相關文章
相關標籤/搜索