본문 바로가기
카테고리 없음

Linux chmod command option 사용법과 예시

by lazyautoman 2023. 2. 10.

1. chmod command

chmod 명령은 Unix 기반 운영 체제에서 파일 및 디렉토리의 권한을 변경하는 데 사용됩니다. "chmod"라는 단어는 "모드 변경"을 의미합니다. 권한은 파일이나 디렉토리를 읽고, 쓰고, 실행할 수 있는 사람을 결정합니다.

 

chmod 명령은 두 가지 인수를 사용합니다. 첫 번째는 설정하려는 권한이고 두 번째는 변경하려는 파일 또는 디렉토리입니다. 권한은 8진수 또는 기호 표현의 두 가지 방법으로 지정할 수 있습니다.

 

다음은 chmod 명령을 사용하여 file.txt라는 파일의 권한을 변경하는 예입니다.

 

$ ls -l file.txt
-rw-rw-r-- 1 user user 0 Feb 10 11:00 file.txt

$ chmod 755 file.txt

$ ls -l file.txt
-rwxr-xr-x 1 user user 0 Feb 10 11:00 file.txt

 

첫 번째 ls 명령에서 file.txt 파일에 rw-rw-r-- 권한이 있음을 알 수 있습니다. 즉, 파일 소유자가 파일을 읽고 쓸 수 있고 소유자 그룹의 구성원이 읽고 쓸 수 있음을 의미합니다. 다른 사람은 파일을 읽을 수만 있습니다.

 

chmod 명령에서 인수 755는 파일에 대한 새 권한을 지정합니다. 첫 번째 숫자인 7은 소유자의 권한을 rwx로 설정하며, 이는 소유자가 파일을 읽고 쓰고 실행할 수 있음을 의미합니다. 다음 세 자리 755는 그룹 및 기타 사용자의 권한을 r-x로 설정합니다. 즉, 파일을 읽고 실행할 수만 있고 쓸 수는 없습니다.

 

마지막으로 두 번째 ls 명령은 파일의 권한이 rwxr-xr-x로 성공적으로 변경되었음을 보여줍니다.

 

2. chmod command option

chmod 명령에는 숫자(8진수) 및 기호의 두 가지 권한 지정 방법이 있습니다.


숫자(8진수) 표현 : 이 표현에서 권한은 설정하려는 권한 값을 더하여 구성되는 8진수로 지정됩니다.

다음 표에는 각 권한의 숫자 값이 나열되어 있습니다.

 

7 = rwx (read, write, and execute)
6 = rw- (read and write)
5 = r-x (read and execute)
4 = r-- (read only)
3 = -wx (write and execute)
2 = -w- (write only)
1 = --x (execute only)
0 = --- (no permission)

 

예를 들어 파일 소유자에게 모든 권한(읽기, 쓰기 및 실행)을 부여하고 그룹 구성원 및 다른 사용자가 파일을 읽고 실행할 수 있도록 하려면 8진수 744를 사용합니다.

 

chmod 744 file.txt

 

상징적 표현 : 이 표현에서는 문자를 사용하여 설정하려는 권한을 지정합니다. 기호 표현의 형식은 [ugoa...][+-=][rwxXstugo...]입니다.

 

● u(사용자)는 파일의 소유자를 나타냅니다.
 g(그룹)은 소유자 그룹의 구성원을 나타냅니다.
 o (기타)는 다른 모든 사용자를 나타냅니다.
 a(모두)는 세 가지(사용자, 그룹 및 기타)를 모두 나타냅니다.
 + 지정된 권한을 추가합니다.
 - 지정된 권한을 제거합니다.
 = 지정된 권한을 설정하고 다른 권한은 제거합니다.
 r(읽기)은 읽기 권한을 나타냅니다.
 w(쓰기)는 쓰기 권한을 나타냅니다.
 x(실행)는 실행 권한을 나타냅니다.
 X는 파일이 디렉토리이거나 파일에 이미 실행 권한 세트가 있는 경우에만 실행 권한을 추가합니다.
 s(사용자 또는 그룹 ID 설정)는 실행 시 set-user-ID 또는 set-group-ID를 설정합니다.
 t(스티키)는 스티키 비트를 설정합니다.

 

