1. 程式人生 > >鳥哥的Linux私房菜讀書筆記--特殊檔案與程序

鳥哥的Linux私房菜讀書筆記--特殊檔案與程序

1、具有SUID/SGID許可權的指令執行狀態

SUID的特點:

· SUID 許可權僅對二進位制程式(binary program)有效; · 執行者對於該程式需要具有 x 的可執行許可權; · 本許可權僅在執行該程式的過程中有效 (run-time); · 執行者將具有該程式擁有者 (owner) 的許可權。

整個SUID的許可權生效是由於具有該許可權的程式會被觸發。查詢整個系統的SUID/SGID的檔案可以使用指令:find  /  -perm  /6000

2、/proc/*代表的意義

程序都是在記憶體當中,而記憶體中的資料又都是寫入到/proc/*目錄下的,基本上目前主機上的各個程序PID都是以目錄的形態存在於/proc中

選項與引數相關檔案

檔名 檔案內容
/proc/cmdline 載入 kernel 時所下達的相關指令與引數!查閱此檔案,可瞭解指令是如何啟動的!
/proc/cpuinfo 本機的 CPU 的相關資訊,包含頻率、型別與運算功能等
/proc/devices 這個檔案記錄了系統各個主要裝置的主要裝置代號,與 mknod 有關呢!
/proc/filesystems 目前系統已經載入的檔案系統囉!
/proc/interrupts 目前系統上面的 IRQ 分配狀態。
/proc/ioports 目前系統上面各個裝置所配置的 I/O 地址。
/proc/kcore 這個就是記憶體的大小啦!好大對吧!但是不要讀他啦!
/proc/loadavg 還記得 top 以及 uptime 吧?沒錯!上頭的三個平均數值就是記錄在此!
/proc/meminfo 使用 free 列出的記憶體資訊,嘿嘿!在這裡也能夠查閱到!
/proc/modules 目前我們的 Linux 已經載入的模組列表,也可以想成是驅動程式啦!
/proc/mounts

系統已經掛載的資料,就是用 mount 這個指令呼叫出來的資料啦!

/proc/swaps 到底系統掛載入的記憶體在哪裡?呵呵!使用掉的 partition 就記錄在此啦!
/proc/partitions 使用 fdisk -l 會出現目前所有的 partition 吧?在這個檔案當中也有紀錄喔!
/proc/uptime 就是用 uptime 的時候,會出現的資訊啦!
/proc/version 核心的版本,就是用 uname -a 顯示的內容啦!
/proc/bus/* 一些匯流排的裝置,還有 USB 的裝置也記錄在此喔!

3、查詢已開啟檔案或已執行程序開啟之檔案

<1>藉由檔案或檔案系統找出正在使用該檔案的程序

當我們想知道我的程序當中啟動某過程開啟了多少檔案,就可以是使用fuser來進行觀察。

[[email protected] ~]# fuser [-umv] [-k [i] [-signal]] file/dir 選項與引數: -u :除了程序的 PID 之外,同時列出該程序的擁有者; -m :後面接的那個檔名會主動的上提到該檔案系統的最頂層,對 umount 不成功很有效! -v :可以列出每個檔案與程序還有指令的完整相關性! -k :找出使用該檔案/目錄的 PID ,並試圖以 SIGKILL 這個訊號給予該 PID; -i :必須與 -k 配合,在刪除 PID 之前會先詢問使用者意願! -signal:例如 -1 -15 等等,若不加的話,預設是 SIGKILL (-9) 囉!

以上指令是找出目前所在目錄的使用PID/所屬許可權/許可權為何

關於ACCESS的專案其意義為

· c :此程序在當前的目錄下(非次目錄); · e :可被觸發為執行狀態; · f :是一個被開啟的檔案; · r :代表頂層目錄 (root directory); · F :該檔案被開啟了,不過在等待迴應中; · m :可能為分享的動態函式庫;

<2>lsof:列出被程序所開啟的檔案檔名

[[email protected] ~]# lsof [-aUu] [+d]

選項與引數: -a :多項資料需要『同時成立』才顯示出結果時! -U :僅列出 Unix like 系統的 socket 檔案型別; -u :後面接 username,列出該使用者相關程序所開啟的檔案; +d :後面接目錄,亦即找出某個目錄底下已經被開啟的檔案!

<3>pidof:找出某支正在執行的程式的PID

[[email protected] ~]# pidof [-sx] program_name

選項與引數: -s :僅列出一個 PID 而不列出所有的 PID -x :同時列出該 program name 可能的 PPID 那個程序的 PID 範例一:列出目前系統上面 systemd 以及 rsyslogd 這兩個程式的 PID [[email protected] ~]# pidof systemd rsyslogd                                          1          742 # 理論上,應該會有兩個 PID 才對。上面的顯示也是出現了兩個 PID 喔。 # 分別是 systemd 及 rsyslogd 這兩支程式的 PID 啦。