簡體   English   中英

如何檢查用戶是否具有執行權限?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM