Linux 권한 부여 (usermod/group)
1. 리눅스 그룹 권한 관리의 필요성
대규모 빅데이터 모니터링 플랫폼을 수많은 고객사의 Hadoop 클러스터에 설치하면서 가장 흔하게 겪는 초반 이슈 중 하나는 바로 ‘권한(Permission) 모델 구성’입니다.
클러스터 각 노드에 설치된 플랫폼 수집 에이전트는 JMX 지표 외에도 데몬의 로컬 로그(.log) 파일들이나 설정 파일(.xml)을 직접 파싱해야 할 때가 많습니다. 그러나 고객사의 엄격한 보안 지침상 에이전트를 root 권한으로 실행할 수는 없었고, 전용 서비스 계정(예: flamingo)을 생성하여 수집을 진행해야 했습니다.
이때 HDFS나 YARN 서비스가 남기는 데이터를 읽기 위해 에이전트 계정을 Hadoop 관련 그룹에 소속시켜야 했는데, 기존에 부여된 그룹(wheel 등) 권한을 날려버리는 실수가 대형 장애로 이어질 수 있어 매우 신중하게 다뤄야 하는 작업이었습니다.
2. User/Group 관리 핵심 커맨드 개념
루트 권한이 없는 일반 계정이나 서비스 데몬 계정이 특정 디렉토리/소켓에 접근하려면 해당 자원을 소유한 리눅스 사용자 그룹(Group)에 계정을 추가해야 합니다.
이 작업에는 usermod 명령어를 주로 사용합니다. 특히 기존 그룹을 대체해버리는 불상사를 막기 위해 -aG (Append Group) 옵션이 필수적으로 쓰입니다.
| 옵션 | 의미 |
|---|---|
-g [그룹] | 사용자의 Primary(기본) 그룹을 변경 (기존 기본 그룹이 교체됨) |
-G [그룹] | 사용자의 Secondary(보조) 그룹을 덮어씀 (기존 보조 그룹 전체 삭제!) |
-aG [그룹] | 사용자의 보조 그룹에 추가(Append) (기존 그룹 유지) |
🔥 핵심 주의사항:
-G대문자 옵션만 단독으로 사용할 경우, 명령문에 나열되지 않은 사용자의 기존 보조 그룹 소속이 전부 삭제되어버립니다. 실무 운영 환경에서는 반드시-a(append) 옵션과 함께 붙여서-aG형태로 쓰는 습관을 들여야 대형 사고를 피할 수 있습니다.
3. 실제 Hadoop 클러스터 환경 적용 사례
고객사의 CDH(Cloudera)나 HDP(Hortonworks) 클러스터 환경에서, 플랫폼 에이전트가 HDFS 데이터 및 설정 파일에 원활하게 접근하여 지표를 수집하기 위해 hdfs 또는 hadoop 그룹에 권한을 부여했던 실제 명령어 예시입니다.
# 1. 기본 로그 수집을 위해 에이전트 유저의 기본 그룹(Primary Group)을 변경할 때 (소문자 -g)
$ usermod -g hdfs flamingo
# 2. HDFS 외에 YARN, Hive 등 다른 접근 권한도 필요할 때
# 기존 권한을 잃지 않고 보조 그룹(Secondary Group)으로 hadoop 추가 (-aG)
$ sudo usermod -aG hadoop flamingo
# 3. 추가된 그룹 최종 확인
$ id flamingo
# uid=1001(flamingo) gid=1002(hdfs) groups=1002(hdfs),1003(hadoop)
# 4. 계정에 속한 그룹 목록만 간결하게 확인
$ groups flamingo
# flamingo : hdfs hadoop4. 실수를 방지하는 운영 팁
- 그룹을 추가하거나 변경한 후에는 반드시
id [사용자명]명령으로 변경이 올바르게 적용되었는지 확인하세요. - 변경 사항은 해당 사용자가 재로그인(SSH 세션 재접속) 해야 완전히 적용됩니다. 이미 열려 있는 세션에는 즉시 반영되지 않습니다.
- 운영 서버에서 그룹 변경 작업 시에는 멱등성(Idempotent)을 보장하기 위해 ansible 플레이북 등 인프라 코드(IaC)로 관리하는 것을 권장합니다.
이처럼 단순해 보이는 리눅스 명령어 하나도 대규모 분산 클러스터를 다루는 환경에서는 서버 접근 장애를 예방하기 위해 그 옵션의 의미를 정확히 파악하고 신중하게 사용해야 합니다.