Linux各種重要配置文件詳解


1:網卡文件/etc/sysconfig/network-scripts/ifcfg-eth0

[root@Gin scripts]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0            ## 物理設備名,eth0為第一塊網卡;eth1為第二塊網卡
HWADDR=00:0C:29:84:0C:21   ## 網卡的MAC地址,48位
TYPE=Ethernet           ## 以太網
UUID=09ae6890-2925-4ca0-9cbc-e937593624f8 ## 唯一的一個用戶標識,相當於身份證號碼!如查看磁盤設備的UUID使用blkid命令
ONBOOT=yes           ## 控制網卡是否開機啟動
NM_CONTROLLED=yes      ##是否通過networkmanager管理網卡設備
BOOTPROTO=dhcp         ## proto取下列值之一:none,引導時不使用協議;static,靜態分配地址;bootp,使用BOOTP協議;dhcp,使用DHCP協議
IIPADDR=192.168.17.128        ## IP地址      
NETMASK=255.255.255.0        ## 子網掩碼,划分網絡位和主機位
DNS2=202.106.0.20         ## DNS是把baidu.com變成了baidu服務器IP。DNS就是域名和IP的解析工具
DNS1=8.8.8.8
GATEWAY=192.168.0.1         ## 網關地址,路由器的地址
USERCTL=no
PEERDNS=yes
IPV6INIT=no

2:/etc/fstab

fstab - static information about the filesystems

作用:設置文件系統掛載信息的文件,使得開機能夠自動掛載磁盤分區

[root@Gin scripts]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Jan 24 02:46:13 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=91a2efd1-8bf1-42d2-a387-e22e4b665a36 /                       ext4    defaults        1 1
UUID=3f124651-9d7a-42b4-8cfa-11053a5a8ffc /boot                   ext4    defaults        1 2
UUID=8cb814f4-f2f4-4bb0-a127-c97092845fcf swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

字段定義

/etc/fstab 文件包含了如下字段,通過空格或 Tab 分隔:

<file system> <dir> <type> <options> <dump> <pass>

#第一列:要被掛載的磁盤設備

#第二列:前面目錄的掛載點(前面的目錄掛載到哪個目錄下)

#第三列:掛載的文件系統類型!支持許多種不同的文件系統:ext2ext3ext4reiserfsxfsjfssmbfsiso9660vfatntfsswap 及 auto。 設置成auto類型,mount 命令會猜測使用的文件系統類型,對 CDROM 和 DVD 等移動設備是非常有用的。

#第四列:掛載的選項!注意有些mount 參數是特定文件系統才有的。一些比較常用的參數有

  • auto - 在啟動時或鍵入了 mount -a 命令時自動掛載。
  • noauto - 只在你的命令下被掛載。
  • exec - 允許執行此分區的二進制文件。
  • noexec - 不允許執行此文件系統上的二進制文件。
  • ro - 以只讀模式掛載文件系統。
  • rw - 以讀寫模式掛載文件系統。
  • user - 允許任意用戶掛載此文件系統,若無顯示定義,隱含啟用 noexecnosuidnodev 參數。
  • users - 允許所有 users 組中的用戶掛載文件系統.
  • nouser - 只能被 root 掛載。
  • owner - 允許設備所有者掛載.
  • sync - I/O 同步進行。
  • async - I/O 異步進行。
  • dev - 解析文件系統上的塊特殊設備。
  • nodev - 不解析文件系統上的塊特殊設備。
  • suid - 允許 suid 操作和設定 sgid 位。這一參數通常用於一些特殊任務,使一般用戶運行程序時臨時提升權限。
  • nosuid - 禁止 suid 操作和設定 sgid 位。
  • noatime - 不更新文件系統上 inode 訪問記錄,可以提升性能(參見 atime 參數)。
  • nodiratime - 不更新文件系統上的目錄 inode 訪問記錄,可以提升性能(參見 atime 參數)。
  • relatime - 實時更新 inode access 記錄。只有在記錄中的訪問時間早於當前訪問才會被更新。(與 noatime 相似,但不會打斷如 mutt 或其它程序探測文件在上次訪問后是否被修改的進程。),可以提升性能(參見 atime 參數)。
  • flush - vfat 的選項,更頻繁的刷新數據,復制對話框或進度條在全部數據都寫入后才消失。
  • defaults - 使用文件系統的默認掛載參數,例如 ext4 的默認參數為:rwsuiddevexecautonouserasync.

