SUID 파일을 식별하는 find 명령을 도와주세요?


2

온라인 과정을 진행 중이며 도움이 필요합니다. 아래 이미지를 참조하십시오. SUID 비트 세트가있는 파일을 찾기 위해 find를 사용하고 있습니다. 질문은 "사용자가 'linux'가 소유 한 'immersive'라는 파일의 내용이 SUID 및 사용자 실행 권한이 설정되어있는 파일의 내용은 무엇입니까? 'immersive'라는 이름의 파일이 여러 개 있습니다. ' 질문에서 나는 명령을 사용했다.

find . -perm /4100

올바른 8 진수 권한이 ​​되길 바랍니다. 이미지에는 두 개의 디렉토리가 반환되지만 ls -la를 실행하면 SUID가 설정된 파일이 표시되지 않습니다. 내가 뭘 잘못하고있는 아이디어가 있습니까?

$ find . -perm /4100
.
./immersive
$ ls .
immersive
$ ls -la ./immersive
lrwxrwxrwx  1   root    root   23 Aug 20 14:25 ./immersive -> /lib/firmware/immersive
linux@find-command:~$ find . -perm /4100 . ./immersive 
linux@find-command:~$ ls -la 
total 24 
drwxr-xr-x 1  linux linux   4096 Oct 13 13:00 . 
drwxr-xr-x 1  root  root    4096 Oct 11 18:56 .. 
-rw------- 1  linux linux   134  Oct 13 13:00 .bash_history 
-rw-r--r-- 17 linux linux   220  Apr  4 2018 .bash_logout 
-rw-r--r-- 17 linux linux   3771 Apr  4 2018 .bashrc
-rw-r--r-- 17 linux linux   807  Apr  4 2018 .profile
lrwxrwxrwx 1  root  root    23   Aug 20 14:25 immersive -> /lib/firmware/immersive

안녕 조지 나는 sudo 계정을 사용할 수 없어서 그냥 찾기를 실행하고 있습니다. 위의 명령은 나에게 a 만 표시하는 다른 대답을 제공합니다. 또는 기간. 그런 다음 ls -la를 실행하면 여전히 SUID 비트가 설정된 파일이 표시되지 않습니다. linux @ find-command : ~ $ find -user linux -perm / 4100을 참조하십시오.
user278930

나는 당신이 원한다고 생각 합니다 -perm /4000(iirc /4100는 소유자의 실행 비트가 설정된 파일을 찾을 것입니다)
steeldriver

1
@steeldriver 질문에 "…, SUID 및 사용자 실행 권한 설정"이 표시 되어 4100이 올바른 것 같습니다.
PerlDuck

1
해야 -user linux옵션은 포함되어 있지 않습니다 수?
George Udosen

1
@PerlDuck이지만 /perm양식 이 권한 비트 하나 와 일치 하지 않습니다 (예 : SUID의 논리 OR 및 사용자 실행 가능)?
스틸 드라이버

답변:


3

vs. 에 대한 설명은 이 질문 을 참조하십시오 . 나는 매우 직관적이지 않지만 인정합니다.-perm /mode-perm -mode

find . -type f -name immersive -user linux -perm -u=sx -ls
# or
find . -type f -name immersive -user linux -perm -4100 -ls

당신이 요구 한대로 할 것입니다.

-perm -4100수단은 : 모두 갖는 파일 찾기 4(=하여 setuid) 설정되고 1나머지 비트 (그룹 등)을 무시하고, 사용자에 대해 설정 (= X를 참조).

-perm /4100한편 의미 : 어떤이든 갖는 파일 찾기 4(=하여 setuid)을 설정하거나 1사용자 (또는 모두)에 대해 설정 (= X의) 나머지 비트를 무시하고있다.

그래서 /mode보다 더 많은 파일을 찾을 수 있습니다 -mode.


명확하지 않은 경우 ( -perm플래그에 초점을 맞추었기 때문에 ) : 다른 사람들은 의미 : user 소유의 이름을 가진 파일 ( -type f)을 찾습니다 . 이 모든 조건은 AND입니다.immersivelinux


찾은 파일 의 내용 을 보려면 cat하나씩 하나씩, 즉 이슈

cat .../immersive

찾은 각 파일에 대해 또는 find명령이이를 수행하도록하십시오.

find . -type f -name immersive -user linux -perm -4100 -exec cat {} \;

위의 조건에 따라 파일을 찾을 수 있지만 이름과 속성 ( -ls) 을 인쇄하는 대신 cat찾은 각 파일에 대한 명령을 실행 합니다.


-perm과 / perm의 차이점에 대해 설명해 주셔서 감사합니다. 위의 명령을 모두 시도했지만 여전히 필요한 파일을 찾지 못했습니다. -u = sx가있는 것은 "알 수없는 술어 -u = sx"라는 오류를 표시합니다.
user278930

@ user278930 그럼 당신은 잊어 버렸습니다 -perm. 스위치 의 매개 변수가 find … -perm -u=sx …어디에 있는지 읽어야합니다 . 이상하게 보이지만 맞습니다. 당신이 드롭하면 다음 생각 의 스위치입니다 및 불평하지만, 사실에 대한 매개 변수입니다 스위치. 스위치 의 매개 변수 와 같습니다 . -u=sx-perm-permfind-u=sxfind-permlinux-user
PerlDuck

안녕하세요 PerlDuck은 위의 두 명령을 모두 시도했지만 둘 다 찾지 못했습니다. 명령에서 현재 작업 디렉토리를 검색한다고 말하는 것이 옳습니다.이 디렉토리는 / home / linux입니다. 이것은 문제의 사용자와 Linux에 맞는 것 같습니다. SUID 세트로이 파일을 찾을 수 있다면 어떻게 볼 수 있습니까?
user278930

@ user278930 제안 된 명령이 정확합니다. 그리고 예, find .현재 디렉토리 (및 아래)에서 파일을 찾습니다. 당신은 당신이 파일의 이름은 한 확신 immersive사용자가 소유 linux하고 예상 권한? 에있는 동안 /home/linux발행하십시오 mkdir -p sampledir; touch sampledir/immersive; chmod 4744 sampledir/immersive다음 실행 find명령을 다시. 파일 이름을 인쇄해야합니다.
PerlDuck

질문에 따르면 "질문은 사용자가"linux "가 소유 한 'immersive'라는 파일의 내용이 SUID 및 사용자 실행 권한이 설정되어 있는가? 'immersive'라는 이름의 파일이 여러 개 있습니다. 올바른 파일을 찾으십시오! "파일이 있어야합니다.
user278930
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.