시스템에 사용자가 많건 적건, 이것은 리눅스 하에서 사용자를 관리하는 형태를 이해하는 것은 중요하다. 심지어 당신이 유일한 사용자라 할지라도, 아마도 자신을 위한 몇 개의 계정을 가져야 할 것이며, 그 계정에서의 작업은 root보다 더 많이 사용할 것이다.
사용자 관리에 필요한 몇가지 용어들을 먼저 알아보자.
username은 시스템의 모든 사용자에게 주어지는 단일 이름이다. 예를 들어, username은 soonshin, gildong2, jspark 등의 문자나 숫자도 사용될 수 있으며, "_", "."도 가능하다. Username은 보통 8글자로 제한되어 있다.
User ID 또는 UID는 시스템의 모든 사용자에게 주어지는 단일 번호이다. 시스템은 username이 아닌 UID 정보로써 사용자를 관리한다.
Group ID또는 GID는 사용자의 디폴트 그룹의 ID이다. 각 사용자는 시스템 관리자에 의해 하나나 그 이상의 그룹에 속할 수 있다.
시스템은 또한 사용자의 암호화된 패스워드를 저장하고 있다. 명령어 passwd는 사용자의 패스워드를 설정하거나 변경할 때 사용된다.
사용자의 "real name" 또는 "full name"은 username과 함께 기록된다.
Home directory는 사용자가 login했을 때 처음으로 있게 되는 디렉토리이다. 모든 사용자는 반드시 그 자신의 home directory는 가지며, 보통 /home 하위에 위치하게 된다.
사용자의 login shell은 login시에 실행되는 shell이다. 예를 들면, /bin/bash와 /bin/tcsh가 있다.
사용자에 대한 정보는 /etc/passwd 파일에 담고 있으며, 그 형식은 아래와 같다.
username:encrypted password:UID:GID:full name:home directory:login shell
예를 보이면,
foo:Xv8Q981g71oKK:102:100:Laura Poole:/home/foo:/bin/bash
사용자명 : 패스워드 : 유저아이디 : 그룹아이디 : 사용자 정보 : 디렉토리명 : 사용하는 쉘
위에서 볼 수 있는 것처럼 첫번째 필드 foo는 username이며, 다음 필드의 "Xv8Q981g71oKK" 는 암호화된 패스워드이다. 패스워드는 시스템이 사용자가 읽을 수 있는 형식으로는 저장되어 있지 않다. 패스워드는 비밀 키를 사용하여 그 자신을 암호화한다. 달리 말하면, 패스워드를 알기 위해서는 암호화된 코드를 본래 입력한 것으로 변환해야 한다. 이 암호화된 형태는 효율적인 보안의 방법이다.
어떤 시스템은 패스워드 정보를 /etc/shadow 파일에 위임하는 shadow password 를 사용한다. /etc/passwd는 읽혀질 수 있고, /etc/shadow는 읽을 수 없기 때문에 보다 강한 보안을 제공한다.
3번째 필드 102 는 UID이다. 이것은 각각의 사용자에게 하나씩 있어야 한다. 4번째 필드 100은 GID이다. 이 사용자는 그룹 번호 100에 속해 있다. 그룹 정보는 /etc/group에 저장되어 있다.
다섯 번째 필드는 사용자의 full name Laura Poole이다. 마지막으로 두개의 필드는 사용자 홈 디렉토리(/home/foo)와 login shell(/bin/bash)이다. 디렉토리는 username 과 같이 따로 요구되는 것은 아니며, 단지 디렉토리를 알리는 데 도움이 될 뿐이다.
useradd -d /www/Hosting/test/ -G users
passwd test
userdel test
adduser 사용자 그룹
deluser 사용자 그룹
/etc/passwd에 저장되며 다음의 명령으로 볼 수 있다.
각 사용자의 암호와 소속 가 저장된 파일.
cat /etc/passwd
/etc/group에 저장되며 다음의 명령으로 볼 수 있다.
cat /etc/group
group:password:GID:사용자목록(컴마로 구분) 의 형식이다.
그룹은 사용자들을 집단으로 묶는 것이며, 이렇게 함으로써 그 그룹에 속한 사용자들의 파일을 특정 그룹에 속하는 사용자 모두가 공유할 수 있게 해준다. 또한, 사용자는 복수의 그룹에 속할 수 있다. 일반적인 그룹 이외에 시스템에 정의되는 bin, mail, sys 같은 몇 개의 특수한 그룹이 있다. 이런 그룹 중에는 사용자가 어느 곳에도 속할 수 없으며, 그것들은 시스템 파일 사용 허가에 사용된다.
/etc/group는 그룹에 관한 정보가 담겨 있으며, 그 형식은 아래와 같다.
group name:password:GID:other members
이 파일의 예를 보인다.
root::0: users::100:mdw,larry guest::200: other::250:kiwi
첫 번째 그룹 root는 root 계정을 위해 예약된 특별한 시스템 그룹이다. 다음 그룹 users는 일반 사용자들을 위한 것이다. 현재 이것은 GID 100을 갖으며, 사용자 mdw와 larry 는 이 그룹을 액세스 할 수 있다. 어쨌든, 사용자는 /etc/group의 다른 그룹 라인에 username을 추가함으로써 하나 이상의 그룹을 가질 수 있다. 명령어 ‘groups’ 는 사용자가 액세스 할 수 있는 주어진 그룹의 목록을 열거한다.
3번째 그룹 guest는 손님 사용자를 위한 것이며, 다른 것은 “other” 그룹들이다. 사용자 kiwi는 이 그룹을 액세스 할 수 있다. 여기서, /etc/group의 “password” 필드는 아주 드물게 사용된다. 이것은 때때로 그룹 액세스를 설정할 때 사용하지만 좀처럼 쓰이지 않는다.
명령어 ‘addgroup’나 ‘groupadd’ 는 시스템에 그룹을 추가할 때 사용된다. 일반적으로, 이것은 /etc/group안에 추가시키면 되며, 다른 설정들이 필요치 않다. 그룹을 지우기 위해서는 /etc/group 파일의 내용에서 사용자를 삭제하면 된다.