왜`chmod u = rw, go = r,…`대신에`chmod 644`를 사용합니까?


38

나는 몇 년 동안 * nix에서 일해 왔으며 내가 익숙하지 않은 것 중 하나는 코드의 8 진수 권한입니다. 선호하는 라인 길이보다 다른 이유가 chmod 644 ...이상은 chmod u=rw,go=r ...?

추신 : 나는 8 진수 허가에 대한 설명을 찾고 있지 않습니다. 나는 그들이 어떻게 작동하는지 알고 있으며 매뉴얼에 잘 설명되어 있습니다. 왜 8 진법이 더 인간이 읽을 수있는 형태보다 선호되는지 묻습니다.

답변:


40

8 진 코드를 사용하면 내가 생각할 수있는 두 가지 장점이 있습니다.

  1. 더 짧고 입력하기 쉽습니다.
  2. 몇 가지 사항 만 이해하면되며 일상적으로 사용하는 경우 머리를 긁을 때 머리가 긁히지 않거나 문서를 보지 않아도됩니다. 예를 들어, chmodPerl 또는 C에서 8 진수를 사용해야합니다 .

때로는 간단한 유틸리티가 "친숙한"버전을 처리하지 못하는 경우가 있습니다. 특히 비 GNU 사용자 지역에서.

또한 일부 유틸리티는 8 진수를 내뿜습니다. 예를 들어, umask현재 umask가 무엇인지 확인하기 위해 실행 하면 8 진수로 뱉어 낼 것입니다 (bash umask -S에서는 상징적입니다).

간단히 말해서, 선호하는 유일한 이유는 더 적은 문자를 입력하는 것이지만, 사용하지 않기로 선택하더라도 8 진수 코드를 알아낼 수 있도록 어떻게 매핑하는지 알아야합니다. 8 진수 만하는 것 중 하나로 그러나에 5 개의지도가 있다는 것을 즉시 알 필요는 없으며 rx,이를 알아낼 수 있으면됩니다.


1
chmodPerl 또는 C에서 8 진 표현을 사용해야 한다고 말하는 것은 실제로 표현이 이미 존재했기 때문에 보는 이점이 아닙니다.
n0pe

@MaxMackie : 그것들을 사용하면 유리합니다. 나는 명확히 할 것이다.
derobert

18

내가 8 진수를 너무 오랫동안 사용했다고 생각합니다.

7은 rwx (무엇이든 할 것), 5는 rx (읽기 위해 읽어야 함), 6은 wr (수정해야하는 모든 데이터 파일), 4는 r (보자)입니다. 0은-(죄송합니다. 여기에 아무것도 없습니다). 그리고 순서는 나, 우리, 모두입니다. 이들은 기본 조합입니다.

755 변경하고 실행할 수 있고 다른 사람이 실행할 수 있습니다.

644 변경할 수 있습니다. 다른 사람도 읽을 수 있습니다.

444 모든 사람에게만 읽습니다. 여기까지입니다.

500 나는 그것을 실행할 수 있고, 그것을 바꾸고 싶지 않다.

나를 위해, 요점은 짧습니다. 9 자 및 파일 사양으로 넘어갑니다.


음, 16 진수 (base-16)가 아니라 8 진수 (base-8)입니다.
derobert

그래, 그 반은 16 진수입니다. <grin>
Fiasco Labs

여기에 같은, 나는 ... 텍스트 버전보다 읽기 8 진수 쉽게 찾을 수
브라이언 Knoblauch에게

13

나는 8 진 표현을 실제로 즐긴 적이 없으며, 나는 rwxr-xr-x더 단순 해 보이는 것처럼 항상 직선 표기법을 사용했습니다. 그러나 8 진수 표현을 수집 한 것부터 실제로 기억하기가 더 쉽기 때문에 존재합니다 (어떻게 작동하는지 모르겠습니다).

8 진수가 테이블에 가져 오는 유일한 이점은 모호성이 없다는 것입니다. 8 개의 서로 다른 권한 비트 구성은 하나의 고유 한 숫자로 표시되므로 일부 사람들이 실수로 w원하지 않는 곳에 배치하는 데 도움 이됩니다.

불행히도, 나는이 테이블을 암기했습니다.

#  r  w  x
0  0  0  0
1  0  0  1
2  0  1  0
3  0  1  1
4  1  0  0
5  1  0  1
6  1  1  0
7  1  1  1

8
나는 각 세트 3에 바이너리를 사용하는 것으로 배웠다. 그래서 rw -------는 (110) (000) (000), 즉 (6) (0) (0)입니다. rwxr-xr-x는 (111) (101) (101)이므로 (7) (5) (5)입니다.
Rob

4
8 진수 표현이 존재 하는 주된 이유는 이것이 원래의 Unix 권한 시스템이 C에서 프로그래밍 된 방식이기 때문입니다. 4 개의 8 진수 ( /tmp고정 비트를 포함하여 1777과 같은 특수 문자 는 12 비트), PDP에서 편리한 크기를 사용합니다. 특히 PDP-8. 16 진수를 사용하는 경우 16 진수당 하나의 권한 집합을 자연스럽게 매핑하려면 16 비트 이상의 워드 머신이 필요했지만 모든 PDP가 아니 었습니다. 또한 3 비트를 낭비했거나 그 비트에 대한 사용을 발명해야했을 것인데, 이는 아마도 실제 이익없이 복잡한 Unix perms를 가질 것입니다.
Warren Young

⁺¹가 @Rob btw로 이동합니다. 실제로, 이진 표현에서 실제 숫자를 계산하는 것은 기본 조합이며, 최대 숫자 (즉, 111b) 가 7을 초과하지 않기 때문에 "octal"에 대해 기억할 필요조차 없습니다.
Hi-Angel

이 테이블은 매우 명확합니다. 대단해 !!!
Little Roys

6

나는 그 이유가 다시 역사라고 생각합니다. 처음에는 8 진수 값만있었습니다. 상징적 인 것들이 나중에왔다.

나는 상징적 인 것을 선호합니다. 특히 다른 부분을 건드리지 않고 기존 값을 변경하려는 경우.

chmod -R u=rwx,g-w+X,o=-8 진수로하는 것처럼 ...


3

8 진 모드는 일부 시스템에서 setuid 및 setgid 비트를 제거 할 수 있습니다.

페도라 16 :

$ mkdir dir
$ chmod 2775 dir
$ stat -c %a dir
2775
$ chmod 770 dir
$ stat -c %a dir
2770

( 2유지됨)

FreeBSD 9 :

$ mkdir dir
$ chmod 2775 dir
$ stat -f %Mp%Lp dir
2775
$ chmod 770 dir
$ stat -f %Mp%Lp dir
0770

(가 2되었다 0)

파일 또는 디렉토리의 권한을 변경하려면 변경하려는 비트를 지정하는 것이 좋습니다 (예 : 위의 예에서 chmod o= dir또는 chmod o-rwx dir위의 예).


2

역사는 8 진 모드 가 존재 하는 이유를 설명 하지만 기능은 니모닉 형식이 존재하는 이유라고 생각합니다. 그리고 독점적으로 진수 모드를 사용하여 다른 도구에 대한 모든 포인트는 완벽하게 유효하고 난 당신이 생각 배우고을 알고. 그럼에도 불구하고 보수적 인 관리자는 니모닉 형태의 진정한 유틸리티를 보지 못합니다.

8 진 형식은, 특히 재귀 적으로 사용될 때 관리자가 어리석은 일을하게하는 경향이 있습니다. 또는 오히려 과실이 추가되면 어리석게 변합니다. 텍스트 파일과 x비트 세트 가 많은 폴더를 실행할 때마다 증거가 있습니다.

x그런 식으로 비트를 설정 했을까요? 모드에 니모닉 형식을 사용하지 않으면 어렵지 않기 때문입니다. 사용 권한을 재설정하고 /var/www이전 스타일 CGI를 실행하지 않으므로 x비트를 제거해야합니다. 그러나 x비트는 디렉토리에서 다른 용도로 사용됩니다. 따라서 다음 root과 같은 작업을 수행합니다 .

chmod -R 666 /var/www
find /var/www -type d -exec chmod 777 {} \;

그러나 니모닉 형식을 사용하는 경우 "레시피"를 제공 할 수 있습니다.

chmod -R a=rwX /var/www

이것은 짧은 형식입니다 chmod -R ugo=rwX /var/www(동일하지만 다른 경로를 달성하십시오 chmod -R a-x,a+rwX /var/www).

그러나 8 진 모드로는 달성 할 수없는 더 사소한 것이 있습니다. 당신은 조정할 수 없습니다 user또는 group또는 other8 진수 형태로 개별적으로 마스크.

간단히 말해서 : 메스 (니모닉)와 날카로운 부엌 칼 (옥탈)을 비교하는 것과 같습니다 ...하지만 다른 이유로 여전히 팔진 모드 비트를 알아야합니다 :)

8 진 모드가 여전히 선호 되는 이유 는 니모닉 형태에 더 많은 타이핑이 아니라 지나치게 보수적 인 관리자라고 생각합니다. 그리고 그렇습니다.


0

파일의 사용 권한을 항상 수정해야하는 경우 3 자에게 감사합니다. +또는 -버전을 사용하여 권한을 변경 하는 데 많은 시간이 걸렸습니다.

예를 들어, 아파치 폴더에 새로운 PHP, Python 또는 기타 스크립트를 만듭니다. chmod a+x내가 할 수있는 전부입니다. "all plus execute"로 읽었습니다. 이제 작동한다는 것을 알고 3 문자 만 필요했습니다.

다른 경우에는 644 및 755를 자동으로 사용합니다. 그냥 644파일, 755스크립트 를 의미 한다고 생각합니다 .



0

중요한 한 가지 이유는 8 진 표현이 사용자가 보는 것과 밀접하게 일치하기 때문입니다 ls -l(또는 8 진과 2 진을 정신적으로 변환 할 때 수행함).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.