소개
리눅스는 다중 사용자 운영체제입니다. 이는 여러 사용자가 동시에 동일한 리눅스 컴퓨터를 사용할 수 있음을 의미하며, 각 사용자는 자신만의 개인 공간과 파일을 가지는 동시에 일부 시스템 자원을 공유합니다. 이 실습에서는 시스템 관리와 보안의 핵심 개념인 리눅스 사용자 관리와 파일 권한의 기초를 소개합니다.
리눅스는 다중 사용자 운영체제입니다. 이는 여러 사용자가 동시에 동일한 리눅스 컴퓨터를 사용할 수 있음을 의미하며, 각 사용자는 자신만의 개인 공간과 파일을 가지는 동시에 일부 시스템 자원을 공유합니다. 이 실습에서는 시스템 관리와 보안의 핵심 개념인 리눅스 사용자 관리와 파일 권한의 기초를 소개합니다.
리눅스에서 각 사용자는 고유한 사용자 이름을 가집니다. 먼저 현재 어떤 사용자로 로그인되어 있는지 확인하는 것부터 시작해 보겠습니다.
터미널을 열고 다음 명령어를 입력하세요:
whoami
whoami 명령어는 현재 사용자의 이름을 표시하는 간단한 도구입니다.
다음과 유사한 출력 결과가 나타날 것입니다:
labex:project/ $ whoami
labex
이는 현재 "labex"라는 사용자로 로그인되어 있음을 나타냅니다.
이제 새로운 사용자를 만들어 보겠습니다. 리눅스에서 사용자를 생성하려면 관리자 권한이 필요합니다. 여기서는 sudo 명령어를 사용하여 이 권한을 얻을 것입니다.
sudo는 "Superuser Do"의 약자로, 일반 사용자가 슈퍼유저 (또는 root 사용자) 의 권한으로 명령을 실행할 수 있게 해줍니다.
사용자를 생성하기 전에 기본 그룹 (Primary Group) 의 개념을 살펴보겠습니다. 리눅스에서 모든 사용자는 하나의 기본 그룹에 속하며, 여러 개의 보조 그룹 (Secondary Group) 에 속할 수 있습니다. 기본 그룹은 보통 사용자가 생성하는 파일의 소유 그룹으로 지정됩니다.
adduser 명령어로 새 사용자를 생성하면, 시스템은 자동으로 사용자 이름과 동일한 이름의 기본 그룹을 생성합니다. 이를 사용자 개인 그룹 (User Private Group, UPG) 방식이라고 합니다.
다음 명령어를 입력하여 "jack"이라는 이름의 새 사용자를 생성하세요:
sudo adduser jack
이 명령어는 다음과 같은 작업을 수행합니다:
jack 의 비밀번호를 설정하고 추가 정보를 입력하라는 메시지가 나타납니다. 비밀번호는 간단하게 (예: "password") 설정하고, 나머지 정보는 엔터 키를 눌러 기본값을 사용하면 됩니다.
참고: 비밀번호를 입력할 때 화면에 아무런 글자도 표시되지 않는데, 이는 보안을 위한 정상적인 동작입니다. 당황하지 말고 비밀번호를 입력한 뒤 엔터를 누르세요.
사용자 생성이 완료되면, jack 의 홈 디렉토리가 생성되었는지 확인하고 jack 의 기본 그룹 정보를 체크해 보겠습니다:
ls /home
id jack
id 명령어는 jack 의 사용자 ID(UID), 기본 그룹 ID(GID), 그리고 소속된 모든 보조 그룹을 보여줍니다.
리눅스에서 사용자 그룹은 권한 관리를 위해 여러 사용자를 조직화하는 방법입니다. 각 사용자는 하나의 기본 그룹을 가지며 여러 보조 그룹에 속할 수 있습니다. 현재 사용자가 속한 그룹들을 확인해 봅시다:
id labex
다음과 같은 출력을 볼 수 있습니다:
uid=5000(labex) gid=5000(labex) groups=5000(labex),27(sudo),121(ssl-cert),5002(public)
이 결과의 의미는 다음과 같습니다:
labex 사용자의 ID(UID) 는 5000 입니다.labex의 기본 그룹 이름도 labex이며 그룹 ID(GID) 는 5000 입니다.labex는 sudo, ssl-cert, public과 같은 여러 보조 그룹에 속해 있습니다.이제 시스템에 존재하는 모든 그룹을 확인해 보겠습니다:
cat /etc/group | sort
cat 명령어는 파일 내용을 출력하고, /etc/group은 그룹 정보가 저장된 파일입니다. | sort는 출력 내용을 알파벳 순서로 정렬합니다.
labex와 관련된 그룹만 골라내려면 다음 명령어를 사용하세요:
cat /etc/group | grep -E "labex"
grep은 강력한 검색 도구입니다. 이 명령은 그룹 파일에서 "labex"라는 문자열이 포함된 줄만 찾아줍니다.
"developers"라는 새 그룹을 만들고, 방금 생성한 사용자 "jack"을 이 그룹에 추가해 보겠습니다.
먼저, 새 그룹을 생성합니다:
sudo groupadd developers
그 다음, jack 을 developers 그룹에 추가합니다:
sudo usermod -aG developers jack
usermod 명령어는 사용자 계정 정보를 수정합니다. -aG 옵션은 기존 그룹 목록을 유지하면서 새로운 보조 그룹을 추가한다는 의미입니다.
jack 이 developers 그룹의 멤버가 되었는지 확인하려면 다음을 입력하세요:
groups jack
jack 의 그룹 목록에 "developers"가 포함되어 있는 것을 확인할 수 있습니다.
이제 사용자 jack에게 sudo 그룹에 추가하여 관리자 권한을 부여해 보겠습니다. 그 전에 왜 이 작업이 중요한지 이해해 봅시다:
사용자를 sudo 그룹에 추가하면 해당 사용자는 슈퍼유저 (root) 권한으로 명령을 실행할 수 있게 됩니다. 이는 다음과 같은 이유로 유용합니다:
jack 을 sudo 그룹에 추가하려면 다음 명령어를 사용하세요:
sudo usermod -aG sudo jack
이 명령어는 usermod를 사용하여 계정을 수정합니다. -aG 옵션은 "그룹에 추가 (append)"를 의미하므로, jack 을 다른 그룹에서 제거하지 않고 sudo 그룹에만 추가합니다.
추가한 후에는 다음 명령어로 그룹 멤버십을 확인합니다:
sudo groups jack
jack 의 그룹 목록에 sudo가 표시되어야 합니다.
jack 을 sudo 그룹에 추가함으로써 시스템 관리 작업을 수행할 수 있는 능력을 부여했습니다. 하지만 큰 권한에는 큰 책임이 따른다는 점을 명심해야 합니다. sudo 권한을 가진 사용자는 시스템 전체에 영향을 줄 수 있으므로 신뢰할 수 있어야 하며 자신의 행동이 가져올 결과를 잘 이해하고 있어야 합니다.
리눅스에서 파일 권한과 소유권은 시스템 보안의 핵심입니다. 이 개념들을 살펴보고 조작하는 방법을 배워보겠습니다.
ls -l /home
다음과 유사한 출력이 나타납니다:
total 8
drwxr-xr-x 2 jack jack 4096 Jul 30 10:00 jack
drwxr-xr-x 5 labex labex 4096 Jul 30 09:55 labex
이 내용의 의미를 분석해 보겠습니다:
d는 디렉토리, -는 일반 파일).r은 읽기 (read), w는 쓰기 (write), x는 실행 (execute) 권한을 의미합니다.touch /home/labex/testfile
ls -l /home/labex/testfile
sudo chown jack:jack /home/labex/testfile
ls -l /home/labex/testfile
touch 명령어는 빈 파일을 생성합니다. 처음에는 labex 가 소유자로 지정되지만, chown 명령어를 사용하여 사용자 소유자와 그룹 소유자를 모두 jack 으로 변경했습니다.
왜 소유권을 변경할까요? 리눅스에서 파일 소유자는 해당 파일에 대해 특별한 권한을 가집니다. 소유권을 변경함으로써 jack 에게 이 파일에 대한 완전한 제어권을 부여한 것입니다.
sudo chmod 750 /home/labex/testfile
ls -l /home/labex/testfile
chmod 명령어는 파일의 권한을 변경합니다. 숫자 750 은 권한을 설정하는 약식 표현입니다:
이 권한 설정의 의미는 다음과 같습니다:
왜 이렇게 설정할까요? 이는 소유자에게는 모든 권한을 주고, 그룹에게는 제한된 접근을 허용하며, 그 외의 사람들은 차단하는 일반적인 설정 방식입니다. 이는 사용성과 보안 사이의 균형을 맞춘 것입니다.
파일 권한과 소유권을 이해하는 것은 리눅스에서 매우 중요합니다. 이를 통해 누가 파일을 읽고, 수정하고, 실행할 수 있는지 제어할 수 있으며, 이는 시스템 보안과 사용자 프라이버시의 근간이 됩니다. 리눅스를 계속 사용하다 보면 파일과 디렉토리의 접근 권한을 관리하기 위해 이 명령어들을 자주 사용하게 될 것입니다.
축하합니다! 리눅스 사용자 그룹 및 파일 권한 실습을 마쳤습니다. 이번 실습을 통해 다음 내용들을 학습했습니다:
이러한 기술은 리눅스 환경에서 사용자를 관리하고 파일을 안전하게 보호하는 데 필수적인 기초 지식입니다. 리눅스 학습을 계속해 나가면서 시스템 관리와 보안을 다룰 때 이 개념들이 매우 중요하다는 것을 실감하게 될 것입니다.