chmod
최근 동료로부터 숫자 대신 문자를 사용해 달라는 요청을 받았습니다 . 명백한 가독성 이점 외에도 숫자 대신 문자를 사용하는 특별한 이유가 있습니까?
답변1
기호 chmod
표기법은 8진수 표기법에 비해 더 세밀하므로 다른 모드 비트는 그대로 유지하면서 특정 모드 비트를 수정할 수 있습니다.
기호 표기법은 세 가지 구성 요소로 구성됩니다.
chmod [references][operator][modes] file
은 (는) 수정될 사용자의 액세스를 지정하는 references
문자 조합으로 구성됩니다 . 즉, 해당 파일을 소유한 사용자( ), 파일 그룹의 다른 사용자( ), 파일 그룹에 속하지 않은 다른 사용자( ) 또는 모든 사용자 ( ). 구성요소를 생략 하면 기본값은 모든 사용자로 설정되지만 에서 허용하는 권한만 수정됩니다.ugoa
file
u
g
o
a
references
umask
그러면 +
operator
지정된 파일 모드 비트가 각 파일의 기존 파일 모드 비트에 추가됩니다. -
제거되도록 합니다. 명시적으로 지정하지 않는 한 디렉터리에 설정된 비트를 제외 =
하고 해당 비트가 추가되고 지정되지 않은 비트가 제거됩니다 .setuid
setgid
는 읽기( ), 쓰기( ), 실행(또는 디렉터리 검색)( ), 파일이 디렉터리이거나 일부 사용자에 대해 이미 실행 권한이 있는 경우에만 실행/검색( ) 에 해당하는 mode
문자 조합으로 구성됩니다 . ) 또는 (지정된 참조에 따라) ( ) 및 제한된 삭제 플래그 또는 고정 비트 ( ). 또는 은 문자 중 하나로 구성될 수 있습니다 . 이 경우 은 현재 소유자( ), 파일 그룹 구성원( ) 또는 이전 범주( ) 에 속하지 않는 사용자의 권한에 해당합니다.rwxXst
r
w
x
X
setuid
setgid
s
t
mode
ugo
mode
u
g
o
예
에 대한 권한 집합 file
이 다음과 같다고 가정합니다.0764/-rwxrw-r--
파일 그룹에 속하지 않은 다른 사용자의 권한을 제거합니다.
8진수:
chmod 760 file
8진수 표기법을 사용할 때 변경되지 않은 채로 남아 있는 기존 권한을 어떻게 반복해야 하는지 참고하세요.
상징적:
chmod o-rwx file
기호 표기법을 사용하면 기존 파일 권한이 중요하지 않습니다.
세트 setuid
:
8진수:
chmod 4764 file
상징적:
chmod u+s file
세트 setgid
:
- 8진수:
chmod 2764 file
- 상징적
chmod g+s file
답변2
문자를 사용하면 다른 비트를 변경하지 않고도 개별 비트를 켜거나 끌 수 있습니다.
다음 디렉토리가 있다고 가정합니다.
drwxrwsr-x 6 f261-01a g261-01a 4096 Sep 12 17:51 /home/teams/261/f261-01a
다른 사람의 읽기 권한을 끄고 숫자를 사용하고 싶다면 빨리 할 수 있습니다 chmod 751
. 단지 디렉토리에서 setgid 비트를 끈 것만 빼고요. 이런.
그러나 를 사용하면 chmod o-r
원하는 읽기 비트만 끄고 디렉토리의 setgid 비트는 설정된 상태로 유지됩니다.
파일이나 디렉터리에서 setuid, setgid 또는 고정 비트를 활성화하려는 경우에도 유용합니다. 특히 이렇게 하면 4번째 옥텟의 어느 비트가 어느 비트인지 기억하는 데 어려움을 겪는 경우가 거의 없습니다.
그래서 그것은 당신이 무엇을 하고 있는지에 달려 있습니다. 나는 단지 권한을 설정할 때 여전히 숫자를 사용하는 것을 선호하고 무엇부터 시작해야 할지 상관하지 않습니다. 그러나 개별 비트를 전환하는 경우 문자 표기가 훨씬 쉽습니다.