디렉토리에있는 모든 파일 소유자 목록을 얻는 방법


14

현재 할당량 시스템을 수정하려고합니다. 내 문제는 디렉토리의 모든 파일이 같은 사용자가 소유하고 있는지 확인할 수 없다는 것입니다. 가능하면 디렉토리에 다른 파일 소유자를 재귀 적으로 나열하는 방법이 있습니다.

예 : get-owners-of DIRNAME


1
모든 소유자 만, 또는 소유자가있는 모든 파일 또는 특정 사용자 이외의 사람이 소유 한 모든 파일을 나열 하시겠습니까?
바이트 사령관

답변:


25

당신이 사용할 수있는 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

1
디렉토리 평가하기 위해 내용을 단지 추가 (그리고 루트 디렉토리 / 검색 자체 -ies) -mindepth 1-printf. 그리고 sudoOP가 필요한 상황에서 작동하지 않는 경우에는 예제에 포함 시키지 않습니다.
David Foerster

않는 -t:이 상황에 변화를?
kasperd

@kasperd 좋은 점-아마 ( 정렬 순서에 영향을 줄 있지만 우리는 그것에 정말로 관심이 없습니다)
steeldriver

19
stat -c %U * 

모든 파일의 소유자를 나열합니다.

다음 항목으로 파이프하여 정렬하고 중복을 제거 할 수 있습니다 sort -u.

stat -c %U * | sort -u

스틸 드라이버가 지적했듯이 이것은 재귀 적이 지 않습니다. 나는 이것이 요구되는 것을 놓쳤다. globstar를 활성화하여 재귀 적으로 만들 수 있습니다.

shopt -s globstar
stat -c %U **/* | sort -u

전체적으로, 스틸 드라이버의 대답 은 아마도 더 좋으며 여기에서 허용되는 대답이어야합니다 :)


검색에 많은 파일이 있으면 명령 줄 길이를 넘지 않습니까? 그렇다면 @steeldriver의 답변이 더 좋습니다.
CSM

@CSM입니다. 그렇기 때문에 스틸 드라이버가 대답하는 것이 많은 경우에 더 좋습니다.
vidarlo

2
@CSM 나는 ARG_MAX당신이 할 수있는 문제 인 것 같아요 printf '%s\0' **/* | xargs -0 stat -c %U( printf내장되어 있기 때문에 길이 제한이 동일하지 않아야 함)
steeldriver

5

사용자가 소유 하지 않은 파일을 직접 검색하는 것이 더 효율적일 수 있습니다 ...

find /directory ! -user username -printf "%u %p\n" 

4

파이썬을 통한 DIY 방법 :

#!/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
. . .
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.