안녕하세요. 이번 포스팅에서는 리눅스 OS에서 퍼미션(Permission)과 소유권을 확인하고, 변경하는 방법에 대하여 포스팅하도록 하겠습니다. 우선 리눅스(Linux)는 핀란드의 대학생 리누스 베네딕트 토르발스(Linus Benedict Torvalds)가 만든 OS로, UNIX 시스템과 비슷하게 만든 '오픈 소스' 운영체제입니다. 그리고 멀티유저, 멀티 프로세스가 기본으로 탑재되어 있는 OS이죠 멀티유저란 Windows는 한대의 컴퓨터에 한 사람이 앉아서 사용을 하는 반면에, 리눅스에 대한 설명은 여기까지 하도록 하고 본론으로 들어가기 전에 FannPo 님이 작성하신 포스팅에 상세하게 설명되어있으니 궁금하신 분들은 참조하시면 좋을 것 같아요 [Linux] 리눅스의 구조? / 다중 사용자 / 다중작업 서론이 길었네요. 이제 본론으로 들어가도록 하겠습니다. 우선 Permission 확인하기 위해서는 목록을 띄워야겠죠? 자료 출력 명령어 ls의 옵션 및 사용법
디렉토리/파일을 편의상 "자료"라고 표현함 이 중에서 오늘은 1, 3, 4번에 대해서 설명을 드릴게요. 1. 자료의 속성을 읽는 방법 drwxr-xr-x 2 root root 4096 Apr 2 13:31 bin/ 여기서 drwxr-xr-x를 속성별로 보면 d / rwx / r-x / r-x로 볼 수 있는데요 [Shape][User][Group][Others] 파일의 종류(Shape)에 대한 속성은 아래와 같은데요 자주 보이는 것은 d , - , l 정도가 되겠습니다. 다음으로 rwx / r-x / r-x 은 파일에 대한 Permission(권한)을 표시하는 건데요 차례대로 파일의 소유자(User), 파일의 소유그룹(Group), 아무나(Others)의 Permission(권한)을 나타내는 건데요 아래와 같이 적용된다고 보시면 돼요 그런데 'rwx'니 'r-x'니 뭐가 뭔지 잘 모르시겠죠? 차례대로 Read, Write, eXecute에서 한 글자씩 가져온 건데 말 그대로 '읽기', '쓰기', '실행'을 뜻 합니다
숫자 값을 왜 넣었냐면 가끔 "퍼미션을 '777' or '755' or '644'로 주세요"라는 말을 보실 수가 있는데 이때 당황하시지 말라고 미리 설명을 해놓았답니다 자세히 설명을 드리자면 r, w, x 세 가지 권한은 아래와 같이 고유한 숫자 값을 가지는데요
컴퓨터는 모든 처리를 '0' 과 '1' 로만 처리한다는 것을 생각해보면 (자세한 내용은 링크 참조) rwx를 더하게 되면 r(4) + w(2) + x(1) = 7 (2진수 = 111) 이 되죠? r-x는 r(4) + x(1) = 5 (2진수 = 101) 이 되고요 이제 감이 오셨나요? 이 설명을 토대로 제가 처음 보여드린 drwxr-xr-x 2 root root 4096 Apr 2 13:31 bin/ bin/ 은 디렉토리 이면서 755의 퍼미션 값이 주어져 있고, 소유자는 root, 소유 그룹은 root 로 해석이 되겠네요 2. 자료의 Permission(권한)을 설정하는 방법 (chmod 명령어) 앞서 설명드린 내용을 기준으로 파일, 디렉토리의 권한을 변경하기 위해서는 chmod명령어를 이용합니다. chmod 명령어는 다양한 방식으로 권한 변경이 가능한데 조건이 있습니다. 바로 로그인된 계정이 어떤 것인지가 중요합니다. 서론에서 리눅스는 멀티유저를 지원한다고 말씀드렸죠? 한마디로 1대의 리눅스 PC에 적게는 여러 명에서 많게는 수십, 수백 명이 접근해서 사용을 할 수 있는데요 만약 A유저가 만들어둔 파일의 권한을 B유저가 마음대로 바꿀 수 있다면? 보안이라는 개념 자체가 없는 거죠 그래서 리눅스에서 chmod 명령어는 로그인한 계정이 소유권을 가지고 있는 파일, 디렉토리에 대해서만 권한 변경이 가능하도록 되어있습니다. 물론 예외는 있는데요 바로 superuser인 root 사용자입니다. 이 부분에 대해서는 차후에 자세히 포스팅하도록 할게요 1) 각 소유자별 권한 변경하기
위와 같이 u(유저), g(그룹), o(아무나), a(전부)로 대상을 지정한 후 더하기(+) 혹은 빼기(-)를 사용하여 원하는 권한을 추가/제거할 수 있습니다. 물론 권한 여러 개를 한 번에 지정하는 것도 가능한데요 예를 들어
이라는 명령어를 실행하면 permission777 파일의 권한은 777(rwxrwxrwx)이 되게 되는 것이죠 2) 숫자로 한 번에 권한 변경하기
이렇게 숫자로 권한을 부여하면 비교적 간단하게 권한 변경이 가능하니까, 각 숫자가 의미하는 뜻이 무엇인지를 이해하고 계시면 아주 편하게 사용하실 수 있어요 3. 자료의 Ownership(소유)을 설정하는 방법 (chown 명령어 / root 권한 필요) 앞서 설명드린 바와 같이 리눅스는 멀티유저! 가 사용을 하는데, 가끔은 파일의 소유권을 변경해야 할 때가 있죠 만약 회사에서 A직원이 담당하던 업무가 있었는데 만약 퇴사를 한다면? B직원이 담당을 하게 되겠죠? 이것도 문제가 될 수 있기 때문에, 소유권을 변경하는 chown, chgrp명령어는 root 권한이 있어야지만 사용할 수 있어요
1) chown 명령어는 사용자 변경 / 사용자, 그룹 동시 변경 2가지 기능이 있고,
2) chgrp 명령어는 그룹만 변경할 수 있어요
그런데 만약 파일이 여러 개라면? 하나하나 변경해주면 되죠~ 이런 어처구니없는 생각을 하는 사람은 없겠죠 파일이 1~2개가 아니라 수천 개가 있어도 그걸 다......? 3) 소유권 한 번에 변경하기 (-R)
위와 같이 chown [사용자].[그룹] dir 명령어를 실행하게 되면 dir디렉토리 자체의 소유권은 변경되었지만, dir 디렉토리 하위에 있는 파일 10개의 소유권은 그대로 인 것을 확인하실 수 있는데요 이걸 한 번에 변경하기 위해서는 -R 옵션을 추가해주면 됩니다.
위와 같이 -R 옵션 하나만 추가하였는데 dir디렉토리는 물론 하위의 모든 자료의 소유권까지 한방에 변경된 것을 확인하실 수 있습니다. 이를 이용해서 앞서 설명드린 Permission(권한)을 설정하는 chmod명령어에도 적용을 하게 되면
아주 손쉽게 변경이 가능합니다. 이상으로 리눅스 OS의 Permission과 소유권에 대한 포스팅을 마치도록 하겠습니다. |