8진수 형식의 파일에 대한 권한을 어떻게 얻을 수 있나요?

8진수 형식의 파일에 대한 권한을 어떻게 얻을 수 있나요?

...어떻게 설정할 수 있나요? 디렉토리에서도 같은 방식으로 작동합니까? 끈끈한 비트와 좀 더 "이국적인" 것들은 어떻게 되나요?

답변1

에서 제안한대로@구스타브, stat프로그램(의 일부)GNU 코어 유틸리티그런 이유로 본질적으로 "Linux" 프로그램입니다.포트또는패키지BSD 시스템에서는) 이 작업을 수행할 수 있습니다. 명령

stat -c "%a %n"파일

8진수 모드(인코딩된 setuid, setgid 및 고정 비트 포함)와 파일 이름만으로 형식화된 목록을 생성합니다. 문서에 따르면

  • %a"8 진수 액세스 권한"입니다
  • %n"파일 이름"입니다

예를 들어 다음 스크립트가 제공됩니다.

#!/bin/sh
for name in $*
do       
    ls -ld "$name"
    stat -c '%a %n' "$name"
done

다음과 같은 출력이 표시될 수 있습니다 myscript /usr/bin /usr/bin/X /usr/bin/bsd-write.

drwxr-xr-x 5 root root 118784 Jul 11 19:55 /usr/bin
755 /usr/bin
-rwsr-sr-x 1 root root 9232 Dec 16  2011 /usr/bin/X
6755 /usr/bin/X
-rwxr-sr-x 1 root tty 11000 Jun 17  2010 /usr/bin/bsd-write
2755 /usr/bin/bsd-write

3~4개의 8진수가 반환되는 것을 볼 수 있습니다.액세스 권한, setuid 등의 설정 여부에 따라 다릅니다. 앞의 (네 번째) 숫자는 다음과 같습니다.

  • 4 (세트이드)
  • 2 (설정됨)
  • 1 (끈적)

그만큼액세스 권한반환된 시스템 호출에서 반환된 추가 비트를 제외합니다.stat이름이 디렉토리( S_IFDIR)인지 파일( S_IFREG)인지 알려줍니다. 그런데 1970년대와 1980년대 초의 오래 전 Unix 구현으로 인해 이러한 모든 비트는 16비트 값에 적합합니다.표준값. 왜냐하면액세스 권한파일 형식을 제외하면 해당 값을 명령에서 있는 그대로 사용할 수 있습니다 chmod(또한chmod함수), 8진수이기 때문입니다.chmod명령은 그것을 기대합니다. setuid 등도 8진수로 작동합니다.

chmod u+s /usr/bin/whatever

더 읽기 쉽습니다.

더 읽어보려면

답변2

stat -c "%a %n" <file>

작동하는 것 같습니다. 하지만 더 자세한 내용은 모르겠습니다.

답변3

얻기: Gustave가 대답한 대로.

환경:

chmod 0755 myfile

디렉토리에도 동일합니다. 고정 비트의 경우 첫 번째 숫자는 1이어야 합니다. 고정 비트 정보:https://askubuntu.com/a/432703

관련 정보