CS/OS

운영체제 : 3.Linux OS 이용/관리 : 1.계정 관리

OSP 2024. 12. 1. 00:48

3. Linux OS 이용/관리


3.1.계정 관리


3.1.1. 계정 정보

3.1.1.1. Linux 계정정보는 /etc/passwd에 저장되어 있으며, :를 기준으로 구분된다.

계정명 비밀번호 UID GID 계정 정보 홈디렉토리 셸 환경
root x 0 0 root /root /bin/bash
로그인 아이디 로그인 비번 유저 식별번호 그룹 식별번호 주석 사용자 폴더 해석 디폴트

 

3.1.1.2. 비밀번호는 /etc/shadow에 해시값으로 저장되어 있다.

일부 오래된 시스템에서는 비밀번호가 평문으로 저장되어 있는 보안취약점이 발견될 수도 있다.

계정명 해시값 마지막 변경일 최소 사용기간 최대 사용기간 만료 경고기간 나머지
root * 19360 0 99999 7 공백
  *또는! : 비활성
$1$ : MD5
$5$ : SHA-256
$6$ : SHA-512
$y$ : bcrypt
1970.1.1 부터 지난 날       비활성일수
계정만료일
기타

 

3.1.1.3. UID와 계정 정보는 임의로 지정할 수 있으나, 설계 정보의 경우에는 내정되어 있다. UID는 고유해야 하며 중복되면 충돌이 있을 수 있으나, 계정 정보는 중복되어도 상관 없다) 

UID 계정 정보 설계 정보
0 root 모든 권한을 가진 관리자계정(superuser)
1 daemon 데몬프로세스(백그라운드 서비스) 를 관리하는 계정
2 bin 과거 /bin의 디렉토리 실행 파일을 관리하던 계정으로, 현재는 호환성을 위해 유지됨
3 sys 과거 시스템파일과 /dev의 장치파일을 관리하던 계정으로, 현재는 잘 쓰이지 않음
4 sync 4 파일시스템의 디스크 동기화를 관리하는 계정
8 mail 이메일 서비스를 관리하는 계정
보통 33 www-data 웹서버에 사용되는 계정(Apache, Nginx)
65534 nobody 권한이 거의 없는 익명 사용자 계정
  - 사용자의 풀네임이나 주석같은 정보로 채우며, 비워 놓기도 한다.
1000~   임의지정

3.1.1.4. GID는 /etc/group에 저장되어 있다.(보통 사용자계정 생성시 같은 이름의 그룹에 속하게 된다)

그룹명 비밀 번호 GID 소속 사용자
root x 0  

3.1.1.5. 계정명은 호스트명과 구별되며, 하나는 로그인 ID이고 하나는 시스템(컴퓨터)이름이다. 


3.1.2. 계정 추가/변경/삭제

3.1.2.1. useradd 명령어로 새로운 계정을 추가할 수 있다.

패스워드는 각각 test1, test2로 입력했다. (패스워드에 값을 입력해도 화면에 아무런 출력이 되지 않는 것이 디폴트이며, 설정에 따라 *표시나 입력값 자체가 출력되도록 설정할 수도 있다.)

옵션 동작
-p 비밀번호 지정
-g 기본 그룹 지정
-G 보조(추가) 그룹 지정
-u UID 지정
-d 홈 디렉토리 임의 지정
-c 계정 정보 저장
-s 기본 셸 지정

 

  • 비밀번호를 설정하지 않으면 해당 계정에 접속할 수 없다.(su test1 Authentication failure)
  • -p 옵셥은 /etc/shadow 디렉토리에 직접 저장되는 것으로 해시값을 넣어야 한다. 그런데 평문을 넣으면 좀 오류가 있는 표현이지만, 암호화/복호화를 2번 연속한 것과 마찬가지이다. 따라서 위와 같은 오류가 출력된다. (su test2 Authentication failure). 평문을 해시값으로 바꾸는 것은 openssl 명령어로 가능하다.
  • -p 옵션은 알고리즘 명령어에서 곧바로 식별자를($1$:MD, $5$ 또는 $6$ : SHA) 지정할 수 있다. 반면 passwd 명령어는 식별자를 변경하려면 passwd의 근거파일/설정값을 변경해주어야 한다. 

sha512는 솔트값 때문에 동일한 입력에도 해시값은 매 번 다르게 나온다. 패스워드는 test3로 입력했다.

3.1.2.2. usermod 명령어로 기존 계정의 계정 정보를 변경할 수 있다. 옵션은 useradd와 상당히 겹친다. (그룹추가는 -aG)

루트 그룹(0, 또는 root)에 속한 test4계정을 생성한 모습이다. 비밀번호는 test4이다. root그룹에 속해있기에 이를 변경하기 위해서는 root권한(sudo 명령)가 필요하다.
test4 계정으로 test4의 셸 환경을 바꾸려 시도해도 sudo 권한이 없다고 나오는데, sudo 권한은 root 권한의 이중 인증장치로 볼 수 있다. 따라서 sudo 권한이 있는 최초 계정에서 test4계정에 sudo권한을 부여한 다음(sudo그룹지정) 기존 본 셸(sh, Bourne shel)을 Bash shell( Bourne-again shell)로 변경한 모습이다. sudo권한이 있는 osp계정에서 test4의 셸 환경을 곧바로 변경해도 무관하다.

3.1.2.4. userdel 명령어로 새로운 계정을 삭제할 수 있다.