"chmod + x"와 "chmod 755"의 차이점은 무엇입니까?


61

이 사이의 차이가 어떤 파일을 실행하기에 올 때 chmod 755chmod +x내가하는 때를 사용하는 것이 있습니까? 지금까지 만 사용하고 chmod +x난 그냥 뭔가를 읽고 사용 chmod 755하고 나는 그것을 사용하는 것이 더이었다 여부를 말할 수 없습니다 chmod 755chmod +x.


9
chmod +x다른 권한을 변경하지 않고 모든 실행 가능 플래그를 설정합니다. chmod 755rwxr-xr-x 설정
ravery


5
@ ravery : 안녕하세요! 비평 및 설명 요청 전용 영역 인 의견 섹션을 찾았습니다. 답변 / 해결 방법을 제공하려면 아래의 "답변"섹션을 사용해야합니다 (큰 빨간색 "답변 게시"버튼을 찾으십시오). 희망이 도움이됩니다!
궤도에서 가벼움 경주

답변:


144

짧은 버전 :

그것들을 비교하려면 동일한 관점에서 그것들을 봐야합니다.

  • chmod +x동일하다 chmod ugo+x(바탕 umask값)
  • chmod 755 와 동등하다 chmod u=rwx,go=rx

설명:

먼저 다음을 알아야합니다.

  1. + 파일에 이미있는 다른 권한에이 권한을 추가하는 것을 의미합니다.
  2. = 모든 권한을 무시하고 내가 제공 한대로 정확하게 설정해야합니다.

    • 따라서 "읽기, 쓰기, 실행, 고정 비트, suid 및 guid"는 모두 무시되고 제공된 것만 설정됩니다.
  3. 읽기 = 4, 쓰기 = 2, 실행 = 1

    • 그 뒤에 이진 논리가 있습니다 (관심있는 경우).

      Symbolic:  r-- -w- --x  |  421
      Binary:    100 010 001  |  -------
      Decimal:    4   2   1   |  000 = 0
                              |  001 = 1
      Symbolic:  rwx r-x r-x  |  010 = 2
      Binary:    111 101 101  |  011 = 3
      Decimal:    7   5   5   |  100 = 4
                 /   /   /    |  101 = 5
      Owner  ---/   /   /     |  110 = 6
      Group  ------/   /      |  111 = 7
      Others ---------/       |  Binary to Octal chart
      

사용 +x하면 (추가 말하고있다 +() 실행 비트를 x소유자, 그룹 및 다른 사람).

  • 그것은 같 ugo+x거나u+x,g+x,o+x
  • 소유자, 그룹 또는 기타 중 하나를 대상으로 지정하지 않으면 x모든 대상 을 고려합니다. @Rinzwind가 지적했듯이 umask값을 기반으로 하며 umask허용 되는 비트를 추가합니다 . 대상을 o+r다음 과 같이 지정하면 umask더 이상 영향을 미치지 않습니다.
  • 다른 모드 (권한)를 건드리지 않습니다.
  • u+x소유자에게 실행 가능 비트 만 추가 하는 데 사용할 수도 있습니다 .

755당신을 사용하여 지정 :

  • 7-> u=rwx(소유자에 대해 4 + 2 + 1)
  • 5-> g=rx(그룹의 경우 4 + 1)
  • 5-> o=rx(다른 사람을위한 4 + 1)

다음 chmod 755과 같습니다. chmod u=rwx,g=rx,o=rx또는 chmod u=rwx,go=rx.

여기에 이미지 설명을 입력하십시오


15
매우 중요한 추가 사항 : 사용시 chmod 755해당 비트를 설정하고 모든 suid / sgid / sticky 비트 (있을 수 있음)를 지우십시오 (예 : NEVER chmod 755 /tmp). 755는 항상 0755로 생각해야합니다. 즉, 첫 번째 8 진 비트 세트도 0으로 설정됩니다.
Olivier Dulac

1
거의 완벽한 너무 조숙 +1 (yay 당신은 나에게서 그 배지를 얻었다
:)

@OlivierDulac 감사합니다, 나는 너무 많은 세부 사항에 들어가고 싶지 않았지만 대답을 업데이트 할 것입니다 ...
Ravexina

1
권한이 작동하는 방식을 이해했다고 생각합니다. 감사합니다.
Fabich


37

chmod +x 모든 사용자에 대한 실행 권한을 기존 권한에 추가합니다.

chmod 755755파일에 대한 권한을 설정 합니다.

755 소유자에 대한 모든 권한을 의미하고 다른 사람에 대한 읽기 및 실행 권한을 의미합니다.


7

그것을 이해하는 또 다른 방법은 이해하기 쉽도록 chmod +x권한을 상대적으로 설정하는 반면 절대적으로chmod 755 설정하는 것 입니다.

chmod 755파일에서 실행 된 후 해당 권한 755 또는 rwxr-xr-x입니다.

