如何找到可以由特定用戶執行的所有文件(而不是目前的!)如何找到特定的用戶(不是當前)
對於當前可執行的文件,我可以像
find /some/start/dir -executable
但現在我想要做的事情是:找到所有用戶'josh'可以執行的文件('其他'權限,'用戶'權限和'組'權限)。當然,我不知道用戶的'josh'密碼,所以我不能su'ing。
如何找到可以由特定用戶執行的所有文件(而不是目前的!)如何找到特定的用戶(不是當前)
對於當前可執行的文件,我可以像
find /some/start/dir -executable
但現在我想要做的事情是:找到所有用戶'josh'可以執行的文件('其他'權限,'用戶'權限和'組'權限)。當然,我不知道用戶的'josh'密碼,所以我不能su'ing。
在/ etc/passwd中查找「josh」的用戶標識。
然後運行:查找/一些/開始/ DIR型 「F」 -uid <ID> -perm 111。
我知道這是一個較老的線程,但我最近必須這樣做,它仍然是相關的。
因爲我們正在談論的* 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會很容易地過濾出來。
不,它只是找到這個UID所擁有的文件,但不能被這個用戶執行! – 2011-05-25 17:33:09
你是對的。 -executable只能使用'access()'系統調用來檢查當前用戶的權限。 我編輯了答案,這個解決方案正在工作。儘管如此,請記住,ACL或其他訪問模型仍可能拒絕可執行性(-execute不會繼承當前用戶的此問題)。 假設您不使用ACL或擴展安全機制,此方法將正常工作。 – Ionic 2011-05-26 12:12:05