hyperskill - Working with file modes and permissions 영어 원문
유닉스 내부에서,
파일들은 여러 권한들과 유저들에 대한 제한이 있는 세팅에, 접근권한을 가지고 있다는 것을 알 겁니다.
이번 주제에서 우리는 유닉스 터미널에서 명령어를 사용하여 접근 세팅을 변경하는 방법을 배울 겁니다.
밑에서 이를 어떻게 수행하는지 알아 내 봅시다.
View file permissions - 파일 권한 보기
가장 먼저, 당신이 이미 가지고 있는 파일 권한이 무엇인지를 아는 것이 좋습니다.
이를 확인하기 위해서, 당신은 ls
명령어와 이의 옵션 -l
을 사용할 수 있습니다 : ls -l
터미널에 ls -l <filename>
을 입력하면, 이와 같은 것을 얻을 수 있을 겁니다 :
$ ls -l file.txt
-rw-r--r-- 1 admin admin 0 march 12 16:22 file.txt
여기서 당신은 파일의 주인이 누구인지, 생성일자, 그리고 권한설정 -rw-r--r--
을 볼 수 있습니다.
또한, 당신은 stat
명령어를 사용할 수 있습니다.
이 명령어는 파일에 대한 정보를 표시하며,
파일 시스템 명령어인 ls -l
보다 더 자세하게 표시합니다.
또 다른 차이점은 파일 권한이 8진수 숫자로서 표시된다는 겁니다.
24-08-05 기준,
stat
명령어는 밑과 같이 자세히 표현되지 않는다.
따라서,stat -x
로 추가적인 옵션을 붙이면 밑과 동일하게 표현된다.
$ stat file.txt
## macOS 의 경우, stat -x file.txt 를 입력
## 실제 출력
File: "file.txt"
Size: 33 FileType: Regular File
Mode: (0644/-rw-r--r--) Uid: ( 501/gongdamhyeong) Gid: ( 20/ staff)
Device: 1,15 Inode: 76257059 Links: 1
Access: Mon Aug 5 22:36:55 2024
Modify: Mon Aug 5 22:36:53 2024
Change: Mon Aug 5 22:36:53 2024
Birth: Mon Aug 5 22:36:53 2024
이 결과물을 짧게 만들며, 오로지 접근(access) 정보만 보기 위해서 grep
명령어를 사용할 수 있습니다.
$ stat -x file.txt | grep Access
## macOS 기준으로 실제 결과물
Access: Mon Aug 5 22:36:55 2024
이와 동일한 방식으로, 디렉토리에 대한 권한을 찾아 낼 수 있습니다.
따라서, 이제 당신은 파일 권한을 볼 수 있습니다.
그리고 이제 권한을 어떻게 변경하는지 알아내 봅시다.
Change file owner - 파일 소유자 변경
만약 당신이 파일의 소유자, 혹은 그룹을 변경하고 싶다면, chown
명령어를 사용 할 수 있습니다.
이 구문은 다음과 같습니다 : chown user <option> /path/to/file
.
유저 영역 내부에서는, 파일을 위임할 사용자를 지정할 필요가 있습니다.
또한 콜론(,
) 으로 분리되어 그룹을 지정할 수도 있는데,
예를 들어, user: group
입니다.
그리고 나서, 유저만 변화하는 것이 아니라, 전체 그룹 또한 변경됩니다.
예를 들어, save_the_world.txt
파일을 가지고,
superman
유저에게 이를 전송하고, 또한 그룹도 변경해 보겠습니다.
$ chown superman:marvel ./save_the_world.txt
만약 당신이 전체적인 디렉토리의 소유자를 변경하고 싶다면,
같은 명령어를 사용할 수 있으며, 그저 파일의 경로 대신에 폴더의 경로를 작성하면 됩니다.
경로는 절대 경로 혹은 위의 예제와 같이 상대 경로로 지정 될 수 있습니다.
만약 당신이 이러한 변경사항을 이 디렉토리에만 적용하지 않고, 모든 하위 디렉토리에도 적용하고 싶다면,
-R
옵션을 추가하면 됩니다 :
$ chown -R superman:marvel ./save_the_world.txt
좋습니다, 이제 당신은 소유자와 그룹을 변경 할 줄 압니다.
다음 단계는 "파일 모드 변경하기" 에 대해서 배우는 겁니다.
(접근 권한들을 표현하기 위한 또 다른 방식)
Change file mode - 파일 모드 변경하기
파일 모드를 변경하기 위해서 chmod
명령어를 사용 할 수 있습니다.
이 명령어로, 소유자, 그룹, 그리고 나머지(다른 말로 전 세계)에 대한,
읽기, 작성, 실행의 권한을 설정 할 수 있습니다.
명령어의 구문은 이와 같습니다 :
$ chmod <permission> <filename>
이 명령어를 사용하기 위한 두 가지 모드가 있습니다 :
앱솔루트 모드(absolute) , 심볼릭 모드(symbolic)
위 두 모드는 권한 설정을 정의하기 위해서, 8진수 숫자 혹은 문자 를 사용합니다.
앱솔루트 모드를 첫 번째로, 몇 가지 예제들을 공부 해 봅시다.
우리는 modify_it_now.exe
라는 파일을 가지고 있으며,
이에 대한 권한은 -r--r--r--
or 8진수 444
입니다.
임무는 모드를 변경하여, 파일을 소유자가 읽고, 작성하고, 실행할 수 있게 하는 겁니다.
그룹은 읽기, 실행 이 가능해야 하며, 나머지는 오로지 실행만 가능해야 합니다.
Result : -rwxr-x--x
or 751
앱솔루트 모드는 이와 같이 보입니다 : 751
.
따라서, 터미널에 이와 같이 입력 할 수 있습니다 :
$ chmod 751 modify_it_now.exe
이제, 심볼릭 모드 로 움직여 봅시다.
Symbolic mode - 심볼릭 모드
심볼릭 모드로서, 특정 영역의 소유자에 대한 권한들만 조정 할 수 있습니다.(owner
, group
, other
)
이 모드는 유닉스 파일 권한을 조정하기 위해 수학적인 심볼들을 포함합니다 :
+
: 파일 혹은 디렉토리에 권한을 추가-
: 권한 제거=
: 권한을 설정하거나, 이미 설정된 권한 재정의
또한, 유저 표현을 아는 것이 중요합니다 :
u
: 유저/소유자g
: 그룹o
: 나머지a
: 모두
따라서 구문은 이와 같습니다 : chmod <유저 영역 표시> <연산> <권한>
따라서, 만약 우리가 파일 권한들을 조정하고 싶다면, 이렇게 입력하면 됩니다 : (권할 설정 혹은 재정의=
의 상황)
# 유저 권한 수정
$ chmod u=rwx modify_if_now.exe
# 그룹 권한 수정
$ chmod g=r+x modify_if_now.exe
# 나머지 권한 수정
$ chmod o=r_w modify_if_now.exe
여기서 우리는 권한들을 재정의하여,
유저 는 읽기, 작성, 실행,
그룹은 읽기, 실행,
나머지는 읽기, 작성
이 가능하게 했습니다.
예를들어 만약 우리가 모두에 대해 같은 권한들을 설정하여,
파일을 읽고, 작성하고, 실행하고 싶다면, 이를 입력해야 합니다 :
$ chmod a=rwx modify_it_now.exe
그리고 만약에, 나머지 영역의 유저들만 파일을 읽게 하고 싶다면,
+
를 사용하면 됩니다 :
chmod o+r modify_it_now.exe
이 방식으로 우리는 전체의 권한들을 재정의하지 않고, 구체적인 권한을 변경 할 수 있습니다.
위의 예제는 우리가 나머지에 대한 권한을 기존을 변경하지 않고,
읽기에 대한 권한을 추가했습니다. : o+r
--> 나머지 에 읽기 권한을 추가한다.
마지막으로, 만약 권한이 제거되어야 한다면, 우리는 -
연산자를 사용해야 합니다.
Conclusion - 결론
위의 내용을 요약하여,
ls -l
orstat
명령어 둘 다 파일 권한에 대한 정보를 줍니다.chown
명령어를 사용하여 당신은 파일의 소유자와 그룹을 변경 할 수 있습니다.chmod
명령어와 함께 파일의 모드를 변경 할 수 있습니다.- 파일의 모드를 변경하는 두 가지 방식을 기억하세요 : 앱솔루트, 심볼릭
words to remember
delegate : 대리자, 대표, 특파하다, 파견하다, 위임하다
involves : 포함하다
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Docker' 카테고리의 다른 글
NoSQL - NoSQL 데이터베이스 (1) | 2024.08.08 |
---|---|
What is an HTTP server - HTTP 서버란? (0) | 2024.08.07 |
File modes and permissions - 파일 모드와 권한 (0) | 2024.08.04 |
Getting data from net - wget, curl 사용법 (0) | 2024.08.03 |
Variables and aliases - 변수와 별명(별칭) (0) | 2024.08.02 |