메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

FreeBSD에서 ACL 사용하기(1)

한빛미디어

|

2005-10-19

|

by HANBIT

10,987

저자: Dru Lavigne / 한동훈 역
원문: http://www.onlamp.com/pub/a/bsd/2005/09/22/FreeBSD_Basics.html

5년전에 “유닉스 권한 관리의 이해”라는 글을 연재했었다. 그 때 이후로 FreeBSD는 ACL(Access Control List)를 제공하게 되었다.

ACL은 BSD에서 TrustedBSD 프로젝트의 일부가 되었다. 이름에서 알 수 있는 것처럼 ACL은 사용자에게 권한에 대해 보다 정교한 접근 제어(access control)을 제공한다.

왜 ACL을 사용하는가?

ACL은 읽기(r), 쓰기(w), 실행(x)으로 구분되는 표준 유닉스 권한을 변경하지 않으면서 이러한 권한 적용에 대한 보다 나은 제어를 제공한다. 보통 사용자가 시스템의 임시 디렉터리에 test 파일을 생성하는 간단한 예제를 살펴보자.

% touch /tmp/test
% ls -l /tmp/test
-rw-r--r-- 1 dru dru 0 Jul 26 15:43 /tmp/test

모든 사용자가 쓰기 권한을 갖고 있고, 권한을 테스트하기 좋은 장소로 /tmp 디렉터리를 선택했다. /tmp 디렉터리는 관리자가 어떻게 설정했느냐에 따라 파일이 삭제되기 때문에 이곳에 중요한 파일을 보관해서는 안된다.

이 예제에서 파일 작성자 dru는 rw 권한을 갖고 있으며, 그룹 dru에 속한 사용자는 누구나 읽기(r) 권한을 가지며, 여기에 해당하지 않는 다른 사람들은 읽기(r) 권한을 가진다. FreeBSD에서는 사용자를 생성할 때 사용자 이름과 같은 이름의 그룹을 갖는다.

사용자 rob과 toby에게 /tmp/test 파일에 대해 쓰기 권한을 주고 싶다고 해보자. 권한이 나타내고 있는 것처럼 두 사람은 이 파일을 편집기에서 열 수는 있지만, 사용자 dru나 dru 그룹에 소속되지 않았기 때문에 변경한 것을 저장하는 것은 허용되지 않는다. 즉, 이들은 다른 사용자(other) 범주에 해당하기 때문에 읽기 권한만 가질 수 있다.

ACL을 사용하기 전에 이러한 문제에 대한 일반적인 해결방법은 그룹 권한을 수정하는 것이었다. 예를 들어, 시스템 관리자에게 dru 그룹에 rob과 toby를 추가해달라고 부탁하는 것이다. 그 다음에 chmod 명령을 사용해서 test 파일의 그룹 권한에 쓰기 권한을 주는 것이었다. 이 방법은 시스템에 있는 모든 사용자에게 쓰기 권한을 주는 것보다는 나은 해결책이다.

다른 방법은 시스템 관리자가 어떤 사용자가 어떤 파일에 접근이 필요한지 주의깊게 계획한 후에 그룹을 생성하고, 해당 사용자들을 그룹에 할당하는 방법이다. 사용자가 해당 그룹에 대한 권한이 있다면 그룹 소요권을 변경할 수 있게 생성된 파일에 대해 chgrp 명령을 사용할 수 있다.

그러나, 어떤 방법도 완벽한 것은 아니다. 먼저, 이러한 방법은 시스템 관리자가 개입해야 한다. 여러분이 원하는 것은 자신의 파일을 공유하는 것 뿐인데 이런 방법은 불편하다. 뿐만 아니라 다른 경우도 생각해보자. dru, rob, toby가 새로 생성된 작업그룹의 멤버가 되고, 이들 세 명은 파일을 생성한 사람이 누구인지에 관계없이 작업그룹에 쓰기 권한이 있는 모든 파일을 수정할 수 있다고 하자. dru라는 사용자가 rob에게 쓰기 권한을 주고, toby에게는 권한을 주지 않으려면 어떻게 해야할까?

이제 문제가 점점 복잡하게 들리지 않는가? 다행히도, 이런 문제를 해결하기 위해 ACL을 이용할 수 있다. 그룹들을 생성하거나 chgrp을 사용하기 위해 관리자에게 요청하지 않고도 dru는 공유할 파일들을 선택할 수 있고, rob에게 쓰기 권한을 줄 수 있고, toby에게는 다른 파일들에 대한 쓰기 권한을 지정할 수 있다.

이 글에서는 시스템 관리자가 FreeBSD에서 ACL을 사용하는 방법에 대해 설명할 것이다. 사용자가 파일에 대한 ACL을 손쉽게 관리할 수 있는 GUI 유틸리티를 사용할 것이며, ACL 정보를 갖고 있는 파일들을 백업하는 방법에 대해 설명할 것이다.

시스템 준비사항

독자가 FreeBSD 5.1 이상을 사용하고 있다면 커널과 UFS2 파일 시스템에 ACL 지원 기능이 이미 포함되어 있다.

5.1 이전 버전의 FreeBSD에서는 Daniel Harris의 “Instructions for compiling ACL support into FreeBSD”를 참고하기 바란다.

ACL을 사용할 파일 시스템을 선택하면 된다.

# df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 253678 35764 197620 15% /
devfs 1 1 0 100% /dev
/dev/ad0s1e 253678 22 233362 0% /tmp
/dev/ad0s1f 8077406 3045460 4385754 41% /usr
/dev/ad0s1d 253678 21048 212336 9% /var

내 시스템에서는 사용자에게만 ACL을 사용하고 싶기 때문에 /usr 파일 시스템만 설정을 했다.

FreeBSD handbook에서는 “ACL을 사용하기 위해 tunefs 명령을 사용하기”의 장점을 설명하고 있다. tunefs를 사용하는 방법의 단점은 시스템을 다운시켜야하고, 싱글 유저(single-user) 모드로 부팅해서 파일 시스템을 마운트 해제(unmount)해야 한다는 것이다. 사용자에게 영향이 적은 시간대를 선택하고, 시스템에 연결된 사용자가 없다고 생각되면 다음 절차를 따르면 된다.

# shutdown now
Enter full pathname of shell or RETURN for /bin/sh:

# /sbin/umount /usr
# /sbin/tunefs -a enable /dev/ad0s1f
tunefs: ACLs set
# /sbin/mount /usr

ACL을 사용하려는 디바이스 이름을 알기 위해 tunefs 명령에 –a 옵션을 사용한다.

다시 살펴보면 디바이스 이름을 볼 수 있다.

# /sbin/mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1e on /tmp (ufs, local, soft-updates)
/dev/ad0s1f on /usr (ufs, local, soft-updates, acls)
/dev/ad0s1d on /var (ufs, local, soft-updates)

시스템을 다시 다중사용자 모드로 전환한다.

# exit

이제 /usr에서 ACL을 사용할 수 있게 되었다.
TAG :
댓글 입력
자료실