玩玩linux下的access函式---探測檔案/目錄許可權
access函式用來探測檔案/目錄許可權, 我們先來看程式:
結果為:#include <stdio.h> #include <unistd.h> int main() { char szTest[][100] = { "ls", "touch test", // 此時, test是檔案 "chmod u-rwx test", "chmod u+r test", "chmod u+w test", "chmod u+x test", }; int i = 0; int n = sizeof(szTest) / sizeof(szTest[0]); for(i = 0; i < n; i++) { system(szTest[i]); if(1 == i) { continue; } if(access("test", F_OK) < 0) { perror("e0"); } else { printf("file ok\n"); } if(access("test", R_OK) < 0) { perror("e1"); } else { printf("read ok\n"); } if(access("test", W_OK) < 0) { perror("e2"); } else { printf("write ok\n"); } if(access("test", X_OK) < 0) { perror("e3"); } else { printf("exec ok\n"); } } return 0; }
[[email protected] learn_c]$ ls
test.c
[[email protected] learn_c]$ gcc test.c
[[email protected] learn_c]$ ./a.out
a.out test.c
e0: No such file or directory
e1: No such file or directory
e2: No such file or directory
e3: No such file or directory
file ok
e1: Permission denied
e2: Permission denied
e3: Permission denied
file ok
read ok
e2: Permission denied
e3: Permission denied
file ok
read ok
write ok
e3: Permission denied
file ok
read ok
write ok
exec ok
[
我們再來看目錄, 程式碼如下:
結果為: [[email protected] learn_c]$ ls#include <stdio.h> #include <unistd.h> int main() { char szTest[][100] = { "ls", "mkdir test", // 此時, test是目錄, 不再是"touch test"生成的檔案 "chmod u-rwx test", "chmod u+r test", "chmod u+w test", "chmod u+x test", }; int i = 0; int n = sizeof(szTest) / sizeof(szTest[0]); for(i = 0; i < n; i++) { system(szTest[i]); if(1 == i) { continue; } if(access("test", F_OK) < 0) { perror("e0"); } else { printf("directory ok\n"); } if(access("test", R_OK) < 0) { perror("e1"); } else { printf("read ok\n"); } if(access("test", W_OK) < 0) { perror("e2"); } else { printf("write ok\n"); } if(access("test", X_OK) < 0) { perror("e3"); } else { printf("exec ok\n"); } } return 0; }
test.c
[[email protected] learn_c]$ gcc test.c
[[email protected] learn_c]$ ./a.out
a.out test.c
e0: No such file or directory
e1: No such file or directory
e2: No such file or directory
e3: No such file or directory
directory ok
e1: Permission denied
e2: Permission denied
e3: Permission denied
directory ok
read ok
e2: Permission denied
e3: Permission denied
directory ok
read ok
write ok
e3: Permission denied
directory ok
read ok
write ok
exec ok
[[email protected] learn_c]$
不消多說。
相關推薦
玩玩linux下的access函式---探測檔案/目錄許可權
access函式用來探測檔案/目錄許可權, 我們先來看程式: #include <stdio.h> #include <unistd.h> int main(
Linux下select函式檔案描述符0狀態的問題
當然是在有輸入或者輸出時檔案描述符的讀寫狀態改變咯,比如標準輸入的檔案描述符是0,如果用select來等待0號檔案描述符,那麼當在鍵盤上敲字元時開始,就是檔案描述符的讀寫狀態改變之時,這時select函式就會返回;對於套接字描述符來說也是這樣,用select來等待一個伺服器描
軟體素材---linux C語言:linux下獲取可執行檔案的絕對路徑--getcwd函式
//標頭檔案:#include <unistd.h> //定義函式:char * getcwd(char * buf, size_t size);  
linux下遞迴查詢某目錄下所有檔案包含某字串的命令
linux下查詢某目錄下所有檔案包含某字串的命令: 從檔案內容查詢匹配指定字串的行: $ grep "被查詢的字串" 檔名 從檔案內容查詢與正則表示式匹配的行: $ grep –e “正則表示式” 檔名 查詢時不區分大小寫: $ grep –i "被查詢的字串"
linux下常用小技巧--查詢目錄下是否存在特定內容的檔案
使用find命令查詢某個目錄下所有檔案(包括子目錄)中是否包含指定內容 find . -type f|xargs grep -e "需要包含的字元" 這樣就能查詢該目錄下所有包含該字元的檔案內容了,同時也會顯示出該內容所在檔案的位置和檔名。
Linux下編譯多個不同目錄下的檔案以及靜態庫、動態庫的使用
先看兩篇博文,作為基礎知識。如果對C/C++編譯連結過程都瞭解的話,可以跳過不看。一、 編譯不同目錄下的多個檔案各個檔案的佈局如下: head.h檔案的程式碼:#ifndef HEAD_H#define HEAD_Hint add(int a, int b); #endif /*HEAD
Linux 下獲取當前路徑所有目錄大小並排序
目錄排序 大小排序日常工作中,會遇到一堆目錄,如何查看各目錄大小呢,大家都知道du命令先列出前10條[email protected]/* */ /scripts]#du -sh * | head 120K 2017031510 248K 2017031514 23M 2017031515 664
在Linux下對文件或者目錄進行打包壓縮
linux下 file clip ont ocl str http ron pbo 一、壓縮命令[compress/gzip/bzip2]: 壓縮只能對文件,不能對目錄,目錄要先打包,然後再壓縮。 (1)compress (2)gzip 1、壓縮文件 [c
Linux下的文件與目錄權限
img 選項 有時 oot oop 字符 設備 可執行 使用命令 一、用戶(User)、群組(Group)和其他人(Others) linux是多用戶多任務的操作系統,同一時刻可能會有多個用戶登錄系統,考慮到文件的安全性等問題,所以Linux下的文件都屬於一個特定的用戶(
linux下的文件及目錄介紹
什麽 用戶組 登錄 日誌文件 應用 比較 頻繁 用戶管理 統一 FHS(英文:Filesystem Hierarchy Standard 中文:文件系統層次結構標準),多數 Linux 版本采用這種文件組織形式,FHS 定義了系統中每個區域的用途、所需要的最小構成的文件和目
c語言實現linux下高危函式system (簡易V1.0版本)
system這個函式真的是要慎用,一不小心就會留下漏洞。 下面是用c語言簡易的實現了一下system函式 #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<err
linux下常用標頭檔案
#include <linux/***.h> 是在linux-2.6.29/include/linux下面尋找原始檔。 #include <asm/***.h> 是在linux-2.6.29/arch/arm/include/asm下面尋找原始檔。 #in
Linux下getopt()函式的使用
Linux下getopt()函式的簡單使用 步入正題: 我們的主角----getopt()函式。 英雄不問出處,getopt()函式的出處就是unistd.h標頭檔案(哈哈),寫程式碼的時候千萬不要忘記把他老人家include上。 再來看一下這傢伙的原型(不是六耳獼
Linux下Java執行.class檔案,報錯找不到或無法載入主類
classpath配置的錯誤,所以找不到.class檔案。 原先的etc/profile中的classpath配置 export CLASSPATH=$JAVA_HOME/lib/tools.jar 更改後的: export CLASSPATH=.:$JAVA_HOME
linux下批量重新命名檔案
假設資料夾Data裡有幾個資料資料夾, 每個資料資料夾內有多個數據檔案,該檔名稱格式為: 2014.143.20.49.21.0000.YN.BAS.00.BHE.M.SAC 現想要將這些檔名稱改為BAS.E.SAC, 即取原檔名的幾列重新命名,方法如下: #!/bin/bash #將資料檔
解決Linux 下 root使用者刪除檔案提示:Operation not permitted
問題描述 用最高許可權rm檔案,居然報錯Operation not permitted。檢視許可權也沒有問題。可想而知有可能檔案被保護了。用命令lsattr檢查一下就知道。 [[email protected] root]# lsattr a.txt ---i---------- a.
Linux下time函式
Linux下time函式都在time.h標頭檔案中。 1、標頭檔案 和時間有關的標頭檔案有以下幾個: time.h sys/time.h sys/times.h sys/timeb.h sys/timex.h time.h是C標準庫的標頭檔案,其餘sys開頭的都是Linux系統自己的標頭檔
對於linux下system 函式的深度理解 整理
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Linux下,grep獲取檔案中的最後一次匹配項
如題:使用grep獲取檔案中的最後一次匹配項 grep '查詢的內容' -A 100 檔名 | tail -n 101 grep獲取檔案中的最後一次匹配項,以及後面100行, 注意是tail -n 101而不是tail -n 100,因為tail -n 100將不會顯示匹配內
Linux下校驗下載檔案的完整性(MD5,SHA1,PGP)
原文:https://www.cnblogs.com/Alight/p/4104070.html 檢視: Linux下校驗下載檔案的完整性(MD5,SHA1,PGP) http://blog.useasp.net/archive/2014/03/29/use-md5-sha1-or-pg