특별한 Linux 파일 속성을 가진 파일을 검색할 수 있습니까?

특별한 Linux 파일 속성을 가진 파일을 검색할 수 있습니까?

다음과 같이 Linux 운영 체제에서 특정 파일 속성을 가진 파일을 검색할 수 있습니까?---S--l---

---S--l---  1  root    root          0 Mar  1004:25/opt/csTuner/iba/wys/tuer_lolk

무엇인가요에스권한:

S - 변경 사항이 디스크에 동기적으로 기록됩니다. 이는 파일 하위 집합에 적용되는 "동기화" 탑재 옵션과 동일합니다.

내 목표는 디스크에 기록된 파일을 동기적으로 검색하는 것입니다.

답변1

귀하의 질문에 나오는 예는 ls -l출력이 아닌 lsattr출력처럼 보입니다. ls -l출력 에서 첫 번째 필드는 다음과 같습니다.모델, 즉 유형(일반, 디렉토리, 심볼릭 링크...) 및 권한입니다.

S이 위치의 비트는 사용자에게 setuid실행 권한이 없음을 나타냅니다. 사용자/그룹/기타 중 어느 누구도 실행 권한을 가지고 있지 않다는 점을 고려하면 이는 거의 의미가 없습니다. 이는 lsetgid 비트가 설정되었지만 실행되지 않았음을 의미합니다. 일반 파일의 경우 이는 강제 잠금이 활성화된 파일을 의미합니다.

여기서 가능성이 더 높은 것은 파일이 잘못된 권한(예 chmod 6000: chmod 600.

이제 언급하고 있는 "동기화" 비트는 S출력용입니다 lsattr.

chattr +S fileLinux에서 이 작업을 수행 하면 lsattr file출력은 다음과 같습니다.

--S----------e-- file

해당 플래그가 있는 파일을 찾으려면:

파일 이름에 개행 문자가 포함되어 있지 않으면 다음과 같이 할 수 있습니다.

find . ! -type l -exec lsattr -d {} + | sed -n 's/^[^ ]*S[^ ]* //p'

S한 버전이 동일한 온라인 위치 에 있거나 다음 버전이 -------동일한 길이일 것이라는 보장은 없습니다.e2fsprogs

파일 이름에 개행 문자가 포함되어 있지 않다고 보장할 수 없는 경우 대신 다음을 수행할 수 있습니다.

(find .//. ! -type l -exec lsattr -d {} +; echo //) |
  sed -ne '/\/\//!{H;d;}' -e 'x; s|^[^ ]*S[^ ]* .//.|./|p'

(각 파일 이름의 시작 부분은 로 식별됩니다 .//).

답변2

find -perm

여러분이 원하는 바로 그 것입니다. "찾기"에 대해 8진수 모드를 지정할 수 있게 해줍니다... 뭐, 찾아보세요.

"stat"을 사용하여 원하는 파마를 찾을 수 있으며 현재 파마가 무엇인지 알려줍니다.

예를 들어

find . -perm 4750

나는 8진수 패턴을 알려줄 만큼 비트 플래그를 잘 인식하지 못하므로 직접 찾아야 합니다.

편집: 지적했듯이 이는 "일반" 파일 권한이 아니라 chattr속성입니다. 그래서 뭔가 다른 일을 해야 합니다. 나는 이것을 다음과 같이 처리할 것이다:

#!/usr/bin/perl

use strict;
use warnings;


open ( my $attrs, "|-", "lsattr -R /path" );

while ( <$attrs> ) {
   my ( $attrs, $filename ) = split; 
   if ( $attrs =~ m/S/ ) { 
        print $filename;
   }
}

close ( $attrs );

하지만 다음을 수행할 수도 있습니다.

lsattr -R | grep '^[-A-Za-z]*S[-A-Za-z]* '

관련 정보