3. chmod command option

(1) u 옵션

각 사용자가 자신의 블로그 파일을 저장할 고유한 디렉토리가 있는 블로그 시스템이 있다고 가정해 보겠습니다. 기본적으로 디렉토리는 rwxrw-rw-(8진수 표현으로 766) 권한으로 생성됩니다. 즉, 소유자와 소유자 그룹의 구성원은 파일을 읽고 쓰고 실행할 수 있지만 다른 사용자는 파일을 읽고 쓸 수만 있습니다.

 

이제 john이라는 사용자가 있고 그 사람만 파일을 읽고 쓸 수 있고 다른 사람은 파일에 전혀 액세스할 수 없도록 그의 블로그 디렉토리에 대한 권한을 변경하려고 한다고 가정해 보겠습니다.

 

$ ls -l /var/www/john
drwxrw-rw- 2 john john 4096 Feb 10 11:00 john

$ chmod 700 /var/www/john

$ ls -l /var/www/john
drwx------ 2 john john 4096 Feb 10 11:00 john

 

첫 번째 ls 명령에서 john 디렉토리에 rwxrw-rw- 권한이 있음을 알 수 있습니다.

chmod 명령에서 숫자 700은 사용자(u)에 대한 권한을 rwx로 설정합니다. 즉, john은 디렉토리에 대한 읽기, 쓰기 및 실행 권한이 있지만 그룹 및 기타 사용자에게는 권한이 전혀 없습니다.

 

(2) g 옵션

각 사용자가 자신의 블로그 파일을 저장할 고유한 디렉토리가 있는 블로그 시스템이 있다고 가정해 보겠습니다. 기본적으로 디렉토리는 rwxrw-rw-(8진수 표현으로 766) 권한으로 생성됩니다. 즉, 소유자와 소유자 그룹의 구성원은 파일을 읽고 쓰고 실행할 수 있지만 다른 사용자는 파일을 읽고 쓸 수만 있습니다.

 

이제 john이라는 사용자가 있고 그의 그룹 구성원이 파일을 읽고 실행할 수 있지만 쓸 수 없도록 그의 블로그 디렉토리에 대한 권한을 변경하려고 한다고 가정해 보겠습니다.

 

$ ls -l /var/www/john
drwxrw-rw- 2 john john 4096 Feb 10 11:00 john

$ chmod 551 /var/www/john

$ ls -l /var/www/john
drwxr-x--x 2 john john 4096 Feb 10 11:00 john

 

첫 번째 ls 명령에서 john 디렉토리에 rwxrw-rw- 권한이 있음을 알 수 있습니다.

chmod 명령에서 숫자 551은 그룹(g)에 대한 권한을 r-x로 설정합니다. 즉, john의 그룹 구성원은 디렉토리에 대한 읽기 및 실행 권한이 있지만 쓸 수는 없습니다. 소유자인 john은 여전히 ​​전체 권한(rwx)을 가지고 있으며 다른 사용자는 권한이 전혀 없습니다.

 

(3) o 옵션

각 사용자가 자신의 블로그 파일을 저장할 고유한 디렉토리가 있는 블로그 시스템이 있다고 가정해 보겠습니다. 기본적으로 디렉토리는 rwxrw-rw-(8진수 표현으로 766) 권한으로 생성됩니다. 즉, 소유자와 소유자 그룹의 구성원은 파일을 읽고 쓰고 실행할 수 있지만 다른 사용자는 파일을 읽고 쓸 수만 있습니다.

 

