Linux 파일 권한: Windows 관리자를 위한 전략적 가이드

당신이 Windows를 장기간 관리했다면, 사용자 계정 관리, NTFS 파일 시스템 및 권한 설정에 대한 경험이 있을 것입니다. 그렇다면, Linux 파일 권한이라는 다른 세계에 대비해야 합니다! Linux에서 파일 시스템은 능숙한 Linux 관리자가 되기 위해 배워야 할 다른 동물입니다.

이 글은 Windows 관리자의 시각에서 Linux를 배우는 네 부분의 시리즈 중 두 번째입니다! 이전에 읽지 않았다면 꼭 첫 번째 부분을 읽어보세요.

파일 시스템 작업

우선 Linux가 파일을 저장하고 관리하는 방법에 대해 알아보겠습니다.

참고: 모든 예제는 OpenSUSE Linux를 사용합니다.

드라이브 문자 없음

Windows와 달리 이동식 드라이브 및 기타 장치는 자동으로 드라이브 문자가 할당되어 다시 시작할 때 열리지 않습니다. Windows에서는 모든 드라이브가 드라이브 문자로 마운트됩니다: C:\, D:\ 등. Linux에서 드라이브 문자는 어떻게 작동할까요? 없습니다!

Linux에서는 루트 폴더라고 불리는 폴더가 있습니다. 이 폴더는 파일 시스템의 루트 또는 /이라고도 하는 폴더에 위치합니다. 슬래시는 시스템의 다른 모든 파일 앞에 오는 첫 번째 슬래시입니다. 이 슬래시는 기본 C:\와 같은 것이지만, 다른 드라이브 문자가 C:\의 하위 폴더로만 존재하는 경우에만 해당합니다.

루트 폴더에는 핵심 시스템 파일이 있습니다. 기타 장치를 포함한 모든 것은 이 중앙 폴더의 하위 폴더입니다.

리눅스는 폴더와 파일 시스템 간의 경계를 흐리게 합니다. 리눅스 디렉토리 /home는 윈도우의 C:\Users 폴더와 유사한 모든 사용자 “프로필”의 루트입니다. 이 경우, /home은 디렉토리입니다. 하지만 리눅스에서 “디렉토리”는 실제로 디렉토리일 필요가 없습니다. 스토리지 파티션 또는 별도의 하드 디스크일 수도 있습니다. 이 개념은 Windows 마운트 포인트와 유사합니다.

이 문서에서 루트 폴더에 대해 자세히 알아볼 수 있습니다.

사용자와 홈 폴더

OpenSUSE를 사용하고 있다면 아래에 표시된 것과 같이 데스크톱에 Home 폴더가 있는 것을 알 수 있습니다. 이 폴더는 리눅스 버전의 C:\users\<username> 폴더 또는 “프로필”입니다. 리눅스의 “사용자” 폴더는 기본적으로 설치 디스크의 /home 아래에 있습니다.

아래의 예에서 사용자는 homelab이고 “프로필”은 /home/homelab에 위치합니다.

Your own User (Home) Folder

리눅스(및 윈도우)에서 홈 폴더(또는 윈도우의 사용자 프로필)는 물결표(~)로 약칭됩니다. "~/Documents/blah.txt와 같은 것을 보면 실제로는 /home/<username>/Documents/blah.txt 파일을 참조하는 것입니다.

리눅스에서 대소문자 구분은 중요합니다.

리눅스에서는 대소문자를 구분합니다. 이 개념은 윈도우와는 완전히 반대로 거의 대소문자를 구분하지 않습니다.

예를 들어, /home/homelab이라는 디렉토리가 있다면, 완전히 다른 디렉토리는 /home/Homelab이 될 수 있습니다. 이 개념은 명령어에도 적용됩니다. cd /home/homelabCD /home/homelab(실패해야 함)는 서로 다릅니다.

윈도우 사용자로서 이 개념은 언젠가는 당신을 헷갈리게 할 것입니다. 대소문자를 신중하게 다루세요! 아래에 두 개의 별개의 폴더 예시를 볼 수 있습니다. 두 폴더의 유일한 차이점은 대소문자입니다. 윈도우 환경에서는 이런 일이 불가능합니다.

Being able to create two separate folders just by capitalization is not possible on Windows

사용자 계정

윈도우와 마찬가지로 리눅스에도 사용자 계정 개념이 있지만 약간 다릅니다. 먼저 리눅스 사용자 계정을 익숙한 윈도우 사용자 계정으로 생각해 보세요.

윈도우에는 Administrator, 숨겨진 SYSTEM 계정, Guest 등 몇 가지 내장된 사용자 계정이 있습니다. 윈도우에는 Administrators, Guests 등 다양한 내장된 보안 그룹도 있습니다.