chmod +x기존 권한을 가져 와서 파일에 실행 권한을 추가 합니다.


6

자세한 내용 은 chmod 매뉴얼 페이지를 검토하는 것이 좋습니다 . chmod 명령으로 사용 가능한 두 가지 작업 모드를보고 동일한 권한 변경 작업을 수행 할 수 있습니다.

8 진 모드는 숫자를 사용하고 파일의 전체 권한을 설정합니다. 문자 모드는 문자를 사용하며 일반적으로 기존 권한 만 수정하는 데 사용됩니다.

chmod 755소유자, 그룹 및 세계에 모두 실행 권한이 추가되도록 권한 rwxr-xr-xchmod +x조정 하면서 설정 합니다. 기본 파일 권한으로 가정하면 파일의 rwxr--r--755와 동일한 권한으로 조정됩니다 rwxr-xr-x.


5

차이점은 사용 권한 설정과 설정에 사용하는 모드입니다.

으로 chmod +x당신은 모든 실행 비트를 설정 - 소유자, 소유자 그룹 및 다른 사용자. 이것을 기호 모드라고합니다. 인용 man chmod:

연산자 +는 선택한 파일 모드 비트가 각 파일의 기존 파일 모드 비트에 추가되도록합니다. -그것들을 제거합니다. =는 디렉토리의 언급되지 않은 세트 사용자 및 그룹 ID 비트에 영향을 미치지 않는 것을 제외하고는 추가되고 언급되지 않은 비트가 제거되도록합니다.

함께 chmod 755하면 8 진수를 사용하고,의 이진 표현은 권한의 특정 비트를 설정하는 데 사용됩니다. 첫 번째 (왼쪽) 3 비트는 소유자 권한에 해당하고 중간 3은 그룹 권한에 해당하며 마지막 (가장 오른쪽)은 다른 모든 사용자의 권한에 해당합니다. 비트의 순서는 항상 동일하다 read,write,execute거나 rwx순서 이진 표현으로 변환 동일한 개별 번호가 정확하기 때문에, 따라서, 다수의 위치 해당 비트 0, 1 및 해제 하나되는 허락 비트를 설정할 것이다 구체적으로 :

  • 8 진수 7는 이진수로 111이므로 소유자에 대해 모든 읽기, 쓰기 및 실행 비트를 설정합니다. rwx설정됩니다.
  • 8 진수 5는 이진수로 101이므로 읽기 및 실행을 설정하지만 쓰기 비트를 비활성화합니다. 그룹 및 다른 사용자의 경우 5이므로이 두 범주는 동일한 권한을 갖습니다. 따라서 r-x설정됩니다.

다음은 작은 데모입니다.

    bash-4.3$ touch file1 file2
    bash-4.3$ chmod +x file1
    bash-4.3$ chmod 755 file2
    bash-4.3$ ls -l file1 file2
    -rwxrwxr-x 1 xieerqi xieerqi 0 7月   6 13:54 file1
    -rwxr-xr-x 1 xieerqi xieerqi 0 7月   6 13:54 file2

3

중요한 차이점 중 하나는 chmod +에 umask 제한이 적용되고 chmod <octal>은 그렇지 않다는 것입니다.

다음 예제를 고려하십시오.

$ ls -l foo bar
---------- 1 gowenfawr users 0 Jul  7 16:40 bar
---------- 1 gowenfawr users 0 Jul  7 16:39 foo
$ umask
0022
$ chmod +w bar
$ umask 0002
$ chmod +w foo
$ ls -l foo bar
--w------- 1 gowenfawr users 0 Jul  7 16:40 bar
--w--w---- 1 gowenfawr users 0 Jul  7 16:39 foo
$

따라서 umask 설정에 적합한 방식으로 권한을 델타로 변경하려면 '+'구문을 사용하십시오. 그러나 umask와 상관없이 절대로 설정하려면 <octal> 형식을 사용하고 델타뿐만 아니라 모든 비트를 지정해야합니다.


1

이 아름다운 답변 외에도 작지만 중요한 차이점을 언급하고 싶습니다. 명령 chmod 755 file은와 동일합니다 chmod 0755 file. SETUID 비트 또는 SETGID 비트가 설정된 파일에서이 명령을 실행하면 SETUID / SETGID 비트가 제거됩니다. chmod +x fileSETUID / SETGID 비트는 그대로 유지됩니다. 다음 예제에서이를 확인할 수 있습니다.

~ $ 터치 테스트
~ $ chmod u + s 테스트
~ $ ll 테스트
-rwSrw-r-- 1 mook mook 0 9 월 14 일 00:49 테스트
~ $ chmod + x 테스트
~ $ ll 테스트
-rwsrwxr-x 1 mook mook 0 9 월 14 일 00:49 테스트
~ $ chmod 755 테스트
~ $ ll 테스트
-rwxr-xr-x 1 mook mook 0 9 월 14 일 00:49 테스트
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.