본문 바로가기
개발공부일지/Linux

Linux기초 - Multi-User 및 File/Directory 권한 부여 및 확인하기

by Hynn1429 2022. 11. 22.
반응형

안녕하세요.

Hynn 입니다.

 

먼저 작성자는 macOS 사용자이다보니, Linux 에서 사용자 계정추가/삭제 등의 명령의 제한이 있어, macOS 기준으로 사용자분들의 이해를 돕고자 이를 예시로 작성해보고자 합니다.

macOS 역시도 뿌리는 같다 보니, 이해하시는데 오히려 그림으로 보여지는 것이 더 쉬울 것이라고 생각됩니다.

 

그럼 시작해보겠습니다.

 

===========

1. Multi-user

2. 계정의 권한 부여

3. File/Directory 권한 설정

===========

1. Multi-user

Linux 계열의 OS 에서 Windows 에 비해서 강점으로 꼽히는 안정성 및 편의성에서는 Multi-User 기능이 있습니다.

이는 Windows 에서도 유사한 기능을 생성하기 위해서 작동하는 기능들을 추가하고 있지만, 오랜기간 이러한 기능을 지원해온 OS에 비해서 갈 길이 먼 것이 사실입니다.

 

macOS, Linux 의 경우, 사용자계정별로 권한을 부여하고, 그에 따른 접근가능 레벨, 사용할 수 있는 작업등의 제한을 설정하여, 보다 편리하게 PC(Server) 의 보안, 안전성을 확보할 수 있습니다.

 

계층은 일반적으로 아래와 같이 나뉘어 있습니다. 

 

Linux, macOS 모두 동일한 구조를 가지고 있습니다.

이를 Terminal 및 macOS GUI 환경에서 같이 보시면 이해가 되실 수 있을거라 생각합니다.

 

기본적으로 Root 계정은 조작에 있어서 Linux 및 macOS 모두 상당히 주의를 요합니다.

권한 행사에 있어 제약이 "0" 이기 때문에 시스템에 치명적인 영향을 미치는 파일이거나, 중요한 파일등을 편집,수정,제거 등이 가능합니다.

이 이야기인 즉슨, 한번의 잘못된 조작이 PC(Server) System 에 치명적인 영향을 일으키기 때문입니다.

 

Linux 는 CLi이기 때문에 눈으로 당연히 보이지 않겠지만, macOS 에서도 root 계정은 비활성화가 되어 있습니다. 

만약 이 글을 읽으시는 분들이 macOS Root 사용자를 활성화 하는 방법을 보시기 위해서는 [macOS - root 사용자 활성화 하기] 에 방문하여 정보를 읽어주시기 바랍니다. 

 

여기서의 Linux 에서는 한발자국 더 나아가, 계정(User) 별 고유한 UserID 값을 부여하게 됩니다. 

이를 UID 라고 부여하게 되는데요. 이 UID에는 규칙이 존재합니다. 이는 이후에 권한 부여에서 참고해야할 수 있기 때문에 이해하고 있어야 합니다.

 

참고로 Linux 를 사용하는 버전 (Ubuntu, Redhet Devian) 에 따라서 다소 다를 수 있지만 큰 틀에서는 다르지 않을 것입니다.

 

  • root account(user) : 0으로 고정됩니다. 
  • System account(user) : 1~999 or 1~499 의 UID 를 사용합니다.
  • Normal account(user) : 1000~ 의 UID 를 사용합니다.

이를 Linux 에서 간편하게 확인하는 방법은 아래와 같습니다.

 

바로 "ID" 명령어를 사용해서 확인할 수 있습니다.

macOS 에서 사용하는 Terminal 의 경우 사용자 폴더 정보가 /users 이므로 아래의 순서에 따라 입력합니다.

 

  1. cd /users
  2. id (root 를 제외한 전체 아이디의 uid 정보를 출력합니다)
  3. ls -al 을 사용하여 사용자 Directory 의 모든 Home Folder 를 확인하여 설정된 계정을 확인합니다.
  4. id [id name] 을 입력하여, 특정 아이디의 UID 를 확인합니다.

 

위의 정보를 가지고 확인할 수 있는 것은 아래와 같이 될 것입니다.

  • root 는 0의 UID 를 가지고 있습니다.
  • hyunwoong, hynn 은 501, 502의 UID 를 부여받았습니다.
  • 방문자 계정은 UID 가 없습니다.
  • System account(user) 는 1~500 까지의 번호를 할당 받는 것으로 보입니다. 

 

2. 계정의 권한 부여

일반적으로 계정의 권한을 부여하는 File은 Linux Directory 중 /etc 에 위치하고 있습니다.

여기서 "sudoers" 라는 파일을 수정해야 합니다. 

하지만 일반적인 계정으로 수정을 시도할 경우 "Permission Denied" , 즉 권한이 없어 수정이 불가하다는 메시지가 출력됩니다.

 

하지만 위에서 언급했듯이, Root 계정의 사용은 특별한 경우가 아니면 "지양" 해야 합니다. 

그렇다 보니, 여기서 유용하게 사용하는 명령어는 "sudo" 라는 명령어가 존재합니다.

 

macOS 의 경우, 시스템설정  > 사용자 및 그룹 에서 계정을 "관리자"로 지정해주기만 해도, 일반적인 사용에는 지장이 없습니다.

하지만 Linux 의 경우, 이러한 관리자 단계가 없기 때문에, "sudo" 명령어를 친숙하게 익혀야 합니다.

 

 

이렇게 여기서 접근한 파일에서 사용자 계정명 ALL=(ALL:ALL)ALL 형태로의 변경을 하면 Sudo 명령을 사용할 준비도 마치게 됩니다.

만약 이러한 권한이 부여되지 않았다면 Sudo 역시 사용에 제한이 발생할 수 있습니다.

사실 "sudo" 를 사용할 수 있다면, 굳이 이러한 설정작업을 거치지 않아도 됩니다.

 

3. File/Directory 권한 설정

 

File/Directory 의 경우, macOS 의 경우 매우 간편하게 설정이 가능합니다.

원하는 Directory 의 마우스 커서를 두고 우클릭하면 파일 권한 설정이 가능하고, 시스템 설정 > 사용자 및 그룹에서 그룹을 추가하여 목록을 관리할 수 있습니다. 이를 통해 파일에 권한을 부여할 수 있습니다.

 

 

하지만 Linux 는, 표기되는 규칙을 이해해야만 적용이 가능합니다. 어렵지 않으니 바로 살펴보도록 하겠습니다.

Linux 에서 각 파일의 정보를 세부적으로 보면, 각각의 정보들을 담고 있습니다.

이 정보의 대한 해석을 먼저 해보도록 하겠습니다.

 

 

  • drwxr-xr-x : 권한을 나타내는 항목입니다.
  • 7 : 파일수 입니다.
  • root : 소유자 명입니다.
  • admin : 소유자가 속한 그룹입니다.
  • 224 : 파일의 크기입니다.
  • 11-22-17:18 : 마지막으로 수정한 날짜입니다.
  • .. : 파일/디렉토리 명입니다.

여기서 우리가 이해해야할 부분은 권한을 나타내는 항목입니다.

이를 편의상 3글자 단위로 나누고, 가장 앞글자를 제외하면 되겠습니다.

 

이를 세글자로 나누면 아래처럼 나눌 수 있습니다.

  • rwx : 소유자의 사용권한을 뜻합니다.
  • r-x : 그룹에 대한 사용권한을 뜻합니다.
  • r-x  : 기타 사용자에 대한 사용권한을 뜻합니다.

여기서 각각의 뜻은 아래와 같기도 합니다.

 

  • r : read 의 약자입니다. 읽기가 가능합니다 ( 4 )
  • w : write 의 약자입니다. 쓰기가 가능합니다 ( 2 )
  • x : excute 의 약자입니다. 실행이 가능합니다 ( 1 )

위의 숫자로 표현한 것은, 이제 사용할 명령어를 적용하기 위해서 입니다.

위의 예시파일은, 소유자는 모든 권한을 가지고, 그룹 및 기타 사용자는 읽기와 실행만 가능하다는 뜻으로 해석이 가능합니다.

 

그러면 이제 다른 파일을 예제로 테스트 해보도록 하겠습니다 (root 파일을 건드실 레벨이라면 이 블로그를 보지 않으실 겁니다) 

List 에서 Hello 라는 파일이 존재하네요.

이 파일을 수정해보도록 하겠습니다.

 

명령어는 아래와 같습니다.

 

chmod 777 ~/hello

 

변경된 것이 보이시나요?

모든 사용자에게 권한이 동일하게 부여된 것입니다.

여기서 이제 이 숫자의 규칙이 적용이 가능합니다. 즉, 여기서 사용되는 명령어 chmod 는 아래와 같은 규칙을 가집니다.

 

chmod 소유자권한/그룹권한/기타사용자권한 위치/경로

숫자를 사용해서 부여하고자 하는 권한의 합을 입력하는 것입니다. 예를 들어, 소유자는 모든권한을 부여하기 위해서는 7, 그룹사용자에게는 읽기와 실행만 가능하게 할 경우, 5 , 기타 사용자는 읽기만 가능할 경우 4 라고 부여를 한다면 명령어는 아래와 같이 작성됩니다.

 

chmod 754 ~/hello

 

다시 변경된 것이 보이시나요? 

물론 권한상의 문제이기는 하지만, 파일의 "소유자" 변경도 가능합니다. 만약 Linux 사용자 중 더 이상 사용을 안하는 경우, 예를들어 회사의 파일 서버에서 퇴사자가 발생한 경우, 퇴사자의 소유인 파일은 모두 다른 사용자에게 인계를 해야할 수 있는 상황이 발생할 수 있습니다.

 

그러한 경우, "chown" 이라는 명령을 사용합니다.

작성예시는 아래와 같습니다.

 

chown 사용자명(UID):그룹명(GID) 위치/파일

GID 는 UID 와 마찬가지로, 그룹에 할당된 고유ID 입니다.

이미 사실 위에서 지나쳐왔을 뿐입니다.

 

그렇다면 이 Hello 를 소유주를 Hynn 이라는 사용자로 변경해보겠습니다.

 

chown hynn:staff ~/hello
chown 502:20 ~/hello

 

위의 "sudo" 와 결합한 예제이기도 합니다.

최초에는 권한이 없어서, sudo 를 사용하여 다시 명령을 작성하고, 그를 반영하여 소유자가 변경된 것을 확인할 수 있습니다.

 

기본적인 구조를 안다면, Linux File/Directory 의 대한 이해는 어렵지 않습니다.

이를 바탕으로 그림을 그려보신다면 더욱 쉽게 이해가 가능합니다.

 

다음 포스팅에서 최대한 어렵지 않게 Linux 를 또 풀어나가보도록 하겠습니다.

 

감사합니다.

 

반응형

댓글