[英]How can I check to see if user has execute permissions?
我想知道如何檢查“用戶”(運行此程序的用戶除外)是否對文件具有執行權限? [C api]
我查看了“訪問”,它提供了與調用者有關的信息。
我正在尋找類似的東西: -
"<cmd> <user_name> <file_name>"
如果<user_name>
具有<file_name>
執行權限,我試圖獲取?
我在尋找C api?
可能的解決方案: - 我使用以下算法來獲取此信息
boolean_t
is_user_has_execute_permissions(char *run_as_user)
{
/* Check world execute permission */
if ((cmd_stat.st_mode & S_IXOTH) == S_IXOTH) {
return (TRUE);
}
/* group id for run_as_user */
getpwnam_r(run_as_user, &pw, buf, passwd_len);
/* Check group execute permission */
if ((cmd_stat.st_mode & S_IXGRP) == S_IXGRP) {
if (pw->pw_gid == cmd_stat.st_gid)
return (TRUE);
}
return (FALSE);
}
有沒有人看到這個錯誤?
您需要調用stat(2),它返回文件所有者,所有者組和其他人的權限位。 您必須找出您感興趣的用戶的ID並且需要其組:請參閱getpwent(3)和getgrouplist(3)。 匹配的第一個將給出結果權限。
從命令行,您可以輕松地使用Awk程序。 就像是
ls -l filename | awk -F '{ if (substring($1,3,1) == "x" exit(0); exit(1)}'
如果找到則將返回代碼設置為0,如果不是則將其設置為1。
從C程序,您想要使用fstat
。 基本上你打開文件
int fd = fopen("filename", "r");
然后使用fstat
獲取文件stat塊
fstat(fd, &bufr)
並查看bufr.st_mode
。
這是fstat的描述。
更新
我會注意到,當OP最初發布時,不清楚C API是否是所期望的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.