通過學習一段時間的linux系統程式設計,把檔案許可權、stat檔案狀態資訊、umask掩碼等等知識簡單總結一下。
** struct stat stat;
stat(filename,&stat);
獲取檔案資訊,儲存到stat結構體中,其中st_mode儲存了檔案的型別、許可權資料。mode_t是乙個整型資料,%d,%x,%o檢視。
d 目錄檔案。
l 符號鏈結
(注: 1.軟連線ln -s src dst,類似於快捷方式
2.ln src dst ,檔案src多乙個dst通道,具有相同inode,區別cp
3.效果ls -il檢視)
s 套接字檔案
b 塊裝置檔案,二進位制檔案
c 字元裝置檔案
p 命名管道檔案 (建立:mkfifo filename)
- 普通檔案,或更準確地說,不屬於以上幾種型別的檔案
得到st_mode之後就能判斷檔案型別:
if(s_isdir(st_mode)) printf("d");
else
if (s_isreg(st_mode)) printf("-");
else
if (s_ischr(st_mode)) printf("c");
else
if (s_isblk(st_mode)) printf("b");
else
if (s_isfifo(st_mode)) printf("p");
else
if (s_islnk(st_mode)) printf("l");
e**lse if (s_issock(st_mode)) printf("s");
檔案許可權:建立檔案的使用者許可權,同使用者組許可權,其它使用者許可權。9bit可以表示所有許可權。
例如:
1.一組可以用乙個數字表示,r_x : 5 , rw_
:6 ,r__
:4 (只有讀許可權),
2.rwxr_xr_x
:755 , rw_r__r__
:644(建立者可以讀寫,本組使用者和其他使用者只有讀許可權)
3.預設普通使用者touch檔案許可權0664,目錄0775;root使用者建立檔案是644,755.
-
****
普通使用者umask 002 root使用者umask 022。在檔案建立時會自動將許可權減去這兩個數字。
所以使用create會受影響,chmod不受影響
chmod用數字居多。
1.linux 不以字尾名識別檔案,而是使用inode標識檔案。windows,以及gcc用字尾名識別檔案
2.linux中換行符 「\n」 ;windows」\r\n」。所以兩者之間的檔案轉換可以使用unix2dos 、dos2unix命令轉換即可。
例如: unix2dos src 那麼src檔案轉換了dos系統下換行檔案
後面繼續介紹一些linux系統程式設計知識
Linux檔案許可權
linux使用者分為 擁有者 組群 group 其他 other linux系統中,預設的情況下,系統中所有的帳號與一般身份使用者,以及root的相關資訊,都是記錄在 etc passwd檔案中。每個人的密碼則是記錄在 etc shadow檔案下。此外,所有的組群名稱記錄在 etc group內!圖...
Linux檔案許可權
linux使用者分為 擁有者 組群 group 其他使用者 other linux系統中,預設的情況下,系統中所有的帳號與一般身份使用者,以及root的相關資訊,都是記錄在 etc passwd檔案中。每個人的密碼則是記錄在 etc shadow檔案下。此外,所有的組群名稱記錄在 etc group...
linux檔案許可權
檔案的許可權由三個部分組成 u user g group o other 每個部分的許可權又分別 r 4讀 w 寫2 x 執行1 下面以 var www資料夾設定許可權,了解如何設定檔案許可權 chmod a x var www 所有人都可進入 chmod a x var www 所有人都不可進入 ...