이제 john이라는 사용자가 있고 다른 사람이 파일을 읽을 수는 있지만 파일을 쓰거나 실행할 수 없도록 그의 블로그 디렉토리에 대한 권한을 변경하려고 한다고 가정해 보겠습니다.

 

$ ls -l /var/www/john
drwxrw-rw- 2 john john 4096 Feb 10 11:00 john

$ chmod 744 /var/www/john

$ ls -l /var/www/john
drwxr--r-- 2 john john 4096 Feb 10 11:00 john

 

첫 번째 ls 명령에서 john 디렉토리에 rwxrw-rw- 권한이 있음을 알 수 있습니다.

chmod 명령에서 숫자 744는 다른 사람(o)에 대한 권한을 r--로 설정합니다. 즉, 다른 사람은 해당 디렉토리에 대한 읽기 권한만 있지만 쓰거나 실행할 수는 없습니다. 소유자인 john과 그의 그룹 구성원은 여전히 ​​전체 권한(rwx)을 가집니다.


(4) a 옵션

각 사용자가 자신의 블로그 파일을 저장할 고유한 디렉토리가 있는 블로그 시스템이 있다고 가정해 보겠습니다. 기본적으로 디렉토리는 rwxrw-rw-(8진수 표현으로 766) 권한으로 생성됩니다. 즉, 소유자와 소유자 그룹의 구성원은 파일을 읽고 쓰고 실행할 수 있지만 다른 사용자는 파일을 읽고 쓸 수만 있습니다.

 

이제 john이라는 사용자가 있고 모든 사람(소유자, 그룹 구성원 및 기타 사용자)이 파일을 읽을 수만 있도록 그의 블로그 디렉토리에 대한 권한을 변경하려고 한다고 가정해 보겠습니다.

 

$ ls -l /var/www/john
drwxrw-rw- 2 john john 4096 Feb 10 11:00 john

$ chmod 555 /var/www/john

$ ls -l /var/www/john
dr-xr-xr-x 2 john john 4096 Feb 10 11:00 john

 

첫 번째 ls 명령에서 john 디렉토리에 rwxrw-rw- 권한이 있음을 알 수 있습니다.

chmod 명령에서 숫자 555는 모든 사람(a)의 권한을 r-x로 설정합니다. 즉, 소유자, 해당 그룹의 구성원 및 기타 사용자는 디렉토리에 대한 읽기 권한만 가지며 디렉토리에 쓰거나 실행할 수 없습니다.


(5) + 옵션

각 사용자가 자신의 블로그 파일을 저장할 고유한 디렉토리가 있는 블로그 시스템이 있다고 가정해 보겠습니다. 기본적으로 디렉토리는 rwxrw-rw-(8진수 표현으로 766) 권한으로 생성됩니다. 즉, 소유자와 소유자 그룹의 구성원은 파일을 읽고 쓰고 실행할 수 있지만 다른 사용자는 파일을 읽고 쓸 수만 있습니다.

 

이제 john이라는 사용자가 있고 다른 사람이 파일을 실행할 수 있도록 그의 블로그 디렉토리에 대한 권한을 변경하려고 한다고 가정해 보겠습니다.

 

$ ls -l /var/www/john
drwxrw-rw- 2 john john 4096 Feb 10 11:00 john

$ chmod o+x /var/www/john

$ ls -l /var/www/john
drwxrw-rwx 2 john john 4096 Feb 10 11:00 john

 

첫 번째 ls 명령에서 john 디렉토리에 rwxrw-rw- 권한이 있음을 알 수 있습니다.

chmod 명령에서 옵션 o+x는 실행 권한(x)을 다른 사람(o)에 추가(+)합니다. 이제 다른 사용자가 파일을 읽고 실행할 수 있지만 쓸 수는 없습니다. 소유자와 소유자 그룹의 구성원은 여전히 ​​전체 권한(rwx)을 가집니다.


(6) - 옵션

