보안 공부 회고록

Linux: useradd와 chown 명령어 본문

sdc: 그 외 컴퓨터 공학/Linux와 Unix

Linux: useradd와 chown 명령어

김 간장 2024. 2. 18. 14:23

wildfly를 설치하려고 어떤 능력자분의 블로그 글을 따라서 실습을 하는 중이었는데

계정 생성, 소유권 변경과 관련한 명령어를 사용하는데 각각의 명령어에 포함되는 옵션이 이해가 안돼서 정리하고자 이 글을 쓰게 되었다.

 

지금 보고 있는 글은 아래의 글이다.

https://lee-automation-lab.tistory.com/entry/CentOS-73-WildFly-2401-%EC%84%A4%EC%B9%98

 

CentOS 7.3 - WildFly 24.0.1 설치

1. Java OpenJDK 설치 yum install java-1.8.0-openjdk-devel 2. 사용자 생성 groupadd -r wildfly useradd -r -g wildfly -d /opt/wildfly -s /sbin/nologin wildfly *nologin 계정으로 생성 한 후 확인 grep wildfly /etc/passwd 3. WildFly 설치 wget h

lee-automation-lab.tistory.com

여기에서 useradd, chown 명령어를 사용할 때 많은 옵션을 추가해서 사용하는데

각각의 옵션을 이해해보자..

 

1. 그룹 생성

그룹을 만든다.

groupadd testgroup

 

만약 시스템 그룹으로 만들고 싶다면 -r 옵션을 넣어준다.

groupadd -r testgroup

 

 

2. 계정 생성

계정을 생성한다.

이때 여러 옵션들을 추가해서 계정을 만들 수 있다.

useradd -r -g testgroup -d /opt/test -s /sbin/nologin testadmin

위의 명령어는 시스템 계정 testadmin을 생성하는데 그룹은 testgroup으로 설정하고 홈 디렉터리는 /opt/test로 설정하며, 로그인 쉘은 부여하지 않는다. (nologin)

 

각각의 옵션은 다음과 같다.

-r : 시스템 계정으로 생성한다
-g : 새 계정의 초기 그룹을 설정한다
-d : 홈디렉터리 설정한다
-s : 로그인 쉘을 설정한다

 

 

nologin으로 설정했기 때문에 root로 작업을 하고 /opt/test 밑에 있는 파일들의 소유권을 변경해줘야 하는데..

이때 chown을 사용한다.

 

3. 소유권 변경

chown -RH testadmin:testgroup /opt/test

 

/opt/test 하위의 모든 데이터의 소유권을 testadmin:testgroup으로 변경하는 명령어이다.

testadmin은 계정, testgroup은 그룹인데,

계정명과 그룹명이 동일한 경우 아래와 같이 사용할 수 있다.

chown -RH testadmin: /opt/test

 

/opt/test 디렉터리 하위의 데이터들의 소유권도 한번에 변경하기 위해서 -R 옵션을 사용했다.

-R 옵션은 재귀적으로(recursive) 디렉터리와 하위 디렉터리를 변경한다.

 

-R 옵션이 지정되고, -H 옵션이 지정되면

→ 커맨드 라인 인수가 "디렉터리에 대한 심볼릭 링크"이면 추적하지 않고 해당 링크 자체를 변경한다는 의미이다.

 

 

그러니까 쉽게 말해서 /opt/test가 "어떠한 디렉터리의 심볼릭 링크"인 상황일 때 -RH 옵션을 이용하면 해당 심볼릭 링크에 연결된 디렉터리의 하위 데이터도 모두 소유권이 변경된다는 것이다.

 


※ 테스트

말이 너무 어려운 것 같다. 그래서 테스트를 해보기로 했다.

 

 

위의 그림을 보면 알겠지만, 현재 /opt/test 디렉터리가 어떠한 디렉터리의 심볼릭 링크이다.

이때 chown -R과 chown -RH를 해보자.

 

chown -R

보면 알겠지만 test 디렉터리의 소유권은 test001로 변경되었지만,

test 디렉터리의 원본 디렉터리의 데이터는 변경되지 않았다.

즉, -R 옵션 사용 시 기본적으로(default) 인수가 심볼릭 링크 디렉터리이라면, 원본 디렉터리에는 영향을 주지 않는다.

 

말이 어려울 수 있는데... 위의 그림에 적용해서 정리하자면,

chown -R 옵션 사용 시 인수(argument)가 /opt/test이고, 심볼릭 링크이기 때문에 원본 디렉터리는 바뀌지 않고 심볼릭 링크의 소유권만 바뀌었다.

 

 

chown -RH

 

-R 옵션과 함께 -H 옵션을 사용했을 때는 디렉터리의 심볼릭 링크(/opt/test)의 소유권은 물론이고, 심볼릭 링크와 연결된 원본 디렉터리의 하위 데이터들도 소유권이 변경되었다.

 

테스트 결과를 통해 차이점을 확실히 이해할 수 있다.

 


 

※ 참고로 디렉터리의 심볼릭 링크는 주의해서 삭제해야한다.

원본 디렉터리가 삭제될 수도 있기 때문에 rm -f로 삭제해야 한다.

(rm -rf 로 삭제했다가 원본 디렉터리를 보내드려야 했다..)

 

또한 rm -f로 삭제할 때 디렉터리명 끝에 슬래쉬(/)를 붙이면 삭제가 안된다.

rm -f /opt/test/ 가 아니라 rm -f /opt/test로 지워야 한다.

 

어떻게 알았냐면... 나도 알고 싶지 않았다.