easycode

[Linux] chmod, chown 명령어 정리 본문

Linux

[Linux] chmod, chown 명령어 정리

ez() 2023. 8. 4. 17:37

내장 메모리 용량이 다 차서 외장 ssd를 애용하고 있는 요즘... 보통 IDE나 뭔가를 설치해야할 때면 ssd에 주로 설치 중인데,

설치하고 터미널에서 추가적인 명령어를 입력하려고 할 때마다 거의 permission denied 에러를 마주치는 것 같다.

이번엔 flutter 설치하다가 마주쳤는데, 정말로 안되겠다 해결해보자 싶어서 많이 쓰이는 권한 관련 명령어를 정리해두려고 한다.

 

 

 

 

1. chmod (권한 변경)

chmod는 change와 mode의 앞글자를 따서 chmod라고 불린다. 즉, 파일(혹은 디렉토리)의 권한을 바꾸는 명령어이다.

 

파일의 권한은 

- 읽기(r)

- 쓰기(w)

- 실행(x)

3가지로 나뉘고, 해당 권한을 

- 소유자(user, u)

- 그룹에 소속된 사용자(group, g)

- 그 외 사용자(others, o)

총 3분류로 나누어 각각 설정할 수 있다.

 

즉, 예를 들어 아래와 같은 명령어가 있다고 하자.

chmod g+w a.txt

해당 명령어는 "a.txt" 파일이 속한 그룹의 사용자에게 해당 파일을 쓸 수 있는(write) 권한을 부여한다는 뜻이다.

 

chmod의 기본적인 틀은 아래와 같다.

chmod [OPTION] [MODE] [FILE이나 DIRECTORY명]

[OPTION]

        -v        : 모든 파일에 대해 모드가 적용되는 진단(diagnostic) 메시지 출력.
        -f        : 에러 메시지 출력하지 않음.
        -c        : 기존 파일 모드가 변경되는 경우만 진단(diagnostic) 메시지 출력.
        -R        : 지정한 모드를 파일과 디렉토리에 대해 재귀적으로(recursively) 적용.

[MODE]

          u,g,o,a : 소유자(u), 그룹(g), 그 외 사용자(o), 모든 사용자(a) 지정.
          +,-,=   : 현재 모드에 권한 추가(+), 현재 모드에서 권한 제거(-), 현재 모드로 권한 지정(=)
          r,w,x   : 읽기 권한(r), 쓰기 권한(w), 실행 권한(x)
          X       : "디렉토리" 또는 "실행 권한(x)이 있는 파일"에 실행 권한(x) 적용.
          s       : 실행 시 사용자 또는 그룹 ID 지정(s). "setuid", "setgid".
          t       : 공유모드에서의 제한된 삭제 플래그를 나타내는 sticky(t) bit.
          0~7     : 8진수(octet) 형식 모드 설정 값.

 

여기서 mode의 마지막 부분인 0~7만 따로 더 설명해보겠다.

rwx를 8진수로 보면, 아래와 같이 나눌 수 있다.

r w x
4 2 1

 

즉, 읽기(r)은 4, 쓰기(w)는 2, 실행(x)은 1인 것이다.

 

예를 들어 아래와 같은 명령어가 있다고 보자.

chmod 754 hello.txt

그럼 hello.txt 파일에 대한 권한은 아래와 같다.

- 소유자(u) : r, w, x

- 그룹원(g) : r, x

- 그 외 사용자(o) : r

 

소유자는 해당 파일(hello.txt)에 대해 읽기, 쓰기, 실행에 대한 3가지 권한이 있고,

그룹원은 읽기와 쓰기만, 그 외 사용자는 읽기에 대한 권한 밖에 없는 것이다.

 

또 한 번 예를 들어 보자, 만약 /AndroidStudio/flutter 라는 폴더에 대해 다른 사용자는 아무런 권한을 주지 않고, 그룹원에겐 읽기 권한만 주도록 수정한다고 하면?

chmod 740 /AndroidStudio/flutter

위와 같은 명령어를 쓸 수 있다.

 

 

 