각 사용자가 자신의 블로그 파일을 저장할 고유한 디렉토리가 있는 블로그 시스템이 있다고 가정해 보겠습니다. 기본적으로 디렉토리는 rwxrw-rw-(8진수 표현으로 766) 권한으로 생성됩니다. 즉, 소유자와 소유자 그룹의 구성원은 파일을 읽고 쓰고 실행할 수 있지만 다른 사용자는 파일을 읽고 쓸 수만 있습니다.

 

이제 john이라는 사용자가 있고 다른 사람이 파일을 실행할 수 없도록 그의 블로그 디렉토리에 대한 권한을 변경하려고 한다고 가정해 보겠습니다.

 

$ ls -l /var/www/john
drwxrw-rw- 2 john john 4096 Feb 10 11:00 john

$ chmod o-x /var/www/john

$ ls -l /var/www/john
drwxrw-rw- 2 john john 4096 Feb 10 11:00 john

 

첫 번째 ls 명령에서 john 디렉토리에 rwxrw-rw- 권한이 있음을 알 수 있습니다.

 

chmod 명령에서 옵션 o-x는 다른 사람(o)의 실행 권한(x)을 제거(-)합니다. 이제 다른 사용자는 파일을 읽고 쓸 수만 있고 실행할 수는 없습니다. 소유자와 소유자 그룹의 구성원은 여전히 ​​전체 권한(rwx)을 가집니다.

 

(7) = 옵션

chmod 명령의 = 연산자는 파일 또는 디렉토리에 대한 권한을 정확한 값 세트로 설정하는 데 사용됩니다. = 연산자를 사용하면 권한을 추가하거나 제거하는 대신 설정하려는 권한을 지정할 수 있습니다. 권한은 사용자, 그룹 및 기타 사용자에 대한 읽기, 쓰기 및 실행 권한을 나타내는 기호의 조합으로 설정됩니다.

 

예를 들어, blogger라는 파일이 있고 권한을 rw-rw-r--로 설정하려는 경우 다음 명령을 사용합니다.

 

chmod =rw-rw-r-- blogger

 

이것은 블로거 파일의 권한을 rw-rw-r--로 설정하여 소유자와 그룹에게 읽기 및 쓰기 권한을 부여하고 다른 사용자에게는 읽기 권한만 부여합니다.

 

= 연산자는 파일이나 디렉터리에 대한 기존 권한을 완전히 대체하므로 이 연산자를 사용할 때 세 가지 권한 집합(사용자, 그룹 및 기타)을 모두 지정해야 합니다.


(8) r 옵션

chmod 명령의 r 옵션은 파일이나 디렉토리에 "읽기" 권한을 추가하는 데 사용됩니다. r 옵션은 "읽기"를 나타내며 chmod와 함께 사용하면 사용자가 파일이나 디렉토리의 내용을 읽을 수 있습니다.

 

예를 들어, blogger라는 파일이 있고 소유자에 대한 읽기 권한을 추가하려는 경우 다음 명령을 사용합니다.

 

chmod +r blogger

 

이렇게 하면 블로거 파일의 소유자에게 읽기 권한이 추가되어 rwxr--r--(여기서 r은 읽기, w는 쓰기, x는 실행을 나타냄)와 같은 권한이 생성됩니다.

 

그룹 및 다른 사용자에 대한 읽기 권한을 추가하려면 다음 명령을 사용합니다.

 

chmod +r blogger
chmod g+r blogger
chmod o+r blogger

 

이렇게 하면 그룹 및 기타 사용자에 대한 읽기 권한이 추가되어 rwxrw-rw-(여기서 g는 그룹을 나타내고 o는 기타를 나타냄)와 같은 권한이 생성됩니다.


(9) w 옵션

chmod 명령의 w 옵션은 파일이나 디렉토리에 "쓰기" 권한을 추가하는 데 사용됩니다. w 옵션은 "쓰기"를 나타내며 chmod와 함께 사용하면 사용자가 파일이나 디렉토리의 내용을 수정할 수 있습니다.

 

