[OS-005][기초] 사용자와 그룹을 확인하고 sudo를 안전하게 쓰기 > IT 기술 공유

본문 바로가기
사이트 내 전체검색

IT 기술 공유

[OS-005][기초] 사용자와 그룹을 확인하고 sudo를 안전하게 쓰기

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 235회 작성일 26-09-01 03:37

본문

[이번 수업]
운영체제가 “누가 이 작업을 요청했는가”를 구분하는 사용자와 그룹을 배웁니다. 현재 신원과 파일 소유자를 안전하게 조회하고, sudo가 단순한 만능 관리자 명령이 아니라 정책으로 허용된 작업만 다른 사용자 권한으로 실행하는 도구임을 이해합니다.

[선수지식]
OS-003의 파일 소유자·그룹·읽기·쓰기·실행 권한과 OS-004의 셸 명령을 알고 있으면 됩니다. 실습은 계정이나 시스템 설정을 바꾸지 않습니다.

[학습목표]
1. UID, 기본 그룹, 보조 그룹을 구분한다.
2. id와 파일 목록에서 현재 사용자·그룹을 확인한다.
3. sudo를 최소 권한 원칙에 맞게 사용하는 기준을 세운다.

[핵심개념]
Linux와 macOS 계열 시스템에서 사용자는 이름과 숫자 사용자 ID(UID)로 식별됩니다. 그룹은 여러 사용자에게 권한을 함께 부여하는 단위이며 숫자 그룹 ID(GID)를 가집니다. 한 프로세스에는 기본 그룹과 여러 보조 그룹이 있을 수 있습니다. 파일에는 소유 사용자와 소유 그룹이 기록되고, 운영체제는 이 신원과 권한 비트를 함께 보고 접근을 허용합니다.

`id`는 현재 프로세스의 사용자·그룹 정보를 보여 줍니다. `id -un`은 사용자 이름, `id -gn`은 기본 그룹 이름, `id -Gn`은 속한 그룹 이름을 출력합니다. 로그인 뒤 그룹 구성이 바뀌어도 이미 실행 중인 세션에는 바로 반영되지 않을 수 있으므로 새로 로그인해야 할 수 있습니다.

`sudo`는 정책이 허용한 사용자가 명령을 다른 사용자 권한으로 실행하게 합니다. 기본 대상은 보통 최고 관리자이지만, 허용 여부는 단순히 특정 그룹 이름만으로 결정된다고 가정하면 안 됩니다. sudoers 정책은 요청 사용자, 대상 사용자, 호스트, 명령 등을 기준으로 판단합니다. 필요한 명령만 허용하는 것이 모든 명령을 열어 두는 것보다 안전합니다. 정책을 고쳐야 한다면 일반 편집기로 파일을 직접 열지 말고 잠금과 문법 검사를 제공하는 `visudo`를 관리 절차에 따라 사용합니다.

[따라하기]
identity-demo.sh를 만들고 아래를 저장합니다. sudo를 호출하지 않으므로 비밀번호 입력이나 권한 변경이 없습니다.

```sh
#!/bin/sh
set -eu

printf 'user: '
id -un
printf 'primary group: '
id -gn
printf 'all groups: '
id -Gn

mkdir -p os005-lab
printf 'practice\n' > os005-lab/note.txt
ls -l os005-lab/note.txt
```

macOS·Linux에서는 `sh identity-demo.sh`를 실행합니다. 예상 결과는 사용자·기본 그룹·여러 그룹 이름과 `-rw-r--r-- 1 <사용자> <그룹> ... note.txt`처럼 소유자가 표시된 한 줄입니다. 이름과 그룹 수는 컴퓨터마다 다릅니다. 끝나면 `rm -r os005-lab`로 본인이 만든 실습 폴더만 지울 수 있습니다.

Windows는 Unix UID·GID와 sudo 방식을 그대로 쓰지 않습니다. 명령 프롬프트나 PowerShell에서 `whoami`로 현재 계정을, `whoami /groups`로 그룹을 확인할 수 있습니다. 관리자 권한이 필요하면 운영체제의 승인 창과 조직 정책을 따르며 Unix 명령을 억지로 바꿔 실행하지 않습니다.

[흔한 실수]
사용자 이름과 UID를 같은 것으로 생각하거나, 기본 그룹만 보고 모든 권한을 판단하지 마세요. `sudo cd`처럼 셸 내장 명령을 별도 프로세스로 실행하려 하거나, 권한 오류가 날 때마다 전체 명령 앞에 sudo를 붙이는 습관도 피해야 합니다. 먼저 파일 소유자, 그룹, 권한과 실제로 필요한 작업 범위를 확인하세요.

[보안 주의]
인터넷에서 복사한 스크립트나 내용을 읽지 않은 명령을 sudo로 실행하지 않습니다. 비밀번호를 명령 인자·스크립트·채팅에 적지 말고, sudo의 비밀번호 요청은 본인 소유 장치의 대화형 터미널에서만 처리합니다. `sudo -l`은 허용된 명령을 확인하는 기능이지만 출력에는 시스템 정책이 담길 수 있으므로 공개하지 마세요. 공유 관리자 계정보다 개인 계정과 최소 권한을 사용하고, 권한 상승 작업은 목적과 변경 내용을 기록합니다.

[직접 해볼 과제]
1. `id`, `id -un`, `id -gn`, `id -Gn` 결과의 차이를 표로 정리하세요.
2. 실습 파일의 소유자와 그룹을 찾고 OS-003에서 배운 권한 문자열까지 설명하세요.

[확인문제]
1. 기본 그룹과 보조 그룹은 어떤 차이가 있나요?
2. 권한 오류가 날 때 무조건 sudo를 붙이면 안 되는 이유는 무엇인가요?
3. sudoers 정책을 일반 편집기 대신 visudo로 다루는 이유는 무엇인가요?

[다음 학습]
OS-006에서 패키지를 설치하고 프로세스와 서비스를 안전하게 관리하는 방법을 배웁니다.

[공식 참고 자료]
Debian id(1) 매뉴얼: https://manpages.debian.org/bookworm/coreutils/id.1.en.html
sudo 공식 매뉴얼: https://www.sudo.ws/docs/man/sudo.man/
sudoers 공식 매뉴얼: https://www.sudo.ws/docs/man/sudoers.man/
Windows whoami 공식 문서: https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/whoami

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
837
어제
5,103
최대
16,772
전체
771,891
Copyright © 소유하신 도메인. All rights reserved.