chmod를 이해하기 좋은 글이 있으니 아래에 같이 걸어 두겠다. 한 번쯤 읽어보면 확실히 이해하기 쉽다(글을 너무 잘 써두셨다)

 

리눅스 chmod 명령어 사용법. (Linux chmod command) - 리눅스 파일 권한 변경.

1. 리눅스 파일 사용 권한 리눅스에서, 파일(File)을 사용해 할 수 있는 작업은 크게 세 가지로 나눌 수 있습니다. 파일에 저장된 데이터를 읽기. (r = read). 파일에 데이터를 쓰기. (w = write). 파일 실

recipes4dev.tistory.com


 

2. chown (소유자 변경)

 

chown는 change와 owner의 앞글자를 따서 chown라고 불린다. 즉, 파일(혹은 디렉토리)의 소유자를 바꾸는 명령어이다.

chown은 root 권할일 때 사용 가능하다!!!!!

터미널에서 권한을 보고 싶은 파일이나 디렉토리가 있는 곳에서

ls -l

위 명령어를 입력하면 누가 파일을 소유하고 있는지, 어떤 권한이 있는 지 알 수 있다.

소유자가 내 이름이기 때문에 파란색으로 칠해두었다.

AndroidStudio 라는 폴더 아래에 있는 파일들인데, 간단하게 설명해보자면

소유자는 파랗게 칠해진 쪽이고, 사용자(u), 특정 그룹에 속해있는 사용자(g), 그 외 사용자(o) 모두에게 읽기(r), 쓰기(w), 실행(x) 권한이 부여되어 있다.

 

chown의 기본적인 틀은 아래와 같다.

chown [OPTION] [OWNER][:GROUP] [FILE이나 DIRECTORY명]

- owner : 변경할 소유자

- group : 소유자가 속한 그룹

 

option과 group은 생략 가능하다. 하지만 누구로 소유자를 바꿀 건지는 정해줘야 하니 소유자는 필수!

 

[OPTION]

        -H        : -R 옵션이 지정된 경우, 명령행의 기호 링크를 따릅니다. 트리 조회에서 발견된 기호 링크는 따르지 않습니다.
        -L        : -R 옵션이 지정된 경우, 명령행의 기호 링크와 트리 조회에서 발견된 기호 링크를 모두 따릅니다.
        -P        : -R 옵션이 지정된 경우, 기호 링크를 따르지 않습니다.
        -R        : 파일이 디렉토리를 지정하는 경우, chown은 해당 위치에 연결된 전체 서브트리에서 각 파일의 소유자 및 그룹을 반복적으로 변경합니다.
        -h        : 기호 링크가 가리키는 파일 대신에 기호 링크의 소유자 및 그룹을 변경합니다.

 

 

chown - 파일 소유권 변경

요약 chown [-R [ -H | -L | -P ]] [ -h ] owner[:group] file ... 설명 chown을 사용하여 파일의 소유자를 소유자가 지정한 사용자 ID 또는 프로파일로 설정할 수 있습니다. 선택적으로 chown은 파일의 그룹을 그룹

www.ibm.com


 

3. sudo chmod 777

chmod긴 한데 sudo chmod 777은 또 뭘까?

sudo는 root가 아닌 사용자가 root에 준하는 능력으로 sudo 다음에 나오는 명령을 실행하게 하는 명령어이다.

주로 아래와 같은 명령어를 많이 쓰는데

 

sudo chmod 777 [파일이나 디렉토리명]

모든 사용자가 해당 파일이나 디렉토리를 읽고, 쓰고, 실행할 수 있도록 하는 명령어이다.

그러나 뭘 해도 자꾸 permission denined 오류가 발생할 때만 사용하자!!! 보안적 문제가 아주 크니 최대한 사용을 지양하기.

변경 후 해당 작업이 완료되면, 꼭 다시 chmod로 다른 사용자(o)의 rwx 권한을 삭제시켜주자!!!

 

 

'Linux' 카테고리의 다른 글

[Linux] 스왑 메모리 (가상램) 만들기  (2) 2024.02.01