예를 들어, blogger라는 파일이 있고 소유자에 대한 쓰기 권한을 추가하려는 경우 다음 명령을 사용합니다.

 

chmod +w blogger

 

이렇게 하면 블로거 파일의 소유자에게 쓰기 권한이 추가되어 rwxrw-r--(여기서 r은 읽기, w는 쓰기, x는 실행을 나타냄)와 같은 권한이 생성됩니다.

그룹 및 다른 사용자에 대한 쓰기 권한을 추가하려면 다음 명령을 사용합니다.

 

chmod g+w blogger
chmod o+w blogger

 

이렇게 하면 그룹 및 기타 사용자에 대한 쓰기 권한이 추가되어 rwxrwxrw-(여기서 g는 그룹을 나타내고 o는 기타를 나타냄)와 같은 권한이 생성됩니다.

다른 사용자에게 쓰기 권한을 부여하면 파일이나 디렉토리의 내용을 수정할 수 있으므로 보안상 위험할 수 있다는 점에 유의해야 합니다. 일반적으로 신뢰할 수 있는 사용자 및 그룹에만 쓰기 권한을 부여하는 것이 좋습니다.


(10) x 옵션

"chmod" 명령은 Linux 및 Unix 계열 시스템에서 파일 및 디렉토리의 권한을 변경하는 데 사용됩니다. "x" 옵션은 파일이 프로그램으로 실행될 수 있는지 스크립트로 실행될 수 있는지를 결정하는 실행 권한을 나타냅니다.

 

다음은 chmod 명령과 함께 사용할 수 있는 다양한 x 옵션입니다.

 1) +x : 파일에 실행 권한을 추가합니다.

 

chmod +x blog.sh

 

 2) -x : 파일에서 실행 권한을 제거합니다.

 

chmod -x blog.sh

 

 3) u+x : 파일 소유자에게 실행 권한을 추가합니다.

 

chmod u+x blog.sh

 

 4) u-x : 파일 소유자의 실행 권한을 제거합니다.

 

chmod u-x blog.sh

 

 5) g+x : 파일의 그룹 소유자에 대한 실행 권한을 추가합니다.

 

chmod g+x blog.sh

 

6) g-x: 파일의 그룹 소유자에 대한 실행 권한을 제거합니다.

 

chmod g-x blog.sh

 

7) o+x: 다른 모든 사용자에 대한 실행 권한을 추가합니다.

 

chmod o+x blog.sh


8) o-x: 다른 모든 사용자의 실행 권한을 제거합니다.

 

chmod o-x blog.sh

 

참고: 위의 예에서 "blog.sh"는 실행 권한이 수정되는 파일입니다. 이러한 명령의 실제 출력은 특정 시스템의 특정 파일 시스템 및 권한 설정에 따라 달라집니다.


(11) X 옵션

"chmod" 명령은 Linux 및 Unix 계열 시스템에서 파일 및 디렉토리의 권한을 변경하는 데 사용됩니다. "X" 옵션은 실행 가능한 것으로 표시된 디렉토리 및/또는 파일에 대한 실행 권한을 나타냅니다.

 

1) +X: 이미 실행 가능한 것으로 표시된 디렉토리 또는 파일에 대한 실행 권한을 추가합니다.

 

chmod +X blog/

 

2) -X: 이미 실행 가능한 것으로 표시된 디렉토리 또는 파일에서 실행 권한을 제거합니다.

 

chmod -X blog/

 

3) u+X: 이미 실행 가능한 것으로 표시된 디렉토리 또는 파일의 소유자에 대한 실행 권한을 추가합니다.

 

chmod u+X blog/

 

4) u-X: 이미 실행 가능한 것으로 표시된 디렉토리 또는 파일의 소유자에 대한 실행 권한을 제거합니다.

 

chmod u-X blog/

 

5) g+X: 이미 실행 가능한 것으로 표시된 디렉터리 또는 파일의 그룹 소유자에 대한 실행 권한을 추가합니다.

 

