Work-udy/CentOS_Network

[CentOS - 센토스 리눅스] 03. User & Group Managing (사용 및 그룹 관리)

이안강 2017. 6. 13. 22:08

리눅스는 다중 사용자 시스템(Multi-User System) 이다. 

센토스 리눅스는 그 중에서 서버 관리 용도로 많이 사용되는 OS이다. (우분투도..)

즉, 하나의 서버 네트워크를 구축해두고 여러 사람이 동시 다발적으로 접속해서 리눅스 내의 자원을 사용한다는 것이다. 

그래서 리눅스 서버 관리자는 유저와 그룹에 적절한 권한을 부여하여 관리를 해야한다. 적절한 사람에게 적절한 권한이 부여되어야 필요한 사람에게 필요한 정보를 제공할 수 있게 되는 것이다. 그래서 모든 사용자들은 하나 이상의 그룹에 당연히 소속되게 된다. 

기본적으로 서버 관리자는 슈퍼유저로써 root 권한을 가지고 있다. 

필자는 급한 사람이므로 명령어를 먼저 적고 설명을 시작하겠다. 


# useradd newuser

newuser라는 새로운 유저를 생성한다


# passwd newuser

newuser라는 사용자의 비밀번호를 지정하거나 (이미 있다면) 변경한다


# usermod -g root newuser

newuser의 속성을 -g root 로 변경한다(root그룹에 포함시킨다)


--사용자 생성시 옵션--

-u : ID지정 

-g : 그룹지정

-d : 홈 디렉터리 지정

-s : 셀 지정


# userdel newuser

newuser 사용자를 삭제한다 


참고로 userdel 로 사용자를 지우더라도 사용자가 기존에 사용하던 폴더 newuser를 기준으로 /home/newuser 디렉터리는 지워지지 않는다.

(혹시나 돌아올 유저를 생각해서...!) # userdel -r username 명령으로 폴더까지 지울 수는 있다. 돌아올 사람이 아니면 지우자. 


# chage -m 2 newuser

사용자의 암호를 주기적으로 변경하도록 설정하면서 -m 2 라는 명령어를 주면 최소 2일 이상은 같은 비밀번호를 사용해야 한다.


# groups 

현재 사용자가 속한 그룹을 보여준다. 다시 말해 하나의 사용자는 여러 그룹에 포함될 수 있는데 주그룹이 존재하긴 한다. 

전공, 부전공의 관계 정도..? (이중전공도 무시말자..)


# groupadd newgroup

newgroup 이라는 새로운 그룹을 생성한다


# groupmod -n newgroup mygroup


# groupdel newgroup


# gpasswd newgroup

일반적이진 않으나 그룹에 비밀번호를 지정하기도 한다. 하지만 그룹에 비밀번호를 지정했다가 노출되기라도 하면 누가 노출시켰는지 알 수 없기 때문에 사용자 개개인의 비밀번호를 지정하는게 일반적이다. 


# yum -y install system-config-users 

system-config-users 라는 유틸을 yum 을 통해 다운받는다. (yum 에 대해서는 추후에 포스팅하겠다. 지금은 그냥 이런게 있구나~ 정도로 넘어가면 된다. 필자도 넘어가는 중이다.)



1. USER


사용자는 /etc/passwd 파일에 정의되어 있고 각 행의 의미는 다음과 같다. 편의상 영어로 적는다.


username : password : user ID : group ID : whole name : Home directory : basic shell



직접 들어가서 vi 에디터로 확인한 centos 사용자의 정보 (vi edit은 다음 포스트에서 다루려고 한다)


centos 는 유저이름

x 는 비밀번호로 공개가 되어지지 않는다. (root 사용자도 비밀번호를 알 순 없다. 지울수는 있지롱)

주의할점은 user ID 도 1000, group ID 도 1000 이지만 실질적으로 같은 1000은 아니다. 

예를 들자면 A중학교에 1학년에 B랑 2학년에 B는 이름이 같아도 동일한 학년에 속한 B가 아니므로 다른 B다. 

마찬가지로 user 와 group 이라는 다른 부류로 나뉘어 있기 때문에 1000은 같은 1000이 아니라는 말씀.

/home/centos 는 centos 사용자의 홈디렉터리 경로

/bin/bash 는 bash shell (터미널)을 의미한다. (바꿀 일이 없다.. 필자도 바꿀줄 모른다 아직..)


참고로 덧붙이자면 비밀번호는 /etc/shadow 라는 파일에 저장되지만 암호화되어서 절대 알아볼 수 없다. root사용자도 비밀번호를 알아낼 수 없다.


2. GROUP


그룹을 확인하려면 /etc/group 에서 확인할 수 있다. 


각 행의 의미는 다음과 같다.


groupname : password : group ID : username in the group



그룹이름이 centos

비밀번호는 x로 미공개

그룹ID가 1000

그룹내 유저이름이 그룹이름과 동일하게 centos 


이렇게 centos 그룹의 정보를 확인했다. 


3. Managing

처음 centos 사용자를 만들 때 그룹을 생성하지는 않았다. 하지만 위에서 언급했다시피 1사용자-1그룹 으로 매칭이 되어야 한다. 

그렇기 때문에 초기 생성 시 centos를 별도의 그룹에 소속시켜주지 않았지만 일단 linux 자체적으로 그룹을 만들어 임의로 centos 사용자를 배정시킨 것이다. 


예를 들어 임의로


# useradd myuser 


로 myuser라는 유저를 생성하고


# tail -5 /etc/passwd 


로 /etc/passwd 의 최하단 5줄을 확인해보면


myuser:x:1001:1001: : /home/myuser :/bin/bash


를 발견할 수 있다. 


여기서도 마찬가지로 그룹을 정해주지 않았지만 임의로 1001이라는 그룹을 생성해서 myuser를 소속시켰다. 


다시


# tail -5 /etc/group


으로 그룹명을 확인해보도 결과는 동일할 것이다. 


myuser : x : 1001:


그룹명은 당연히 1001로 생성되었다. 자동으로 생성되어 맞는 것처럼 보이지만 실제로 자동으로 배정되는 방식은 편하지 않다. 말하자면 중학교를 뺑뱅이로 돌려버린 것이다. (원하는 중학교 가야지?)


그렇다면 이런 방식으로 자동생성 되는 것을 방지하려면 그룹을 (다닐 중학교를 지어버려야지...) 먼저 생성해 주어야 한다. (리눅스는 전반적으로 하향식 관리의 표본이다)


# groupadd centosGroup

# useradd -g centosGroup user1

# useradd -g centosGroup user2


이런 식으로 그룹 먼저 >>> 유저 나중에 형식으로 작성하는게 일반적이라는 말이다. 


# passwd user1

1234

1234

enter


# passwd user2

1234

1234

enter


tail -5 /etc/shodow 로 확인해보면 암호가 같더라도 암호화된 부호는 다르다. 따라서 다시한번 절!대! 비밀번호는 확인이 불가하다. 


(일반사용자가 유저를 생성할 경우 최소 비밀번호를 8자로 지정해야 되지만 root 권한이 있는 사용자는 다~ 할 수 있다. 

이제와서 말하는 거지만 처음 linux 시작할 때 터미널에서 #과 $ 차이를 몰랐다. 

# 은 root 권한

$ 은 일반사용자  이다.

필자처럼 헷갈리실 분들을 위해서...)


ls -l /home


를 통해서 확인해보면 user1, user2 폴더가 생성되어 있음을 확인할 수 있다.