我需要檢查root是否是特定目錄中每個文件的所有者。我能做如何獲得Linux中目錄中每個文件的所有者?
stat --format=%u /directory/name/here
獲取目錄本身的所有者,但不是它的文件。
我的另一個想法是做
ls -lL | grep "^-\|^d" | cut -d ' ' -f 2
,但如果在權限中的最後一個字節是一個空間,而不是一個不工作「」。
這也是CentOS的重要。
我需要檢查root是否是特定目錄中每個文件的所有者。我能做如何獲得Linux中目錄中每個文件的所有者?
stat --format=%u /directory/name/here
獲取目錄本身的所有者,但不是它的文件。
我的另一個想法是做
ls -lL | grep "^-\|^d" | cut -d ' ' -f 2
,但如果在權限中的最後一個字節是一個空間,而不是一個不工作「」。
這也是CentOS的重要。
你問兩個不同的問題。
我需要檢查,如果根是每個文件的特定目錄
主人發現某些文件不 root擁有的,你可以這樣做:
find /yourdir ! -user root
如果它根本返回任何文件名,那麼root不是特定目錄中每個文件的所有者。
如何獲得Linux中目錄中每個文件的所有者?
要打印的每個文件在目錄中的用戶名:
find /yourdir -printf '%u %p\n'
如果最後一步將是chown
不是root擁有的文件,你可以簡單地做chown -R root /yourdir
,因爲有一個在不傷害把根文件chowning到root。
這太簡單有效了,謝謝! – michaelAdam
是否可以檢查是否有任何文件不屬於任何幾個用戶名?就像find/yourdir一樣! -user(root,user1,user2,user3)| wc -l? – michaelAdam
你可以使用'-a'作爲「和」。 '找到你的! -user root -a! -user foo -a! '用戶欄'('-a'實際上是可選的,但包含用於說明) –
嘗試
find /your/dir/ -type f -exec stat --format='%u %n' '{}' \;
我加%n
顯示文件名。
閱讀find(1)更多信息有關find
....你可能想-max_depth 1
避免/your/dir/
那麼使用-execdir來代替呢?手冊頁說它更安全。我其實不知道如何。 – michaelAdam
如果你打算使用find,你應該使用'-printf%u \\ n'並且完全避免使用'-exec'。 –
for F in /directory/*; do stat --format='%u' "$F"; done
深深地去還可以選擇添加dotglob
選項,以配合開頭的文件。還有:
shopt -s dotglob
for F in /directory/*; do stat --format='%u' "$F"; done
*--format
相當於-c
。
我修正了' - '。 – michaelAdam
@michaelAdam更新了它的答案。 – konsolebox
您可以使用find
:
find /tmp -type f -printf '%u\n' | sort -u
lightdm
root
tiago
如果您需要UID以數字形式,喜歡用stat
:
find /tmp -type f -printf '%U\n' | sort -u
0
1000
104
你想要的確切輸出是什麼? – konsolebox