版權所有 © 2014 tutorialspoint
chmod, fchmod - 更改檔案許可權
#include <sys/types.h> #include <sys/stat.h> int chmod(const char *path, mode_t mode); int fchmod(int fildes, mode_t mode);
int chmod(const char *path, mode_t mode); int fchmod(int fildes, mode_t mode);
更改由path給定或由fildes引用的檔案的模式。
模式透過或以下方式指定
呼叫程序的有效 UID 必須與檔案的擁有者匹配,或者程序必須具有特權(Linux:它必須具有CAP_FOWNER功能)。
如果呼叫程序沒有特權(Linux:沒有CAP_FSETID功能),並且檔案的組與程序的有效組 ID 或其任何補充組 ID 不匹配,則 S_ISGID 位將被關閉,但這不會導致返回錯誤。
作為安全措施,根據檔案系統,如果寫入檔案,則可能會關閉 set-user-ID 和 set-group-ID 執行位。(在 Linux 上,如果寫入程序沒有CAP_FSETID功能,則會發生這種情況。)在某些檔案系統上,只有超級使用者才能設定粘滯位,這可能具有特殊含義。對於粘滯位,以及目錄上的 set-user-ID 和 set-group-ID 位,請參見stat(2)。
在 NFS 檔案系統上,限制許可權會立即影響已開啟的檔案,因為訪問控制是在伺服器上完成的,但檔案由客戶端維護。如果在客戶端啟用了屬性快取,則擴充套件許可權可能會延遲到其他客戶端。
成功時,返回零。發生錯誤時,返回 -1,並且errno被適當地設定。
根據檔案系統,可以返回其他錯誤。chmod() 的更常見的錯誤列在下面
4.4BSD、SVr4、POSIX.1-2001。
chown (2)
execve (2)
fchmodat (2)
open (2)
path_resolution (2)
stat (2)
廣告