Я не думаю, что это возможно, потому что другие процессы с низким уровнем ввода-вывода (как и само ядро), вероятно, просто игнорируют ваш модуль ядра и вызывают хаос. Помимо этого, это может вызвать серьезные проблемы с производительностью, поскольку каждая программа, которая открывает поток данных ввода-вывода, должна пройти через ваш модуль. Это, конечно, звучит круто, но я не думаю, что это стоит без помощи опытных разработчиков ядра.
stat -c %U *
отобразит список всех файлов.
Это можно сортировать и дублировать, удалив, перебирая его на sort -u:
stat -c %U * | sort -u
Как указано steeldriver, это не рекурсивно. Я пропустил, что этого просили. Это может быть сделано рекурсивным путем включения globstar:
shopt -s globstar
stat -c %U **/* | sort -u
В общем случае ответ steeldriver, вероятно, лучше и должен быть принят здесь:)
stat -c %U *
отобразит список всех файлов.
Это можно сортировать и дублировать, удалив, перебирая его на sort -u:
stat -c %U * | sort -u
Как указано steeldriver, это не рекурсивно. Я пропустил, что этого просили. Это может быть сделано рекурсивным путем включения globstar:
shopt -s globstar
stat -c %U **/* | sort -u
В общем случае ответ steeldriver, вероятно, лучше и должен быть принят здесь:)
stat -c %U *
отобразит список всех файлов.
Это можно сортировать и дублировать, удалив, перебирая его на sort -u:
stat -c %U * | sort -u
Как указано steeldriver, это не рекурсивно. Я пропустил, что этого просили. Это может быть сделано рекурсивным путем включения globstar:
shopt -s globstar
stat -c %U **/* | sort -u
В общем случае ответ steeldriver, вероятно, лучше и должен быть принят здесь:)
Вы можете использовать find для печати пользователя (владельца) и группы, а затем извлечь комбинации uniq, например
$ sudo find /var -printf '%u:%g\n' | sort -t: -u
_apt:root
avahi-autoipd:avahi-autoipd
clamav:adm
clamav:clamav
colord:colord
daemon:daemon
lightdm:lightdm
lp:lp
man:root
root:adm
root:crontab
root:lp
root:mail
root:mlocate
root:root
root:shadow
root:staff
root:syslog
root:utmp
root:whoopsie
speech-dispatcher:root
statd:nogroup
steeldriver:crontab
steeldriver:lightdm
steeldriver:steeldriver
syslog:adm
systemd-timesync:systemd-timesync
testuser:crontab
Вы можете найти более эффективным для прямого поиска файлов, не принадлежащих пользователю ...
find /directory ! -user username -printf "%u %p\n"
Метод DIY через Python:
#!/usr/bin/env python3
import sys,os,pwd
for f in sys.argv[1:]:
username = pwd.getpwuid(os.stat(f).st_uid).pw_name
print( ":".join([f,username]) )
Итерирует все имена файлов, перечисленные в командной строке, получает UID владельца файла, а с помощью модуля pwd получает имя владельца. После этого имя файла и имя пользователя присоединились для печати и разделились через двоеточие. Работает так:
$ ./get_owners.py /etc/*
/etc/acpi:root
/etc/adduser.conf:root
/etc/alternatives:root
. . .
Вы можете найти более эффективным для прямого поиска файлов, не принадлежащих пользователю ...
find /directory ! -user username -printf "%u %p\n"
Метод DIY через Python:
#!/usr/bin/env python3
import sys,os,pwd
for f in sys.argv[1:]:
username = pwd.getpwuid(os.stat(f).st_uid).pw_name
print( ":".join([f,username]) )
Итерирует все имена файлов, перечисленные в командной строке, получает UID владельца файла, а с помощью модуля pwd получает имя владельца. После этого имя файла и имя пользователя присоединились для печати и разделились через двоеточие. Работает так:
$ ./get_owners.py /etc/*
/etc/acpi:root
/etc/adduser.conf:root
/etc/alternatives:root
. . .
Вы можете использовать find для печати пользователя (владельца) и группы, а затем извлечь комбинации uniq, например
$ sudo find /var -printf '%u:%g\n' | sort -t: -u
_apt:root
avahi-autoipd:avahi-autoipd
clamav:adm
clamav:clamav
colord:colord
daemon:daemon
lightdm:lightdm
lp:lp
man:root
root:adm
root:crontab
root:lp
root:mail
root:mlocate
root:root
root:shadow
root:staff
root:syslog
root:utmp
root:whoopsie
speech-dispatcher:root
statd:nogroup
steeldriver:crontab
steeldriver:lightdm
steeldriver:steeldriver
syslog:adm
systemd-timesync:systemd-timesync
testuser:crontab
Вы можете найти более эффективным для прямого поиска файлов, не принадлежащих пользователю ...
find /directory ! -user username -printf "%u %p\n"
Метод DIY через Python:
#!/usr/bin/env python3
import sys,os,pwd
for f in sys.argv[1:]:
username = pwd.getpwuid(os.stat(f).st_uid).pw_name
print( ":".join([f,username]) )
Итерирует все имена файлов, перечисленные в командной строке, получает UID владельца файла, а с помощью модуля pwd получает имя владельца. После этого имя файла и имя пользователя присоединились для печати и разделились через двоеточие. Работает так:
$ ./get_owners.py /etc/*
/etc/acpi:root
/etc/adduser.conf:root
/etc/alternatives:root
. . .
Вы можете использовать find для печати пользователя (владельца) и группы, а затем извлечь комбинации uniq, например
$ sudo find /var -printf '%u:%g\n' | sort -t: -u
_apt:root
avahi-autoipd:avahi-autoipd
clamav:adm
clamav:clamav
colord:colord
daemon:daemon
lightdm:lightdm
lp:lp
man:root
root:adm
root:crontab
root:lp
root:mail
root:mlocate
root:root
root:shadow
root:staff
root:syslog
root:utmp
root:whoopsie
speech-dispatcher:root
statd:nogroup
steeldriver:crontab
steeldriver:lightdm
steeldriver:steeldriver
syslog:adm
systemd-timesync:systemd-timesync
testuser:crontab