WAS Engineer - Linux 3번째

이정빈·2022년 9월 19일
0

리눅스 복습

목록 보기
3/11
post-thumbnail

퍼미션과 슈퍼 사용자

리눅스의 모든 파일에는 소유자가 존재. 파일의 소유자는 해당 파일에 대한 접근 권한을 자유롭게 설정 가능

ls 명령어에 -l 옵션을 지정하면 파일의 소유자를 확인 가능. 다음은 cat 명령어의 실행파일인 /bin/cat 파일의 소유자를 확인한 예

$ ls -l /bin/cat
-rwxr-xr-x. 1 root root 54048 6x 10 2014 /bin/cat

새롭게 파일을 작성하면 그 파일을 작성한 사용자가 파일의 소유자가 된다

  • 새로운 파일을 만든 후 소유자 확인

$ touch testfile1 <- ldk가 파일 작성
$ ls -l testfile1 <- 파일의 소유자 확인
-rw-rw-r-- 1 ldk ldk 0 5월 16 18:42 testfile1

위 예에서는 사용자 ldk가 파일을 만들었기 때문에 소유자가 ldk라고 출력됨

  1. 그룹

그룹이란 사용자들을 묶은 그룹

$ groups
ldk wheel

파일의 퍼미션

리눅스의 각 파일에는 '누구에게 어떤 권한을 허가할지'에 대한 정보가 설정되어 있다. 이를 퍼미션(permission)이라 한다.

파일의 퍼미션은 ls -l 명령어를 통해 확인할 수 있다.

9글자 rwxr-xr-x를 파일 모드라고 하며 파일의 퍼미션을 의미한다. 이 9글자는 각각 3글자씩 소유자, 소유 그룹, 그 외의 사용자에 대한 퍼미션을 나타낸다.

여기서 r,w,x는 각각 읽기, 쓰기, 실행에 대한 권한을 의미한다.

r,w,x라는 글자가 표시된다면 해당 권한이 있음을 의미하고, 권한이 없으면 -이 표시된다.

  1. 디렉터리의 퍼미션

디렉터리에도 퍼미션을 설정할 수 있다. 디렉터리의 퍼미션 확인은 ls -ld로 확인이 가능하다

디렉터리의 퍼미션도 파일과 마찬가지로 r,w,x라는 문자로 표시된다. 하지만 각각이 의미하는 바가 파일과 다른다는 점에 주의해야 한다.

  • 디렉터리 퍼미션 기호의 의미
기호의미
r읽기:디렉터리에 포함된 파일 리스트 취득 가능
w쓰기:디렉터리 하위에 파일 및 디렉터리 작성 및 삭제 가능
x실행:디렉터리로 이동 가능

디렉터리에 읽기 권한이 있어야 해당 디렉터리에 있는 파일의 목록이 확인가능하다.

디렉터리에 쓰기 권한이 있으면 해당 디렉터리 밑에 파일을 만들거나 지울 수 있다.

디렉터리에 대한 실행 권한이 있다면 cd 명령어로 해당 디렉터리로 이동하거나 디렉터리 안에 있는 파일을 읽고 쓸 수 있다.

  1. chmod 명령어:파일 모드 변경

파일이나 디렉터리의 퍼미션을 설정하려면 chmod라는 명령어를 사용해야 한다. 두 가지 방법이 있는데, 기호 모드와 수치 모드가 있다.

기호 모드

  • 기호 모드로 퍼미션 변경

chmod [ugoa][+-=] <파일 이름>

  • chmod 명령어의 사용자 지정 기호
기호의미
u소유자
g소유 그룹
o기타 사용자
augo 모두

이 때 특별히 사용자를 지정하지 않으면 a를 지정한 것으로 간주됨

  • chmod 명령어의 연산자
기호의미
+퍼미션을 추가함
-퍼미션을 금지함
=지정한 퍼미션과 같게 함

수치 모드

  • 수치모드로 퍼미션 변경

chmod <8진수의 수치> <파일 이름>

기호 모드가 상대적으로 퍼미션을 지정하는 반면 수치 모드는 기존 퍼미션을 새로운 퍼미션으로 덮어쓰게 된다.

  • 수치 모드에서의 퍼미션 수치
