Linux OS 관련 포스팅 목록
목차
권한 설정 필요성
일상에서 권한이라는 단어는 흔히 차갑게 들리기도 합니다. 누군가 나를 또는 다른 사람을 무언가 할 수 있도록 허락한다는 의미가 담겨있습니다. 예를 들어 어떠한 회사의 보안 장비가 있는 장소에 사람이 들어가려면 사전에 그 장소에 대한 접근 권한이 필요합니다.
이제 다시 리눅스로 돌아와 OS 세상의 권한을 이해해보겠습니다. 컴퓨터에는 무수히 많은 자료들이 저장되어있습니다. 국가 기밀 정보에서 개인정보 등 까지 말이죠. 이러한 파일 내용들이 아무에게나 보여도 괜찮을까요? 아니.. 아무 곳으로 유출돼도 괜찮을까요??
당연히 안됩니다. 지금 이 순간 컴퓨터에 저장되어 있는 파일들은 파일을 만든 "소유자"가 다른 사람이 사용할 수 있게 할 것인지에 대한 권한을 설정합니다.
내 파일을 다른 사람이 읽거나 쓰거나 실행할 수 있는가? 에 대한 설정을 권한이라고 합니다.
권한의 종류 설명
첫번째 두번째 세번째
4 2 1 / 4 2 1 / 4 2 1
4: 읽기 권한
2: 쓰기 권한
1: 실행 권한
만약 읽기, 쓰기 권한만 설정한다면 4+2 의 값인 6이다.
만약 읽기 권한만 설정한다면 4 의 값 그대로 4이다.
만약 읽기, 실행 권한만 설정한다면 4+1 의 값인 5이다.
첫 번째 필드는 "사용자" 즉, 파일 소유자에 대한 권한
두 번째 필드는 "그룹" 즉, 파일 소유자와 같은 그룹에 대한 권한
세 번째 필드는 "다른 사용자" 즉, 파일을 만든 소유자 이외의 다른 사용자에 대한 권한
예제 목표
리눅스 우분투 환경에서 일반적인 텍스트 파일을 생성하여 파일을 만든 사람과 그룹, 다른 사용자들에게 다른 권한을 설정하여 권한을 이해하는 것이 목표입니다.
예제를 실행하기에 앞서 우분투의 계정을 2개 이상 생성한 이후 테스트를 진행하시길 바랍니다. 권한을 테스트하기 위해서는 여러 사용자와 그룹이 필요합니다. 따라서 아래와 같이 사전 사용자를 생성하겠습니다.
$ sudo adduser test1
$ sudo adduser test2
$ cat /etc/passwd
/etc/passwd 내용을 확인하였을 때 제일 아래에 test1, test2 계정명이 있으면 정상적으로 계정이 생성된 것입니다.
예제 파일 생성
우선 아래와 같은 명령으로 test1 계정으로 로그인하여 아래 경로에 텍스트 파일을 생성합니다.
$ su test1
$ cd /tmp
$ mkdir permission_example; cd permission_example
$ echo "permission_example_text_file" > test.txt
$ ls -al ./
ls 명령을 통해 "test.txt" 파일 권한을 확인해보면 현재 제 PC의 리눅스는 파일 생성 시 권한 초기 값이으로 설정되어있는 것을 알 수 있습니다.
이 "test.txt" 파일의 권한을 확인하였을 때 "-rw-rw-r--" 의 권한으로 설정되어있는 것을 확인할 수 있습니다. 우리가 위에서 첫 번째, 두 번째, 세 번째 필드 권한 설정 방법을 배운 대로 대입해보면 아래와 같습니다.
첫번째 필드, rw-, 4+2 즉, 소유자의 권한은 읽기,쓰기 권한이며 6입니다.
두번째 필드, rw-, 4+2 즉, 동일 그룹의 권한은 읽기,쓰기 권한이며 6입니다.
세번째 필드, r--, 4 즉, 다른 사용자의 권한은 읽기 권한이며 4입니다.
종합적으로 test.txt 파일의 권한은 664 가 설정되어있습니다. 이제 test2 계정으로 로그인하여 test.txt 파일 마지막 라인에 텍스트를 추가하는 명령을 실행해보겠습니다.
다른 사용자로 파일 쓰기
echo 명령어중 ">" 꺾새가 한 개면 새로운 파일을 만들겠다는 의미이고 ">>" 꺾새 표시가 두 개이면 마지막 라인에 텍스트를 추가하겠다는 의미입니다. 텍스트 추가 명령을 실행해보겠습니다.
$ su test2
$ cd /tmp/permission_example
$ cat test.txt
$ echo "add text" >> test.txt
자 다시 test1 계정으로 로그인하여 "test.txt" 파일의 다른 사용자 권한중 읽기 권한도 삭제하고 test2 계정으로 "test.txt" 파일을 읽을 때 어떤 상황이 발생하는지 알아보겠습니다.
$ su test1
$ cd /tmp/permission_example
$ chmod 660 test.txt
$ su test2
$ cd /tmp/permission_example
$ cat test.txt
권한 변경 결과
위와 같이 읽기 권한도 존재하지 않기 때문에 test2 계정으론 "test.txt" 파일의 내용도 볼 수 없는 것을 알 수 있었습니다. 이와 같이 Linux Ubuntu 환경에서는 내부 파일에 대해 권한을 다르게 설정하여 보안성을 유지할 수 있습니다. 누구에게 어떤 권한을 부여할지는 파일 소유자 또는 관리자가 설정할 수 있습니다.
다음 포스팅에서는 원래 파일의 소유자를 변경하는 방법에 대하여 알아보겠습니다.