이 사이의 차이가 어떤 파일을 실행하기에 올 때 chmod 755
와 chmod +x
내가하는 때를 사용하는 것이 있습니까? 지금까지 만 사용하고 chmod +x
난 그냥 뭔가를 읽고 사용 chmod 755
하고 나는 그것을 사용하는 것이 더이었다 여부를 말할 수 없습니다 chmod 755
나 chmod +x
.
이 사이의 차이가 어떤 파일을 실행하기에 올 때 chmod 755
와 chmod +x
내가하는 때를 사용하는 것이 있습니까? 지금까지 만 사용하고 chmod +x
난 그냥 뭔가를 읽고 사용 chmod 755
하고 나는 그것을 사용하는 것이 더이었다 여부를 말할 수 없습니다 chmod 755
나 chmod +x
.
답변:
그것들을 비교하려면 동일한 관점에서 그것들을 봐야합니다.
chmod +x
동일하다 chmod ugo+x
(바탕 umask
값)chmod 755
와 동등하다 chmod u=rwx,go=rx
먼저 다음을 알아야합니다.
+
파일에 이미있는 다른 권한에이 권한을 추가하는 것을 의미합니다.=
모든 권한을 무시하고 내가 제공 한대로 정확하게 설정해야합니다.
읽기 = 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
당신을 사용하여 지정 :
u=rwx
(소유자에 대해 4 + 2 + 1)g=rx
(그룹의 경우 4 + 1)o=rx
(다른 사람을위한 4 + 1)다음 chmod 755
과 같습니다. chmod u=rwx,g=rx,o=rx
또는 chmod u=rwx,go=rx
.
chmod 755
해당 비트를 설정하고 모든 suid / sgid / sticky 비트 (있을 수 있음)를 지우십시오 (예 : NEVER chmod 755 /tmp
). 755는 항상 0755로 생각해야합니다. 즉, 첫 번째 8 진 비트 세트도 0으로 설정됩니다.
그것을 이해하는 또 다른 방법은 이해하기 쉽도록 chmod +x
권한을 상대적으로 설정하는 반면 절대적으로chmod 755
설정하는 것 입니다.
chmod 755
파일에서 실행 된 후 해당 권한 은 755 또는 rwxr-xr-x
입니다.
chmod +x
기존 권한을 가져 와서 파일에 실행 권한을 추가 합니다.
자세한 내용 은 chmod 매뉴얼 페이지를 검토하는 것이 좋습니다 . chmod 명령으로 사용 가능한 두 가지 작업 모드를보고 동일한 권한 변경 작업을 수행 할 수 있습니다.
8 진 모드는 숫자를 사용하고 파일의 전체 권한을 설정합니다. 문자 모드는 문자를 사용하며 일반적으로 기존 권한 만 수정하는 데 사용됩니다.
chmod 755
소유자, 그룹 및 세계에 모두 실행 권한이 추가되도록 권한 rwxr-xr-x
을 chmod +x
조정 하면서
설정 합니다. 기본 파일 권한으로 가정하면 파일의 rwxr--r--
755와 동일한 권한으로 조정됩니다 rwxr-xr-x
.
차이점은 사용 권한 설정과 설정에 사용하는 모드입니다.
으로 chmod +x
당신은 모든 실행 비트를 설정 - 소유자, 소유자 그룹 및 다른 사용자. 이것을 기호 모드라고합니다. 인용 man chmod
:
연산자 +는 선택한 파일 모드 비트가 각 파일의 기존 파일 모드 비트에 추가되도록합니다. -그것들을 제거합니다. =는 디렉토리의 언급되지 않은 세트 사용자 및 그룹 ID 비트에 영향을 미치지 않는 것을 제외하고는 추가되고 언급되지 않은 비트가 제거되도록합니다.
함께 chmod 755
하면 8 진수를 사용하고,의 이진 표현은 권한의 특정 비트를 설정하는 데 사용됩니다. 첫 번째 (왼쪽) 3 비트는 소유자 권한에 해당하고 중간 3은 그룹 권한에 해당하며 마지막 (가장 오른쪽)은 다른 모든 사용자의 권한에 해당합니다. 비트의 순서는 항상 동일하다 read,write,execute
거나 rwx
순서 이진 표현으로 변환 동일한 개별 번호가 정확하기 때문에, 따라서, 다수의 위치 해당 비트 0, 1 및 해제 하나되는 허락 비트를 설정할 것이다 구체적으로 :
7
는 이진수로 111이므로 소유자에 대해 모든 읽기, 쓰기 및 실행 비트를 설정합니다. rwx
설정됩니다.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
중요한 차이점 중 하나는 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> 형식을 사용하고 델타뿐만 아니라 모든 비트를 지정해야합니다.
이 아름다운 답변 외에도 작지만 중요한 차이점을 언급하고 싶습니다. 명령 chmod 755 file
은와 동일합니다 chmod 0755 file
. SETUID 비트 또는 SETGID 비트가 설정된 파일에서이 명령을 실행하면 SETUID / SETGID 비트가 제거됩니다. chmod +x file
SETUID / 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 테스트
chmod +x
다른 권한을 변경하지 않고 모든 실행 가능 플래그를 설정합니다.chmod 755
rwxr-xr-x 설정