chmod g+X blog/

 

6) g-X: 이미 실행 가능한 것으로 표시된 디렉터리 또는 파일의 그룹 소유자에 대한 실행 권한을 제거합니다.

 

chmod g-X blog/

 

7) o+X: 이미 실행 가능한 것으로 표시된 디렉터리 또는 파일에 다른 모든 사용자의 실행 권한을 추가합니다.

 

chmod o+X blog/

 

8) o-X: 이미 실행 가능한 것으로 표시된 디렉토리 또는 파일에서 다른 모든 사용자의 실행 권한을 제거합니다.

 

chmod o-X blog/

 

참고: 위의 예에서 "blog/"는 실행 권한이 수정되는 디렉토리입니다. 이러한 명령의 실제 출력은 특정 시스템의 특정 파일 시스템 및 권한 설정에 따라 달라집니다. "X" 옵션은 이미 실행 가능한 것으로 표시된 디렉토리와 파일만 영향을 받도록 하는 데 사용됩니다.

 

(12) s 옵션

"chmod" 명령은 Linux 및 Unix 계열 시스템에서 파일 및 디렉토리의 권한을 변경하는 데 사용됩니다. "s" 옵션("setuid" 또는 "setgid" 비트라고도 함)을 사용하면 파일을 실행하는 사용자 대신 소유자 또는 그룹의 권한으로 파일을 실행할 수 있습니다. 이는 사용자가 상승된 권한으로 프로그램을 실행하도록 허용하는 데 유용할 수 있습니다.

 

1) +s: 파일에 setuid 비트를 추가하여 소유자의 권한으로 실행할 수 있도록 합니다.

 

chmod +s blog.sh

 

2) -s: 파일에서 setuid 비트를 제거합니다.

 

chmod -s blog.sh

 

3) +S: 파일에 setgid 비트를 추가하여 해당 그룹의 권한으로 실행할 수 있도록 합니다.

 

chmod +S blog.sh

 

4) -S: 파일에서 setgid 비트를 제거합니다.

 

chmod -S blog.sh

 

참고: setuid 및 setgid 비트는 "u+rwx" 또는 "g+rwx"와 같은 다른 권한 플래그와 함께 추가하거나 제거할 수 있습니다. 그러나 부적절하게 사용하면 보안 위험이 발생할 수 있으므로 setuid 및 setgid 비트를 사용할 때 주의해야 합니다. 신뢰할 수 있는 특정 프로그램에 대해서만 이러한 옵션을 사용하고 파일 소유자 및 그룹에 적절한 권한을 설정하는 것이 좋습니다. 이러한 명령의 실제 출력은 특정 시스템의 특정 파일 시스템 및 권한 설정에 따라 달라집니다.

 

(13) t 옵션

"chmod" 명령은 Linux 및 Unix 계열 시스템에서 파일 및 디렉토리의 권한을 변경하는 데 사용됩니다. "t" 옵션("스티키 비트"라고도 함)은 디렉터리에 적용할 수 있는 특수 권한 플래그입니다. 디렉토리에 고정 비트가 설정되어 있으면 디렉토리 내의 파일 소유자 또는 디렉토리 자체의 소유자만 파일을 삭제하거나 이름을 바꿀 수 있습니다.

 

1) +t: 고정 비트를 디렉터리에 추가합니다.

 

chmod +t blog/

 

2) -t: 디렉토리에서 고정 비트를 제거합니다.

 

chmod -t blog/

 

참고: 고정 비트는 일반적으로 사용되지 않지만 사용자가 파일을 생성할 수 있어야 하지만 서로의 파일을 삭제하거나 수정할 수 없는 공유 디렉터리와 같은 특정 시나리오에서 유용할 수 있습니다. 이러한 명령의 실제 출력은 특정 시스템의 특정 파일 시스템 및 권한 설정에 따라 달라집니다.

댓글