Linux 特殊文件說明

2022-08-24 22:12:11 字數 3804 閱讀 7088

目錄賬號相關

服務相關目錄與檔案

當我們使用man command(command 表示指令)可以獲得該指令的用法,詳細說明等。

那麼這些詳細說明是從**來的呢,不可能憑空而來的呀! 其實是通過讀取說明檔案來達到這個效果的,這些說明檔案就存放在 /usr/share/man 目錄下

同理還有 /usr/share/info 目錄,該目錄下存放的是使用info命令時使用的說明檔案

安裝軟體時,一般會同時安裝一些說明檔案到/usr/share/doc目錄下,例如安裝 mysql ,那麼在 /usr/share/doc 目錄下會出現 mysql-community-common-5.7.21 目錄,存放一些

mysql的說明,用法等

賬戶資訊存放在位置,開啟/etc/passwd檔案

每一行都代表乙個賬號,有幾行就代表有多少個賬號。第一行就是root賬號,另外需要注意的是,裡面有很多賬號上系統執行所需要的系統賬號。

例如bin,deamon等

由圖可以看到,每一行內容由『:』分隔,共7個字段。分別是

賬號名稱

密碼。通常是乙個*

早期的 unix 系統密碼是存放在這個位置了,但現在的 linux 基本上把密碼挪到 /etc/shadow 檔案裡了,所以這裡是乙個*號

賬戶uid

這個就是賬戶識別符號了。對於這個識別符號的使用範圍需要說一下

uid 範圍 | 說明  

-|-|

0 (系統管理員) | 當 uid 是 0 時,代表這個賬號是『系統管理員』! 所以當你要讓其他的賬號也具有 root 的許可權時,將該賬號的 uid 改為 0 即可。 這也就是說,一部系統上面的系統管理員不見得只有 root 喔! 不過,強烈不建議有多個賬號的uid 是 0 ,有乙個 root 就夠了

1~499 (系統賬戶) | 保留給系統使用的 uid ,其實除了 0 之外,其他的 uid 許可權與特性並沒有什麼不一樣。預設 500 以下的數字讓給系統作為保留賬號只是乙個習慣。

由於系統上面啟動的服務希望使用較小的許可權去執行,因此不希望使用 root的身份去執行這些服務, 所以我們就得要提供這些執行中程式的擁有者賬號才行。這些系統賬號通常是不可登入的, 所以他們對應的shell一般都是/sbin/nologin 這個特殊的shell。

根據系統賬號的又來,通常系統賬號又大略被區分為兩種:

1~99:由 distributions 自行建立的系統賬號;

100~499:若使用者有系統賬號需求時,可以使用的賬號 uid。

500~65535 (可登入賬戶) | 給一般使用者使用的

gid 群組id

這個跟/etc/group有關,使用者的主群組識別符號

賬戶資訊說明欄

該賬戶的一些解釋性說明

賬戶家目錄

當你用該賬戶登入時,所進入的目錄。例如以 root 賬戶登入時,進入 /root 目錄

賬戶所使用的 shell

當使用者登入系統後就會取得乙個 shell 來與系統核心溝通以進行使用者的操作任務。

那為什麼root使用者所使用的 shell 是 bash 呢?就是在這個字段指定! 這裡比較需要注意的是,

有乙個 shell 可以用來替代成讓賬號無法取得 shell 環境的登入動作!那就是/sbin/nologin 這個東西

賬戶的密碼存放位置。開啟檔案,大概是這樣子的

同樣以『:』分隔,共有9個字段

賬戶名密碼

當然這裡是加密過的密碼,不是銘文

最近修改密碼的日期

這個字段記錄了『更改密碼那一天』的日期,不過,很奇怪呀!在我的例子中怎麼會是 14126呢?呵呵,這個是因為計算 linux 日期的時間是以 1970 年 1 月 1 日作為 1 而累加癿日期,1971 年 1 月 1 日則為 366 啦! 得注意一下這個資料哦!上述的14126 指的就是 2008-09-04那一天啦

密碼不可被改動的天數(相對第 3 個字段)

這個字段記錄了:賬戶的密碼在最近一次被修改後,需要經過多少天才能夠再次更改密碼,為 0 的話表示隨時可以更改密碼。這個限制是為了防止某些使用者頻繁的修改密碼,例如這個欄位為5,那麼在上次修改密碼後,5天內是不能再次修改密碼的

密碼需要重新變更的天數(相對第 3 個字段)

這個字段記錄了:在上一次修改密碼過後,多少天內需要再次更改密碼。這就強制要求使用者經常變更密碼,如果沒有按照這個要求在時限內修改密碼,那麼這個賬戶的密碼就會變為『過期特性』(注意並不是無效),而如果像上面設定的99999的話,那就表示不需要強制更新密碼