로컬 사용자 및 그룹 관리 MMC를 실행하여 모든 윈도우 사용자 및 그룹을 볼 수 있습니다. 이를 위해 lusrmgr.msc MMC 스냅인을 실행하세요.

The Windows Local User Control Panel

윈도우 SID

유저와 그룹을 고유하게 식별하기 위해 윈도우에서는 SID라는 것을 사용합니다. 윈도우에서는 아래의 몇 가지 PowerShell 명령어를 실행하여 각 사용자와 그룹의 SID를 찾을 수 있습니다.

Get-LocalUser | select name, sid
Get-LocalGroup | select name,sid
The list of users and groups on a Windows computer

각 Windows 그룹 SID는 모든 Windows 컴퓨터에서 동일합니다. 내장된 사용자 SID은 Windows에서 고유합니다. 위 스크린샷에서 보이는 Administrator SID는 각 Windows 컴퓨터마다 다릅니다. Windows에서 생성되는 모든 사용자 또는 그룹은 고유합니다. 아래에 test 그룹을 주목하세요. Windows 컴퓨터에서 test 그룹을 생성하면 SID가 다를 것입니다.

A new “test” group at the top has a unique SID

Linux 사용자 ID

반면, Linux는 사용자와 그룹을 유사하게 다룹니다. 하지만 Linux에서는 SIDs가 아닌 사용자 ID(UID)와 그룹 ID(GID)를 사용합니다. 또한 Windows와 달리 사용자와 그룹은 컴퓨터마다 고유하지만 모든 컴퓨터에서는 고유하지 않습니다. 따라서 컴퓨터 A에서의 UID가 동일한 UID일지라도 컴퓨터 B에서는 다른 사용자일 수 있습니다.

UID와 GID는 간단한 숫자 규칙을 따릅니다. 각 UID와 GID는 0에서 시작하여 1부터 999까지는 내부 시스템 계정을 위한 것이며 1000 이상은 사용자 정의 계정을 위한 것입니다.

내장된 root 사용자의 UID는 항상 0이고 GID는 0입니다. 또한 Windows의 숨겨진 SYSTEM 계정과 마찬가지로 이 root 계정은 일반적으로 (Linux 배포판에 따라 다름) 로그인이 제한됩니다.

내장된 root 사용자는 Windows의 SYSTEM 및 Administrator 내장 계정과 유사하며, 일종의 결합된 형태입니다. Windows에서 Administrator로 작업하더라도, Windows를 완전히 파괴하는 것을 완전히 방지하는 일부 내장된 보안 기능이 여전히 있습니다.

반면에 root 사용자는 절대 권한을 갖고 있습니다. root 사용자로 의도적으로 들어가기 위해 (명령 줄에서 sudo su 명령을 사용하여) 전체 운영 체제를 삭제하려고 시도하면 root는 기꺼이 시스템이 종료될 때까지 그렇게 할 것입니다.

예를 들어, homelab라는 사용자를 생성했다고 가정해 봅시다. homelab의 UID는 1000 또는 homelab으로 참조할 수 있습니다. 사용자는 자동으로 내부 그룹 users의 멤버가 되며, 그룹 ID 100으로 참조할 수 있습니다. 아래와 같이 getent passwd 명령을 실행하여 이러한 매핑 목록을 찾을 수 있습니다:

running getent passwd inside the terminal

그룹에 대해 위에서와 동일한 정보를 찾으려면 getent group 명령을 사용할 수도 있습니다.

running getent group inside the terminal

Linux 파일 권한

Windows 세계에서 파일 시스템 권한은 재미 없는 일이 아닙니다. NTFS에서 권한을 설정하고 관리하는 것은 때로는 ACE, ACL, 상속, 전파 등으로 인해 악몽이 될 수 있습니다. 다행히도 Linux 파일 시스템 권한은 훨씬 간단합니다.

Linux에서는 파일에 할당할 수 있는 세 가지 유형의 권한 (읽기, 쓰기, 실행)과 세 가지 액세스 범주 (소유자, 그룹, 기타)가 있습니다.

  • 소유자는 파일/폴더를 소유하는 사용자입니다. 각 파일 또는 폴더에는 지정된 소유자가 있습니다.
  • 그룹은 파일/폴더를 소유하는 그룹입니다. 이는 소유자가 속한 그룹과 동일할 필요는 없습니다. 각 파일 또는 폴더는 하나의 그룹에만 속할 수 있습니다.
  • 기타는… 그냥 다른 사람들입니다. 소유 그룹에 속하지 않거나 지정된 소유자가 아닌 사람들입니다.

