리눅스 읽기, 쓰기 - linugseu ilg-gi, sseugi

리눅스(Linux)에서 작업을 진행하다 보면 파일과 디렉토리의 권한을 변경하거나 소유권을 변경하는 경우가 많이 발생합니다. 오늘은 파일과 디렉토리의 권한을 확인하는 방법과 권한을 변경하는 방법 소유권 변경 방법에 대해서 알아보겠습니다.

 

 

리눅스(Linux) 권한 확인방법

리눅스(Linux) 서버에 접속 후 ll 명령어를 입력하면 폴더와 파일의 권한과 소유권자가 누구인지 확인 할 수 있습니다.

 

리눅스(Linux) 권한 설명

리눅스의 권한은 r(read)읽기/ w(write)쓰기 /x(execute)실행으로 나뉩니다. 그리고 파일, 폴더 권한을 확인해 보면 rwxrwxrwx 이런식으로 총 9글자의 스펠링이 보입니다. 이 9가지의 스펠링을 3자리씩 잘라서 권한이 적용된 내용을 볼 수 있습니다. 맨 처음 3글자 rwx의 권한 표시는 파일, 폴더의 유저 권한입니다. 유저 권한이란 파일과 폴더의 소유자를 말합니다. 두번째 3글자의 rwx는 그룹의 권한입니다. 그룹이만 한 그룹 안에 여러 유저를 등록 할 수 있으며 그 그룹에 속한 유저에게 적용되는 권한입니다. 마지막 3글자인 rwx는 유저, 그룹이 아닌 모든 사용자가 사용 가능한 권합니다.

 

EX) 

rwxr--rw- 1 root good 5720 Jul 15 13:15 test.txt

만약 위와 같이 권한이 부여되어 있으면 rwx / r-- / rw- 왼쪽과 같이 3글자씩 권한을 읽어 주시면 됩니다. 맨처음 rwx는 파일, 폴더의 유저가 현재 접속한 유저와 같으면 읽기, 쓰기, 실행이 가능한 권한입니다. 중간의 r-- 권한의 경우는 읽기만 가능한 권한이며 그룹에 속한 사용자에게만 해당되는 내용이며 마지막 rw- 권한의 경우는 읽고, 쓰는거는 가능하지만 실행은 불가능한 권한입니다.

 

 

리눅스(Linux) 권한 변경(리눅스 chmod로 권한 변경)

리눅스 chmod 명령어를 사용하여 파일, 폴더의 권한을 변경할 수 있습니다. chmod 명령어의 경우 총 세자리의 숫자를 가지고 권한을 부여합니다. 아래의 예제를 토대로 권한에대해 설명 드리겠습니다.

EX) chmod 731 test.txt 라고 입력 후 실행 한다면 test.txt 파일의 권한은 rwx-wr--r 로 변경될 겁니다. chmod 731 test.txt에서 숫자를 하나씩 끊어서 권한을 부여합니다. 위의 명령어에서 첫 숫자인 '7'은 아이디의 소유자의 읽기, 쓰기, 실행 권한이 부여되며 중간의 숫자는 그룹의 권한이며 '3'은 쓰기, 실행 권한만 부여 되며 마지막 숫자인 '1'은 모든 사용자에게 실행 권한만 부여됩니다.

명령어 // u=rwx (4 + 2 + 1 = 7), go=r-x (4 + 0 + 1 = 5) chmod 755 helloworld.js // -rwxr-xr-x0 를 이용하여 폴더나 파일의 rwx 권한을 변경 가능하다. 만약 OS에 로그인한 사용자와, 폴더나 파일의 소유자가 다를 경우 관리자 권한 획득 명령어인 // u=rwx (4 + 2 + 1 = 7), go=r-x (4 + 0 + 1 = 5) chmod 755 helloworld.js // -rwxr-xr-x2 를 이용하여 파일의 권한을 변경할 수 있다.

// u=rwx (4 + 2 + 1 = 7), go=r-x (4 + 0 + 1 = 5) chmod 755 helloworld.js // -rwxr-xr-x0 로 권한을 변경하는 방식에는 두 가지가 있다.

  • 첫번째, 더하기(+), 빼기(-), 할당(=)과 접근권한 유형을 표기하여 변경하는 Symbolic method
  • 두번째, rwx 를 3bit로 해석하여, 숫자 3자리로 권한을 표기하여 변경하는 Absolute form

Symbolic method

Access classOperatorAccess Typeu (user)+ (add access)r (read)g (group)- (remove access)w (write)o (other)= (set exact access)x (execute)a (all: u, g, o)

Symbolic method의 구분

사용법은 명령어 // u=rwx (4 + 2 + 1 = 7), go=r-x (4 + 0 + 1 = 5) chmod 755 helloworld.js // -rwxr-xr-x0 뒤에 변경할 권한을 입력한다. 변경할 권한은 액세스 클래스의 u, g, o, a를 변경 조합에 따라 입력하고, 연산자와 액세스 타입을 순서대로 입력한다. 예시는 이렇다.

첫 글자를 제외한 뒤의 9개의 문자는 3글자씩 끊어서 소유자, 그룹 사용자, 기타 사용자의 권한을 표시한다. 3글자씩 끊는 이유는 파일에 부여할 수 있는 권한은 기본적으로 읽기, 쓰기, 실행, 3가지의 형태가 있기 때문이다. 각 권한을 정리하자면 아래와 같다.