密碼需要變更期限前的警告天數(相對第 5 字段)

當賬號密碼有效期限快要到的時候(第 5 字段),系統會根據這個欄位的設定,提前向使用者傳送警告資訊:『再過 n 天,你的密碼就要過期了』

像上面的例子,再密碼到期之前的7天內,系統會向使用者傳送警告

密碼過期後的賬號寬限天數

密碼的有效日期為:『密碼最新修改日期(第 3 字段)』+『密碼需要重新變更天數(第 5 字段)』,過了該日期後,使用者依舊沒有更新密碼,

那麼賬號就算過期了(不是失效),但這時賬戶依然能夠登入系統,並取得bash,只不過這時系統會強制要求你更新密碼才能繼續使用,這就是

『密碼過期特性』

那麼這個欄位就表示密碼過期幾天後,如果使用者還沒有更新密碼,那麼賬戶密碼就會『失效』,就再也無法登入了

賬戶失效日期

這個欄位跟第 3 個字段一樣,是以1970/01/01以來的天數來算的。表示:過了這個日期,賬戶就『失效』,再也無法使用了了,不管密碼有沒有失效,都無法再使用這個賬戶

保留字段

這個欄位是保留的,看以後有沒有需要用到它

群組資訊存放位置

系統上通常執行著多個服務,那麼是怎麼提供這些服務的呢?歸根結底,肯定是有乙個可執行檔案(指令碼)在跑著的。要啟動乙個服務,需要做一些前置工作:執行環境的偵測,配置檔案的分析,pid文件的放置等等,

這些工作不可能每次都由使用者去手工操作,所以由服務開發者提供乙個啟動指令碼,這個指令碼會做執行環境偵測,配置檔案分析,pid文件放置等這些工作,要啟動服務,執行這個啟動指令碼就可以了。

那麼這些啟動指令碼放在**呢,這裡說一下相關目錄。

系統上幾乎所有的服務啟動指令碼都放在這裡。這是乙個公認的目錄,在 centos 下實際上是存放到 /etc/rc.d/init.d/* 下面的,但也提供了連線文件 /etc/init.d/ 指向 /etc/rc.d/init.d/。

幾乎所有的服務都會將初始化的一些選項設定寫入到這個目錄下,舉例來說,登入檔的 syslog 這支服務的初始化設定就寫入在 /etc/sysconfig/syslog 這裡呢!而網路的設定則寫在 /etc/sysconfig/network 這個檔案中。

所以,這個目錄內的檔案也是挺重要的。

super daemon 的主要配置檔案 (其實是預設值) 為 /etc/xinetd.conf 。不過 super daemon只是乙個統一管理的機制,他所管理的其他 daemon 的設定則寫在 /etc/xinetd.d/* 裡頭

一些會產生資料的服務都會將他的資料寫入到 /var/lib/ 目錄中。舉例來說,資料庫管理系統 mysql 的資料庫預設就是寫入 /var/lib/mysql/ 這個目錄下啦!

daemon 通常會將自己的 pid 記錄乙份到/var/run/ 當中!例如登入檔案的 pid 就記錄在 /var/run/syslogd.pid 這個檔案中。如此一來,/etc/init.d/syslog 就能夠簡單的管理自己的程式囉。

Linux 特殊檔案 dev zero

dev zero 是類 unix 系統中乙個特殊的檔案,當讀取該檔案時,它會提供無限的空字元 null。它的乙個主要用途是提供字元流來初始化資料儲存,也就是使用空字元覆蓋目標資料。另乙個常見的用法是產生乙個特定大小的空白檔案。你可以從 dev zero 讀取任意大小數量的 null 字元。和 dev...

Linux的特殊檔案許可權

一般檔案許可權讀 r 寫 w 執行 x 許可權比較簡單。一般材料上面都有介紹。這裡介紹一下一些特殊的檔案許可權 suid,sgid,stick bit。如果你檢查一下 usr bin passwd和 tmp 的檔案許可權你就會發現和普通的檔案許可權有少許不同,如下圖所示 這裡就涉及到suid和sti...

Linux的特殊檔案許可權

一般檔案許可權讀 r 寫 w 執行 x 許可權比較簡單。一般材料上面都有介紹。這裡介紹一下一些特殊的檔案許可權 suid,sgid,stick bit。如果你檢查一下 usr bin passwd和 tmp 的檔案許可權你就會發現和普通的檔案許可權有少許不同,如下圖所示 這裡就涉及到suid和sti...