2011-05-24 55 views
4

如何找到可以由特定用戶執行的所有文件(而不是目前的!)如何找到特定的用戶(不是當前)

對於當前可執行的文件,我可以像

find /some/start/dir -executable 

但現在我想要做的事情是:找到所有用戶'josh'可以執行的文件('其他'權限,'用戶'權限和'組'權限)。當然,我不知道用戶的'josh'密碼,所以我不能su'ing。

回答

3

在/ etc/passwd中查找「josh」的用戶標識。

然後運行:查找/一些/開始/ DIR型 「F」 -uid <ID> -perm 111

+0

不,它只是找到這個UID所擁有的文件,但不能被這個用戶執行! – 2011-05-25 17:33:09

+0

你是對的。 -executable只能使用'access()'系統調用來檢查當前用戶的權限。 我編輯了答案,這個解決方案正在工作。儘管如此,請記住,ACL或其他訪問模型仍可能拒絕可執行性(-execute不會繼承當前用戶的此問題)。 假設您不使用ACL或擴展安全機制,此方法將正常工作。 – Ionic 2011-05-26 12:12:05

0

我知道這是一個較老的線程,但我最近必須這樣做,它仍然是相關的。

因爲我們正在談論的* nix的權限,以接近這一個繁瑣而徹底的方法是看該ID在系統上的成員:

即:

# assuming josh is a member of group "grpname" 

find/-user josh -perm -100  # gets files owned by josh & are executable 
find/-group grpname -perm -010 # gets files with grp ownership and executable 
           #  via group 
           #  Must be repeated for each group josh is in 
find/-perm -001    # gets files executable by any user 

注對於josh擁有但歸「grpname」組所有的文件,可能會有一些重疊。 sort | uniq會很容易地過濾出來。

相關問題