각 범주마다 모든 옵션을 허용하거나 거부할 수 있습니다. 예를 들어, 소유자에 대해 읽기, 쓰기, 실행 옵션을 부여하고, 그룹 및 다른 사람들에 대해 읽기/실행 옵션을 부여할 수 있습니다. 아래 스크린샷에서 확인할 수 있습니다. 이는 폴더의 소유자가 아닌 다른 사람들은 수정할 수 없다는 뜻입니다.

윈도우 탐색기와 마찬가지로 Ubuntu에서는 다음과 같은 방법으로 이 정보를 확인할 수 있습니다:

  1. 데스크톱에서 홈 폴더를 엽니다.
  2. 관련 파일/폴더로 이동합니다.
  3. 파일/폴더를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭합니다.
  4. 권한 탭을 클릭합니다.
  5. 고급 권한을 클릭합니다.

고급 권한 상자에 들어가면 해당 파일 또는 폴더에 할당된 모든 권한을 그래픽으로 확인할 수 있습니다.

Demonstration of the advanced permissions menu in OpenSUSE

아래는 고급 권한 테이블의 의미입니다.

How the file permissions look visually

파일 소유권

윈도우와 마찬가지로 각 파일과 폴더에는 소유자가 있습니다. Windows에서는 GUI나 takeown 명령을 통해 파일의 소유권을 가져올 수 있습니다. Linux에서는 명령행에서 chown <사용자>:<그룹> <파일/폴더>를 실행하여 소유권을 가져옵니다.

Windows와 마찬가지로 일반적으로 sudo를 사용하여 파일의 소유권을 변경하려면 관리자 권한이 필요합니다. sudo는 Linux에서 Windows의 사용자 계정 제어(UAC)와 동일한 역할을 합니다. 관리자 명령행 창을 열기 대신, 명령 앞에 sudo를 붙여 관리자 권한으로 실행합니다.

이 개념을 보여주기 위해 루트만이 소유한 폴더를 만들어 보겠습니다.

  1. 홈 폴더를 열고 ‘문서’로 이동하세요.
  2. 마우스 오른쪽 버튼을 클릭하고 ‘동작’에서 ‘터미널 여기에서 열기’를 선택하여 명령 프롬프트를 엽니다.다음을 실행하세요:
sudo mkdir owned-by-root
sudo chmod 700 owned-by-root
Creating a root only folder

이 폴더는 소유자에게만 읽기/쓰기/실행 권한이 있습니다. 관리자 권한으로 폴더를 만들었기 때문에 현재 소유자는 root입니다.

또한 권한을 변경하여 소유자만 액세스할 수 있도록 했습니다. 소유 그룹과 다른 사용자는 이 폴더에 액세스할 수 없습니다. 실제로 액세스할 수 없음을 나타내는 큰 잠금이 폴더에 표시되는 것을 알 수 있습니다.

아래에서 이 폴더를 소유할 수 있는 방법을 볼 수 있습니다.

  1. 동일한 폴더에서 다른 터미널을 열거나 이미 열려 있는 터미널을 사용하세요.
  2. sudo chown homelab:users ./owned-by-root을 실행하세요.
Demonstration of the change ownership command in OpenSUSE

이제 소유권을 가지고 있으므로 탐색기 GUI에서 파일 권한을 변경할 수도 있습니다. 속성 창을 사용하세요.

File permissions inside the explorer GUI

일반적으로 파일 권한을 변경하지 않고 소유권만 변경해야 합니다. Linux는 기본적으로 어떤 권한을 가져야 하는지 알고 있기 때문에 ‘chmod’을 사용하여 권한을 변경하면 심각한 문제가 발생할 수 있습니다.

파일 권한에 대한 숫자 표기법

Linux 문제 해결을 한 적이 있다면 온라인에서 사람들이 파일 권한을 숫자 체계를 사용하여 설명하는 것을 본 적이 있을 것입니다. 아래 스크린샷에서 강조된 부분에서 확인할 수 있습니다.

The permissions menu, as viewed remotely from a Windows machine using WinSCP

리눅스는 이 접근 시스템에 대해 0600과 같은 숫자를 사용하는 약식 표기법을 사용합니다. 첫 번째 숫자는 추가할 수 있는 일부 특별한 속성을 위한 것이며, 일반적으로 사람들은 무시합니다. 사실, 대부분의 사람들은 표기법에 대해 세 자릿수만 사용하고 네 번째 자릿수를 무시합니다.

파일 권한에 대한 숫자 표기법에 대한 자세한 정보는 이 기사를 확인해주세요.

마무리

이것으로 ‘A Windows Guy in a Linux World’ 블로그 시리즈의 제2부가 마무리되었습니다! 제3부를 기대해주세요!

Source:
https://adamtheautomator.com/linux-file-permissions/