#第五列:是否需要備份磁盤,1表示需要備份,0表示不需要備份

#第六列:開機是否自檢

文件系統標識

在 /etc/fstab配置文件中你可以以三種不同的方法表示文件系統:內核名稱、UUID 或者 label。使用 UUID 或是 label 的好處在於它們與磁盤順序無關。如果你在 BIOS 中改變了你的存儲設備順序,或是重新拔插了存儲設備,或是因為一些 BIOS 可能會隨機地改變存儲設備的順序,那么用 UUID 或是 label 來表示將更有效。

要顯示分區的基本信息請運行:

[root@Gin scripts]# lsblk -f
NAME   FSTYPE  LABEL            UUID                                 MOUNTPOINT
sr0    iso9660 CentOS_6.6_Final                                      
sda                                                                  
├─sda1 ext4                     3f124651-9d7a-42b4-8cfa-11053a5a8ffc /boot
├─sda2 swap                     8cb814f4-f2f4-4bb0-a127-c97092845fcf [SWAP]
└─sda3 ext4                     91a2efd1-8bf1-42d2-a387-e22e4b665a36 /

UUID

所有分區和設備都有唯一的 UUID。它們由文件系統生成工具 (mkfs.*) 在創建文件系統時生成。

lsblk -f 命令將顯示所有設備的 UUID 值。/etc/fstab 中使用 UUID= 前綴:

手動掛載測試

1:創建一個虛擬的塊設備

[root@Gin scripts]# dd if=/dev/zero of=/dev/sdb1 bs=4096 count=10

2:格式化

[root@Gin scripts]# mkfs.ext4 /dev/sdb1

3:掛載

[root@Gin scripts]# mount -t ext4 -o loop,noatime,noexec /dev/sdb1 /mnt

4:查看掛載設置

[root@Gin scripts]# df -hT

5:寫入/etc/fstab配置文件,開機自動掛載!也可以寫入到/etc/rc.local文件

[root@Gin scripts]# cat /etc/fstab
UUID=435a2a45-0f41-49b0-b3f2-5d4a00615339 /                       ext4    defaults        1 1
UUID=851d3618-fb61-40cb-ba6d-e0879a7d06a3 /boot                   ext4    defaults        1 2
UUID=91f17110-1462-4327-82ce-474f728f2e62 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/sdb1		/mnt			ext4	loop,noatime,noexec		0 0

#上面的/dev/sdb1需要掛載的目錄,可以使用UUID來替代,查看UUID命令如下:blkid 或 ls -l /dev/disk/by-uuid

fstab出問題的修復方案:

1)開機提示,輸入密碼 修改

2)救援模式,rescue

修復/etc/fstab只讀狀態:mount -o rw,remount /

 3:/etc/passwd

[root@Gin scripts]# cat /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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
............................................

從上面的例子我們可以看到,/etc/passwd中一行記錄對應着一個用戶,每行記錄又被冒號(:)分隔為7個字段,其格式和具體含義如下:

root :x :0 :0 :root :root :/bin/bash
賬號名稱 賬號密碼 賬號UID 賬號GID 用戶說明 用戶家目錄 shell解釋器

  賬號名稱(login_name):是代表用戶賬號的字符串。通常長度不超過8個字符,並且由大小寫字母和/或數字組成。登錄名中不能有冒號(:),因為冒號在這里是分隔符。為了兼容起見,登錄名中最好不要包含點字符(.),並且不使用連字符(-)和加號(+)打頭。

  賬號密碼(passwd):一些系統中,存放着加密后的用戶口令字。雖然這個字段存放的只是用戶口令的加密串,不是明文,但是由於/etc/passwd文件對所有用戶都可讀,所以這仍是一個安全隱患。因此,現在許多Linux系統(如SVR4)都使用了shadow技術,把真正的加密后的用戶口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一個特殊的字符,例如“x”或者“*”。

  賬號UID(UID):是一個整數,系統內部用它來標識用戶。一般情況下它與用戶名是一一對應的。如果幾個用戶名對應的用戶標識號是一樣的,系統內部將把它們視為同一個用戶,但是它們可以有不同的口令、不同的主目錄以及不同的登錄Shell等。取值范圍是0-65535。0是超級用戶root的標識號,1-99由系統保留,作為管理賬號,普通用戶的標識號從100開始。在Linux系統中,這個界限是500。

  賬號GID(GID):字段記錄的是用戶所屬的用戶組。它對應着/etc/group文件中的一條記錄。

  用戶說明(users):字段記錄着用戶的一些個人情況,例如用戶的真實姓名、電話、地址等,這個字段並沒有什么實際的用途。在不同的Linux系統中,這個字段的格式並沒有統一。在許多Linux系統中,這個字段存放的是一段任意的注釋性描述文字,用做finger命令的輸出。

  用戶家目錄(home_directory):也就是用戶的起始工作目錄,它是用戶在登錄到系統之后所處的目錄。在大多數系統中,各用戶的主目錄都被組織在同一個特定的目錄下,而用戶主目錄的名稱就是該用戶的登錄名。各用戶對自己的主目錄有讀、寫、執行(搜索)權限,其他用戶對此目錄的訪問權限則根據具體情況設置。

  Shell解釋器(Shell):用戶登錄后,要啟動一個進程,負責將用戶的操作傳給內核,這個進程是用戶登錄到系統后運行的命令解釋器或某個特定的程序,即Shell。Shell是用戶與Linux系統之間的接口。Linux的Shell有許多種,每種都有不同的特點。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系統管理員可以根據系統情況和用戶習慣為用戶指定某個Shell。如果不指定Shell,那么系統使用sh為默認的登錄Shell,即這個字段的值為/bin/sh。

  用戶的登錄Shell可以指定為某個特定的程序(此程序不是一個命令解釋器)。利用這一特點,我們可以限制用戶只能運行指定的應用程序,在該應用程序運行結束后,用戶就自動退出了系統。有些Linux系統要求只有那些在系統中登記了的程序才能出現在這個字段中。

4:/etc/shadow

文件屬性:

[root@Gin scripts]# ll /etc/shadow
---------- 1 root root 964 Jan 26 14:30 /etc/shadow

文件內容:

[root@Gin scripts]# ll /etc/shadow
poe:$6$c3hp3bcj$f2i1namN9feDDhgda3mdtVEb5PyWFyw2MCeshWHajq7OJ0.0Bo0Lh0FY2W3BaVOztszOip/D4h5LF9pRLJfe11:12784:0:99999:7:::

以‘:’作為分隔符號,如果數一數,會發現共有九個位啊, 這九個位的用途是這樣的:

1. 帳號名稱:由於密碼也需要與帳號對應啊~因此, 這個檔案的第一欄就是帳號,必須要與 /etc/passwd 相同才行!

2. 密碼:這個才是真正的密碼,而且是經過編碼過的密碼! 你只會看到有一些特殊符號的字母就是了!需要特別留意的是, 雖然這些加密過的密碼很難被解出來,但是‘很難’不等於‘不會’,所以, 這個檔案只有 root 才可以讀寫!你得隨時注意,不要不小心更動了這個檔案的屬性呢!另外, 如果是在密碼欄的第一個字元為‘ * ’或者是‘ ! ’,表示這個帳號並不會被用來登錄的意思。 所以萬一哪一天你的某個使用者不乖時,可以先在這個檔案中,將他的密碼欄位的最前面多加一個 * !他就無法使用該帳號!

3. 最近更動密碼的日期:這個欄位記錄了‘更動密碼的那一天’的日期, 不過,很奇怪呀!在我的例子中怎么會是 12784呢?呵呵,這個是因為計算 Linux 日期的時間是以 1970 年 1 月 1 日作為 1 ,而 1971 年 1 月 1 日則為 366 ! 所以這個日期是累加的!得注意一下這個資料呦!那么最近的 2005 年 1 月 1 日就是 12784 啦,瞭解了嗎?

4. 密碼不可被更動的天數: 第四個欄位記錄了這個帳號的密碼需要經過幾天才可以被變更!如果是 0 的話, 表示密碼隨時可以更動的意思。這樣的限制是為了怕密碼被某些人一改再改而設計的!如果設定為 20 天的話,那么當你設定了密碼之后, 20 天之內都無法改變這個密碼!

