sudo ls는 Linux에서 숨겨진 파일을 표시하지 않습니다

sudo ls는 Linux에서 숨겨진 파일을 표시하지 않습니다

sudo ls오늘 나는 숨겨진 파일(예: 이름이 로 시작하는 파일 .) 이 OS X에 표시된다는 사실을 발견했습니다. 나는 이것이 너무 놀라서 놀랐다.질문을 했다나는 아직도 이 행동이 다소 이상하고 예상치 못한 것이라고 생각합니다.

그것은 밝혀, 이 동작은 다음으로 거슬러 올라갈 수 있습니다.1979년 2BSD 획득.

이에 비추어 나는 이제 다음과 같은 질문을 던지고 싶다. Linux에서는 왜 ls그러한 동작이 없습니까? 다른 유형의 *nix도 이런 방식으로 동작했던
때가 있었나요 ? ls이 기능을 전혀 복사해서는 안 된다고 결정한 사람과 이유를 설명하는 문서, 커밋 메시지, 이메일이 있습니까? 또는 처음에 복사한 경우 제거해야 한다고 결정했습니까?

답변1

POSIX 표준에는 다음과 같이 명시되어 있습니다.

"( '.' )로 시작하는 파일 이름 및 관련 정보는 명시적으로 참조되지 않는 한, -A 또는 -a 옵션이 제공되거나 구현 정의 조건으로 인해 기록되지 않는 한 기록되지 않습니다."

ls루트 상태는 일반적으로 Linux 배포판에 패키지된 GNU Coreutils 구현에 의해 숨겨진 파일이 작성되는 조건으로 간주되지 않습니다.

프로그램의 동작이 유효 사용자 ID와 같은 전역 변수의 영향을 받지 않는 데에는 충분한 이유가 있습니다. 루트가 아닌 사용자로 개발된 스크립트는 루트로 실행될 때 동작이 변경됩니다.

점으로 시작하는 파일을 숨기는 것은 보안 메커니즘이 아니며 보안 컨텍스트에 연결되어서는 안 됩니다. 소스 파일 .git의 디렉터리 .c나 기타 콘텐츠 와 같이 일반적으로 보고 싶지 않은 콘텐츠를 숨깁니다 . 다른 사용자의 디렉토리에 대한 읽기 액세스 권한이 있는 경우 해당 사용자의 숨겨진 파일을 나열할 수 있습니다. 이 점은 존재를 비밀로 유지하려는 항목보다는 예상되고 흥미롭지 않은 항목을 숨깁니다.

...특별한 운영 체제 상태를 제외한 도트 디렉토리 항목은 ls단순히 특별하게 취급됩니다.

방금 Solaris 10을 사용해 보았지만 이것도 ls이와 같이 작동하지 않습니다. 이는 POSIX 요구 사항이 그렇게 명시된 이유를 설명하는 보편적인 "유닉스주의"가 아닙니다.

관련 정보