의미숫자
읽기(r)4
쓰기(w)2
실행(x)1
  • 수치 모드로 755 퍼미션을 지정

$ chmod 755 file.txt
$ ls -l file.txt
-rwxr-xr-x 1 ldk ldk 0 5월 16 19:02 file.txt

755라는 권한은 소유자는 읽고 쓰기가 가능하며 다른 사용자는 읽고 실행만 할 수 있는 권한이다.

슈퍼 사용자

리눅스에는 관리자 권한을 가지는 특별한 사용자인 슈퍼 사용자가 있다. 슈퍼 사용자는 root라는 사용자 이름을 가져서 루트 사용자라고도 부른다. 반대 슈퍼 사용자가 아닌 사용자를 일반 사용자라고 부른다.

슈퍼 사용자는 강력한 권한을 가지고 있어 시스템 설정 파일을 바꾸거나 새로운 어플리케션을 설치할 수 있다. 또한 파일에 설정된 퍼미션을 무시하고 모든 파일을 읽고 수정하고 삭제할 수 있다.

  • 슈퍼 사용자의 암호 설정

    sudo passwd root
    [sudo] ldk의 암호 :
    새 암호 :
    새 암호 재입력 :
    passwd : 암호를 성공적으로 업데이트하였습니다.

  • 슈퍼 사용자로 전환

    $ su
    암호 : <-- 슈퍼 사용자의 암호 입력
    #<-- 프롬프트가 #로 바뀜

슈퍼 사용자로서 작업이 끝났다면 exit 명령어로 다시 일반 사용자로 돌아갈 수 있다.

  • 슈퍼 사용자의 환경으로 초기화하면서 전환

    $ su -

일반 사용자의 환경으로 슈퍼 사용자로 전환하여 작업할 시에 일부 어플리케이션이 정상적으로 동작하지 않을 수 있다. 따라서 슈퍼 사용자로 전환할 때는 하이픈(-)을 붙여서 실행하는 것이 좋다.

  1. sudo 명령어 : 명령어를 다른 사용자가 되어 실행

sudo 명령어를 사용하면 다른 사용자가 되어 명령어를 실행 할 수 있다. 사용자를 지정하지 않으면 슈퍼 사용자로 명령어를 실행한다.

  • 슈퍼 사용자로 명령어를 실행

    sudo <실행하고 싶은 명령어>

sudo 명령어를 실행하면 암호를 묻는다. 여기서는 현재 로그인한 사용자의 암호를 입력한다. 암호가 일치하면 해당 명령어가 실행되나 로그인한 사용자가 슈퍼 사용자가 아니라면 'xxx는 sudoers 파일에 없습니다'같은 에러 메시지가 출력되면서 실행되지 않는다. 이는 따로 설정이 필요하여 그런거니 당연한 결과.

sudo 명령어 설정

sudo 명령어를 사용할 수 있는 목록은 /etc/sudoers라는 파일을 통해 관리된다.

특정 사용자에게 sudo의 권한을 부여하려면 슈퍼 사용자가 /etc/sudoers 파일에 다음과 같이 기재하면 된다.

ldk ALL=(ALL) ALL

실무 환경에서는 권한을 줄 때 주의를 기울여야 한다.

visudo 명령어:sudoers 파일 편집

/etc/sudoers 파일을 직접 텍스트 에디터로 편집하는 것은 위험하다. 오타라도 발생한다면 누구도 sudo를 사용할 수 없기 때문이다.

이에 따라 visudo라는 특별한 명령어를 통해 파일을 안전하게 관리한다. 이 명령어는 슈퍼 사용자 권한이 필요하다.

  1. sudo와 su 중 사용 우선 순위

슈퍼 사용자의 권한은 최소한으로 제어되는 것이 좋다. 이에 부합하는 명령어는 sudo다. sudo는 슈퍼 자용자의 권한으로 실행할 수 있는 명령어를 사용자별로 제한할 수 있다.

profile
WAS Engineer, Cloud Engineer(지망)

0개의 댓글