- 읽기 권한(r): 파일을 열어볼 수 있고, 파일의 수정은 불가능하나 복사는 가능하다.

- 쓰기 권한(w): 파일에 덧붙여 쓸 수 있다. 즉, 읽기 권한과 쓰기 권한을 같이 가진 rw_ 형태의 파일이라면 파일 편집이 가능하다는 것이다. 읽기 권한 없이 쓰기 권한만 있다면 기존의 파일 뒤에 정보를 덧붙일 수 있는 것만 가능하다.

- 실행 권한(x): 파일을 실행할 수 있다. 

Ex) 주로 쓰는 파일 권한 표시

--- : 접근 불가능한 파일

r-- : 읽기만 가능한 파일

r-x : 읽기와 실행이 가능한 파일(프로그램 같은 파일)

rw- : 읽기와 쓰기가 가능한 파일(일반 파일)

rwx : 모든 권한을 가진 파일

디렉토리에 대한 파일 권한 역시 일반 파일과 동일하다. 디렉토리 권한에 대해 몇 가지 상황을 생각해 보자.

1. 디렉토리에서 쓰기 권한(w)이 없다면 파일을 수정하고 생성하는 것 등이 불가능하다. 

2. 실행 권한(x)이 없다면 디렉토리로 접근하는 것(cd)가 불가능해진다.

3. 읽기 권한(r)만 부여할 경우 디렉토리에 저장된 항목은 조회할 수 있지만 해당 디렉토리에 저장된 파일은 조회할 수 없다. 즉, 어떤 파일이 있다는 것만 알 수 있다.

4. 디렉토리에 실행 권한(x)만 부여할 경우, 디렉토리 내 파일 목록을 볼 수 없다. 이 말은 읽기 권한(r)이 없어 ls -al로 조회해도 디렉토리 내의 파일은 알 수 없다. 하지만 실행 권한(x)은 있어 어떤 파일이 저장되어 있는지 이미 알고 있다면 파일을 조회하는 것은 가능하다. 주의할 점은 이 경우에는 파일의 경로와 이름을 정확하게 입력해야 조회할 수 있다. 

5. 디렉토리에 쓰기 권한(w)만 부여한 경우는 아무 권한도 부여하지 않은 상태와 동일하다.

9글자의 권한 뒤에 나오는 출력 결과는 각각 링크수, 사용자(소유자), 그룹, 파일크기, 수정시간, 파일이름을 나타낸다.

[ 파일 권한 숫자 ]

위에서 살펴 봤듯이, 파일 권한을 구분하는 경우 크게 3가지로 분류할 수 있다.

읽기(r)Reading4쓰기(w)Writing2실행(x)Executing1

이 숫자들은 8진수로 바꿔서 해석을 할 수 있다.

각각 user, group, other에 8진수의 공간이 있다고 보면 된다. 각 자리는 2배씩, 즉, x 권한이 1, w 권한이 2, r 권한이 4가 된다. 따라서 총 합은 7이 되고 r(4), w(2), x(1)을 적절하게 사용해 0~7까지의 수를 만드는 것이 가능하다.

Ex) --------- : 아무런 권한도 없을 경우(000) / rw-r---w- : 642

권한을 기호로 줄 수 도 있지만, 숫자로도 줄 수 있고 이 숫자를 통해 권한을 간편하게 변경할 수 있다.

[ chmod를 사용해 권한 부여하기 ]

chmod(change mode): 파일이나 디렉토리에 권한을 수정할 때 사용한다.

각 사용자별 파일 권한 변경

: user, group, other, all(전부)에게 권한을 지정할 수 있고, 더하기(+)를 사용해 권한을 추가하고, 빼기(-)를 사용해 권한을 제거할 수 있다. "="으로는 권한을 직접 지정할 수 있다.

< 사용 예시 >

chmod g+x [파일명] : 그룹에 실행 권한을 준다.     

chmod o-w [파일명] : 다른 사용자에게 쓰기 권한을 빼앗는다.  

chmod a=rw [파일명] : 모든 사용자에게 읽기, 쓰기 권한을 지정한다.

위의 방식은 다른 대상은 건드리지 않고 특정 대상에 대한 권한만 간단하게 지정할 수 있지만, 한꺼번에 수정할 경우에는 번거로울 수 있다. 이럴 때는 위에서 설명한 권한을 나타내는 숫자를 이용해 한번에 권한을 변경할 수 있다.

chmod {user 권한 숫자}{group 권한 숫자}{other 권한 숫자} [파일명]의 형식을 통해 권한을 변경할 수 있다.

< 사용 예시 >

chmod 000 [파일명] : user, group, other에 있는 모든 권한을 제거한다.

chmod 777 [파일명] : user, group, other에 대한 모든 권한을 추가한다.

chmod 743 [파일명] : user에게는 모든 권한이 허용되고, group에는 읽기 권한(r)만, other에 대해서는 실행 권한(x), 쓰기 권한(w)만 준다.

위에서 설명한 바와 마찬가지로 읽기 권한(r)은 4, 쓰기 권한(w)은 2, 실행 권한(x)은 1로 나타낼 수 있고, 필요한 권한을 모두 더한 값으로 각 사용자의 권한을 지정할 수 있다.

Toplist

최신 우편물

태그