5. 密碼需要重新變更的天數: 由於害怕密碼被某些‘有心人士’竊取而危害到整個系統的安全,所以有了這個欄位的設計。 你必須要在這個時間之內重新設定你的密碼,否則這個帳號將會暫時失效。 而如果像上面的 99999 的話,那就表示,密碼不需要重新輸入! 不過,如果是為了安全性,最好可以設定一段時間之后,嚴格要求使用者變更密碼!

6. 密碼需要變更期限前的警告期限:當帳號的密碼失效期限快要到的時候, 就是上面那個‘必須變更密碼’的那個時間時, 系統會依據這個欄位的設定,發出‘警告’言論給這個帳號,提醒他‘再過 n 天你的密碼就要失效了,請盡快重新設定你的密碼!如上面的例子,則是密碼到期之前的 7 天之內,系統會警告該用戶。

7. 密碼過期的受限時間:如果用戶過了警告期限沒有重新輸入密碼, 使得密碼失效了,也就是說,你在‘必須變更密碼的期限前,並沒有變更你的密碼!’ 那么該組密碼就稱為‘失效的密碼’~怎么辦?沒關系,還有這個欄位的天數設計啊~ 意思就是說,當密碼失效后,你還可以用這個密碼在 n 天內進行登入的意思。 而如果在這個天數后還是沒有變更密碼,那么您的帳號就失效了!無法登入!

8. 帳號失效日期:這個日期跟第三個欄位一樣,都是使用 1970 年以來的總日數設定。這個欄位表示: 這個帳號在此欄位規定的日期之后,將無法再使用。 這個欄位會被使用通常應該是在‘收費服務’的系統中, 你可以規定一個日期讓該帳號不能再使用!

9. 保留:最后一個欄位是保留的

舉例:假如系統有一個dmtsai 用戶,它的/etc/passwd文件信息如下所示

dmtsai:$1$8zdAKdfC$XDa8eSus2I7nQL7UjRsIy/:13025:5:60:7:2:13125:

這表示什么呢?要注意的是, 13025 是 2005/08/30 ,所以, dmtsai 這個使用者他的密碼相關意義是:

* 最近一次更動密碼的日期是 2005/08/30 (13025);
* 能夠修改密碼的時間是 5 天以后,也就是 2005/09/04 以前 dmtsai 不能修改自己的密碼; 如果使用者還是嘗試要更動自己的密碼,系統就會出現這樣的訊息:
You must wait longer to change your password
passwd: Authentication token manipulation error
* 使用者必須要在 2005/09/04 到 2005/10/29 之間的 60 天限制內去修改自己的密碼,若 2005/10/29 之后還是沒有變更密碼時,該帳號就會宣告失效;
* 如果使用者一直沒有更改密碼,那么在 2005/10/29 之前的 7 天內,系統會警告 dmtsai 應該修改密碼的相關資訊;例如當 dmtsai 登入時,系統會主動提示如下的資訊:
Warning: your password will expire in 5 days
* 如果該帳號一直到 2005/10/29 都沒有更改密碼,由於還有兩天的恕限時間,因此, dmtsai 還是可以在 2005/10/31 以前繼續登入;
* 如果使用者在 2005/10/29 以前變更過密碼,那么那個 13025 的日期就會跟著改變,因此, 所有的限制日期也會跟著相對變動
* 無論使用者如何動作,到了 13125 ,大約是 2005/12/8 左右,該帳號就失效了~

生產場景應用案例

root密碼忘記或者被更動了?怎么辦?
有的時候會發生這樣的情況,就是說,你的 root 密碼忘記了!要怎么辦?重新安裝嗎?另外, 有的時候是被入侵了, root 的密碼被更動過,該如何是好?
 
這個時候就必須要使用到 /etc/shadow 這個文件,我們剛剛知道密碼是存在這個檔案中的, 所以只要你能夠以各種可行的方法開機進入 Linux ,例如單人維護模式,或者是以 live CD (KNOPPIX) 來進入 Linux 系統。之后,將硬碟順利掛載,然后進入 /etc/shadow 這個檔案中,將 root 的密碼這一欄全部清空!然后再登入 Linux 一次,這個時候 root 將不需要密碼 (有的時候需要輸入空白字元) 就可以登入了!這個時候請趕快以 passwd 設定 root 密碼即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM