23년 4월 14일 작성
리눅스 개인 계정을 생성해야 하는 일이 있었다. 여러 인원들의 개인 계정을 생성해야 했고, 개인들은 부여받은 권한만 사용할 수 있어야 했다. 특정 권한의 계정 유저들을 하나의 그룹으로 묶어 제공하기로 하였다.
예를 들면, 개발자(deployment) 권한을 부여받아야 하는 개인 계정들은 deployment_users 로 그룹핑을 하여 /etc/sudoers에 아래와 같이 설정하여 sudo su - deployment로 공용 계정에 접근이 가능하도록 하였다.
%deployment_users ALL=(ALL:ALL) NOPASSWD: /bin/su - deployment
deployment_users의 gid를 기존에 10000으로 설정하여 서버들에 생성하였다. 하지만, 이후 생성된 vm들에 ha_proxy, node_exporter가 설치되면서 gid를 10000으로 사용하게 되면서 gid가 겹치게 되고, 계정 생성이 불가능한 문제가 발생하였다.
이 문제를 해결하기 위해 테스트 진행 후, deployment_users의 gid를 9998로 다음에 해당 서버에서 계정 생성을 할 때 deployment_users의 gid가 변경되도록 설정하였습니다.
이렇게 하면 문제가 없을 거라고 생각을 했지만.. gid가 변경되면서 기존에 gid 10000으로 생성했던 디렉토리의 소유자는 각 개인 계정으로 되어 있지만 소유 그룹이 9998로 변경되지 않고 여전히 기존에 생성했던 10000으로 남아 있는것으로 확인하였다. (gid, uid 출력하려면 ls -aln 으로 n 옵션 주면됨)
예를 들면.. 아래와 같이 10000 gid로 남아 있을 수 있다.
drwxr-x--- 3 10015 10000 4096 Apr 8 15:29 개인계정_dir
물론, 소유자에 대한 권한은 rwx로 읽기 쓰기 실행 전부 다 되도록 허용이 되어 있기 때문에 파일을 사용하는데에 문제는 없을 것 같고, 또한, deployment_users의 그룹에 속한 다른 계정 소유자가 내 디렉토리에 들어와서 뭔가 쓰기 작업을 할 일은 없기 때문에 문제는 없을 것으로 예상된다.
그리고.. sudo su - deployment 가 혹시 안되지 않을까? 하는 생각이 있었지만, 생각해보니 /etc/group에 deployment_users에개인계정이 추가가 되어 있고, /etc/sudoers는 deployment_users라는 계정에 대해 제한을 하기 때문에.. 접근이 가능하다.
하지만, 예를 들어 deployment2라는 group이 해당 gid(10000)를 사용하게 된다면 이 디렉토리는 원래 deployment2라는 그룹의 사용자들이 접근이 되면 안되는데 접근이 가능하다는 문제가 발생할 수 있다.
그러므로 groupmod로 권한 변경을 진행한 후에 디렉토리들의 권한도 변경이 필요하다. 또한, 서버들에 나중에 새로운 계정을 생성하게 되는 시점에 바꾸는 것보다 전체적으로 서버들을 확인해서 gid를 변경해놓는 것이 추후 문제가 생길 가능성이 줄어든다.
위와 같은 문제점을 파악 후 전체 서버 대상으로 ansible로 다음과 같이 적용하였다.
root 계정, 공용 계정 쪽에는 개인 계정으로는 어차피 못쓰니까(root, deployment 계정으로 전환해야 사용 가능) 괜찮을 듯 하고, 개인 계정의 홈 디렉토리들만 변경해주면 될 것으로 생각된다.
groupmod -g 9998 deployment_users
chown -R 개인계정:deployment_users /home/개인계정
위 진행 후 디렉토리 권한까지 변경된 것으로 확인했다.
/home/개인계정 디렉토리의 하위 파일 및 디렉토리들이 root, 개인계정 소유로 생성되었을 거라고 예상이 되는데 root 계정으로 생성한 파일들이 개인계정 소유로 바뀌게 되더라도 root 계정은 어차피 모든 파일들에 rwx가 가능하기 때문에 큰 문제가 없을 것이라는 의견을 받아 적용하였다.
또한, 개인 계정에는 deployment 공용 계정으로 접근이 불가능하기 때문에 deployment 계정으로 생성된 파일은 존재하지 않는다.
'Linux' 카테고리의 다른 글
리눅스 계정 패스워드 만료시 계정 잠김 문제 (2) | 2025.03.15 |
---|---|
리눅스 Run level 이란? (0) | 2023.01.07 |
Repository 관련 정리 (0) | 2022.10.21 |
Out of memory 되었을 때 확인해봐야 할 것들.. (0) | 2022.10.11 |
리눅스 데몬(서비스) 리스트 조회하기 (0) | 2022.09.28 |