macOS, 특히 명령줄에서는 어떤 상황에서 어떤 항목을 가지고 어떤 작업을 할 수 있도록 하는 권한이라는 개념에 의해 관리됩니다. 여기서는 사용자와 그룹의 파일 사용 권한에 대해 소개하도록 합니다.
또한 sudo 명령을 사용하여 일시적으로 루트 사용자의 힘을 가질 수 있는 방법도 설명합니다.
권한 기본 사항
본 연재 앞부분에서 파일을 나열하는 명령 ls -l을 사용하면 개별 파일과 디렉터리 권한, 소유자와 그룹을 볼 수 있다고 설명했습니다. 맥에서 사용하는 모든 파일에는 이런 속성이 있으며 각 항목에 어떻게 영향을 미치는지 이해해야 합니다.
권한을 읽거나 변경하는 방법을 설명하기 전에 먼저 기본 옵션을 살펴볼텐데요. 간단히 말하면 권한은 세 가지 유형의 사용자(파일 소유자, 그룹, 모든 사람)가 세 가지 활동(읽기, 쓰기, 실행)을 할 수 있습니다. 세 가지 사용자 X 세 가지 활동 = 즉 사용자 권한은 총 9가지나 있으며 파일이나 폴더에 개별적으로 지정할 수 있습니다.
읽기, 쓰기 및 실행
파일 읽기 권한이 있는 사람은 파일을 열고 내용을 볼 수 있습니다. 쓰기 권한이 있는 사람은 수정하거나 삭제할 수 있으며 실행 권한이 있다면 프로그램이나 스크립트로 실행할 수 있습니다. 명령줄에서 읽기 권한은 r, 쓰기는 w, 실행은 x를 써서 표기합니다.
사용자, 그룹 및 모든 사람
모든 파일과 폴더는 다음에 대해 읽기 및 쓰기, 실행 권한을 지정합니다.
- 사용자: 파일 권한 관점에서 보면 사용자는 파일, 또는 디렉터리 소유자를 의미하는데 꼭 사람을 지칭하는 것은 아니며 _screensaver처럼 시스템 프로세스일 수도 있습니다.
- 그룹: 각 파일과 디렉터리 역시 연결된 그룹이 있습니다. macOS에는 admin(관리자 권한이 있는 모든 사용자), staff(관리자 권한이 없는 표준 사용자), wheel(일반적으로 루트 사용자만 포함)과 같은 몇 가지 그룹이 포함됩니다.
- 그밖의 모든 사람: 소유자도 아니며 파일 그룹에도 없는 모든 사용자가 기타 범주로 묶입니다.
읽기 권한과 소유자, 그룹
이 모든 것들이 어떻게 작동하는지 예를 들어보겠습니다. ls -l를 입력하여 특정 디렉터리에서 다음 두 항목을 찾는다고 가정합니다.
drwxr--r-- 15 gorae admin 580 12 7 11:05 apple
-rw-r--r-- 2 root wheel 1024 12 22 10:24 banana
본 내용의 목적상 세 부분만 살펴보겠습니다. 처음 문자 그룹(drwxr--r--)은 권한을 구성하며, 중간(gorae admin)은 각각 사용자와 그룹입니다.
권한 문자열의 첫 번째 문자는 해당 항목이 디렉터리인지 일반 파일인지 여부를 알려줍니다. (drwxr--r--)는 d로 시작하므로 디렉터리입니다. 두 번째 줄의 banana는 하이픈(-)으로 시작하므로 디렉터리가 아닙니다. 파일이란 말이죠.
세 가지 권한과 세 가지 세트
첫 글자 바로 뒤 나머지 9가지 문자는 사용자(처음 세 글자), 그룹(중간 세 글자), 기타(마지막 세 글자)를 표시하며 문자 세트에서 순서는 r(읽기), w(쓰기), x(실행)로 늘 동일합니다.
directory user group others ← 사용자
d rwx rwx rwx ← 모든 속성이 있는 디렉터리
- --- --- --- ← 모든 속성이 꺼진 파일
각 유형의 사용자에 대해 권한을 설정하거나 해제할 수 있습니다. 켜져 있으면 해당 문자(r, w, x)가 표시되고 꺼져 있으면 하이픈(-)이 표시됩니다. 소유자 권한이 rwx이면 소유자는 항목을 읽고, 쓰고, 실행할 수 있다는 것을 의미하죠. 만약 r--인 경우 소유자는 읽기 권한만 가지게 됩니다.
소유자와 그룹
파일 권한과 숫자(이 항목에 대한 링크, 개념이 다소 포괄적이라 설명은 생략합니다.), 그리고 이어서 파일 소유자와 그룹이 표시됩니다. 예를 들어 여기서
drwxr--r-- 15 gorae admin 580 12 7 11:05 apple
파일 소유자는 gorae이고 그룹은 admin(관리자)입니다.
+ 및 @
때때로 파일 권한 끝에 +나 @와 같은 문자가 붙을 수 있습니다.
drwx------@ 5 gorae staff 160 1 8 14:00 Desktop
drwx------+ 7 gorae staff 224 1 7 20:26 Documents
+는 항목에 ACL(접근 제어 목록, access control list)이 포함되어 있음을 의미하는데요. 사용자, 그룹 및 다른 사람이 단순히 읽고 쓰고 실행하는 것보다 권한을 더욱 세분화하여 적용하는 것을 말합니다. 파일, 디렉터리 ACL 설정을 보려면 ls -le 명령을 사용하십시오.
@은 항목에 확장된 속성이 포함되어 있음을 의미합니다. 파일 내용을 넘어서는 추가 메타 데이터는 게이트 키퍼와 같은 특정 macOS 기능에 빈번하게 사용됩니다. 파일, 디렉터리가 포함하는 확장 속성 유형을 보려면 ls -l@을 사용하세요.
ACL과 확장 속성을 이해하고 사용하려면 깊게 들어가야 하고 본 가이드가 다루고자 하는 범위를 벗어나므로 이 정도만 이해하도록 합니다.
여러분의 권한은?
저장하거나 복사, 다운로드 등 어떤 형태로든 파일을 만든 사람은 그 파일의 소유자가 됩니다. 게다가 macOS의 모든 사용자는 홈 폴더에 있는 항목에 대해 기본적으로 읽기 및 쓰기 권한(더불어 디렉터리일 경우 실행 권한)을 가지고 있으며 응용 프로그램 폴더와 같은 공유 항목을 읽고 실행할 수 있습니다. 하지만 다른 사용자가 소유한 파일을 읽거나 작성한 내용을 볼 수 없습니다.
항목 권한 변경
항목 권한을 변경하려면 chmod(change mode) 명령을 사용합니다. chmod는 유닉스에서 항목 권한을 설명하는데 이해하기 쉬운 심볼릭 모드와 더욱 강력한 절대 모드가 있습니다.
심볼릭 모드
chmod로 권한을 변경하려면 사용자, 그룹 및 기타(각각 약어 u, g, o를 사용), 권한을 추가하기 위해 + 또는 -, 그리고 r, w, x 중 하나 이상을 표기하고 파일과 디렉터리를 입력합니다. 예를 들어 myfile 파일에 대한 그룹의 쓰기 권한을 부여하려면 다음과 같이 입력하세요.
chmod g+w myfile
다른 사람의 실행 권한을 제거하려면 다음을 입력합니다.
chmod o-x myfile
사용자 및 그룹, 기타를 한 번에 사용하여 여러 사용자에게 권한을 부여할 수 있습니다.
chmod ugo+r myfile
chmod는 여러분이 소유자이거나 해당 항목 그룹에 있으면서 쓰기 권한이 있을 때만 사용할 수 있습니다. 이에 해당하지 않는 모든 경우에는 sudo 명령을 사용하여 루트 사용자 권한을 잠시 얻어야 합니다.
절대 모드
다른 사용자에게 쓰기 권한을 추가하면서 동시에 실행 권한을 제거하는 것과 같이 복잡한 권한 변경을 한 번에 하려면 chmod의 절대 모드를 사용합니다. 심볼릭 모드보다는 다소 고급이라 할 수 있지만, 명령줄을 수시로 사용하면 반드시 접하게 되므로 최소한 어떻게 작동하는지 정도는 짚고 넘어가야 합니다.
절대 모드에서 권한은 133, 또는 777처럼 연속된 3자리 숫자로 표시합니다. 세 숫자 중 첫 번째는 사용자를, 두 번째는 그룹을, 세 번째는 다른 사용자를 의미하며 이를 사용하기 위해서는 약간의 산수 계산이 필요합니다.
기본 값은 다음과 같습니다. 4: 읽기, 2: 쓰기, 1: 실행
권한을 결합하려면 숫자를 추가합니다. 예를 들어 6은 4+2로 읽기와 쓰기를, 3은 2+1로 쓰기와 실행을, 7은 4+3+1로 읽고 쓰고 실행하는 것을 의미합니다.그래서 이 명령을 사용해서 파일 권한을 변경하려면 다음과 같이 입력합니다.
chmod 755 myfile
이는 사용자가 읽고 쓰고 실행할 수 있도록 하는 동시에 그룹 및 기타 사용자는 읽기와 실행 권한만 부여함을 의미합니다. 즉, 파일 권한은 다음과 같습니다.
-rwxr-xr-x
파일 소유자를 변경하려면 chown(change owner) 명령을 사용합니다. 이때 인수는 두 개 필요한데요. 새로운 소유자와 파일 이름입니다. myfile 소유자를 gorae로 변경하려면 다음과 같이 입력합니다.
chown gorae myfile
루트 사용자로 작업하기
macOS도 마찬가지지만, 유닉스와 모든 파생 운영체제는 보안 조치 일환으로 운영체제를 구성하는 파일을 포함하여 사용자가 속하지 않는 파일을 보거나 변경하지 못하도록 합니다.
하지만 특정 상황에서는 사용자에게 소유권이 없을지라도 파일이나 폴더를 변경하거나 적법하게 명령을 내릴 수 있어야 하는데요.
모든 macOS에는 root라 불리는 매우 특별하고 숨겨진 계정이 존재하는데 이 계정은 거의 무제한적인 막강한 힘을 가진 사용자입니다. 그러나 루트 계정은 기본적으로 비활성화되어 있습니다. 그러면 우리가 맥의 주인인데 우리 마음대로 권한을 가질 수는 없는 걸까요? 다행스럽게도 관리자 권한을 가지고 있는 모든 사용자는 일시적으로 루트 사용자의 기능과 권한을 얻을 수 있습니다. 루트 계정이 없어도 잠시 활성화 시킬 수 있다는 말이죠.
sudo(superuser do) 명령을 사용하여 이를 수행합니다.
macOS El Capitan 이전에는 sudo를 사용하거나 루트 사용자로 로그인하여 사실상 맥에서 모든 것을 바꿀 수 있었습니다. 그러나 그 이후 SIP(System Integrity Protection, 시스템 무결성 보호)라 불리는 보안 기능을 도입되면서 기본 앱을 포함한 몇몇 중요한 파일과 디렉터리를 어떤 식으로든 변경하지 못하게 했습니다.
여러분이 인터넷에서 본 명령을 복사해서 터미널에 붙여넣어도 동작하지 않았다면 거의 대부분 SIP에 막혔기 때문이죠. macOS가 판올림 될수록 보안은 더욱 강력해지는 방향으로 진화했습니다. macOS Catalina에서는 운영체제의 핵심 구성 요소가 있는 시스템 볼륨이 읽기 전용이 되어 수정 불가능하게 바뀌었습니다.
sudo 사용
관리자 권한은 sudo를 사용할 수 있습니다. 맥에 사용자 계정이 하나만 있으면 자동으로 관리자 계정이 되지요. 본인 계정인 관리자인지 아닌지 잘 모르면 시스템 환경설정 > 사용자 및 그룹으로 이동하여 현재 사용자 권한을 확인하세요.
관리자로서 루트 사용자 명령을 수행하려면 다음과 같이 sudo를 사용하십시오.
sudo 사용하려는 명령
sudo 명령을 입력하고 return을 누르면 이어서 암호를 입력하라고 표시됩니다. 로그인 암호를 입력하고 한 번 더 return을 눌러 명령을 실행합니다.
예를 들어 파일 소유자를 다음과 같이 변경하려고 합니다.
chown gorae myfile
하지만 다음과 같은 메시지를 출력할 수 있는데요.
chown: myfile: Operation not permitted
이럴 땐 다음과 같이 sudo 명령을 하면 됩니다.
sudo chown gorae myfile
'macOS 터미널 테크닉' 카테고리의 다른 글
macOS 터미널_명령줄 응용하기_09 (0) | 2022.07.20 |
---|---|
macOS 터미널_명령줄 응용하기_08 (0) | 2022.07.14 |
macOS 터미널_명령줄, 그래픽 인터페이스로 가져오기_06 (0) | 2022.07.06 |
macOS 터미널_파일, 디렉터리 작업_05 (0) | 2022.07.04 |
macOS 터미널_둘러보기_04 (1) | 2022.06.30 |