공부 기록/리눅스 기초

[리눅스 기초] 08 관리자 권한 실행

도도히히 2025. 11. 3. 08:42

관리자 계정 접속

접속 계정 변경

$ : 일반 사용자 계정으로 접속한 상태의 프롬프트 모양

#: 관리자 계정으로 접속한 상태의 프롬프트 모양

접속 계정 변경 명령 : su 명령

 

su [옵션] 계정 이름 : 다른 계정으로 변경

옵션

-c : 셸을 실행하지 않고 주어진 명령만 수행

-s : 지정된 셸로 접속

-, -l : 지정한 사용자의 환경변수를 적용하여 접속

 

su 명령 약어의 3가지 형태의 의미

super user : 관리자 계정 (root)

substitute : 대리 사용자

switch user : 사용자를 변경

다른 사용자 계정으로 전환 후 원래 사용자 계정으로 돌아가려면 exit 명령 입력

 

 

관리자 권한 명령 : sudo

superuser do 의 약어

사용자 계정으로 접속된 상태에서 관리자 계정인 root 의 권한을 빌려서 명령을 수행할 때 사용

 

sudo [옵션] 계정 이름 : 다른 사용자 계정의 권한으로 명령을 수행

옵션

-i : /root 디렉터리로 이동

-s : 현재 디렉터리를 유지

 

관리자 계정 암호설정

passwd : 암호 변경

ex) sudo passwd root : root 계정의 암호를 새롭게 설정

su - root : 관리자 계정으로 접속 변경

‘-’ 옵션을 사용하지 않으면 원래 사용자 계정의 셸 환경 변수를 사용하게 됨

 

사용자 계정 관리

사용자 계정 생성

adduser 또는 useradd 명령 사용

 

adduser [옵션] [생성할 계정 이름] : 사용자 계정을 새로 생성

옵션

-c : 사용자 이름 등 부가적인 설명 지정

-d : 사용자 계정의 홈 디렉터리 지정

-D : 기본 설정값을 출력하거나 설정

-e : 유효기간 설정(YYYY-MM-DD)

-f : 사용자 계정의 유효일자(-f-175 : 앞으로 175일간 사용 가능)

-g : 사용자 계정의 로그인 기본그룹 GID 지정

-G : 2차 그룹의 GID 지정

-o : 사용자 계정의 UID 중복 허용

-p : 사용자 계정의 패스워드

-s : 사용자 계정의 기본 셸 지정

-u : 사용자 계정의 UID 지정

 

ex)

ls /home : /home 디렉터리에 존재하는 사용자 계정 리스트 출력

adduser member_001 : 사용자 계정 설정

 

사용자 계정 정보 : /etc/passwd 파일에 저장되어 있음

tail -3 /etc/passwd : /etc/passwd 파일의 정보를 마지막 3행에 대해서만 출력

cf. tail 뒤에 옵션으로 숫자 표시 안하면 기본으로 마지막 10행 출력

 

cf. 계정 정보

member_001 : x : 1001 : 1001 : ,,, : /home/member_001 : /bin/bash

 

1. 로그인 ID (member_001)

사용자 계정의 이름

콜론, 엔터 제외 아무 문자 사용 가능

동일한 ID 사용 불가능

 

2. 암호저장 항목 (x)

사용자 암호를 저장하기 위한 항목

실제 패스워드는 /etc/shadow에 있음

 

3. UID (1001)

사용자를 구분하기 위해 사용되는 사용자 ID 번호

일반 사용자는 1000번부터 할당

로그인 ID가 다르더라도 UID가 같으면 시스템은 동일한 사용자로 판단

 

4. GID (1001)

사용자가 속해있는 그룹의 ID

사용자를 등록할 때 정해짐

지정하지 않으면 자동으로 로그인 ID가 그룹으로 등록됨

 

5. 설명 (,,,)

사용자에 대한 일반적인 정보(이름, 부서, 연락처 등)가 기록되는 항목

 

6. 홈 디렉터리 (/home/member_001)

사용자 계정에 할당된 홈 디렉터리는 절대경로의 형태로 저장됨

 

7. 로그인 셸

사용자의 로그인 기본 셸

 

ex)

tail -1 /etc/shadow : 계정의 암호화된 정보 확인

$<id>$<salt>$<hash>로 출력

 

<id>

  • 1 = MD5
  • 5 or 6 = 각각 SHA256, SHA512
  • 7/y = yescrypt
  • 2a/2y = bcrypt

pw에 랜덤값(salt)을 결합하고 id의 알고리즘으로 해시 처리함

 

문제 09-01

  1. 사용자 계정 student_001을 암호 123456으로 설정하여 생성하기
  2. 생성된 계정이 존재하는지 홈 디렉터리의 정보 출력하기
  3. tail 명령으로 사용자 계정의 일반 정보 출력하기
  4. tail 명령으로 사용자 계정의 암호화된 정보 출력하기
$ adduser student_001
$ ls /home (root 계정에서)
$ tail -1 /etc/passwd
$ tail -1 /etc/shadow

 

 

사용자 계정 정보 수정 : usermod

로그인 ID, UID, GID, 설명, 홈 디렉터리, 기본 셸 등 계정과 관련된 모든 정보 수정 가능

 

usermod [옵션] [사용자 계정 이름] : 사용자 계정정보 수정

옵션

-c : 사용자 이름 등 부가적인 설명 수정

-d : 사용자 계정의 홈 디렉터리 수정

-e : 사용자 계정의 만료일(유효기간) 수정 (YYYY-MM-DD)

-f : 사용자 계정 비활성화 일자 수정

-g : 사용자 계정의 로그인 기본그룹 GID 수정

-G : 2차 그룹의 GID 수정

-l : 사용자 계정 이름 변경

-o : 사용자 계정의 UID 중복 허용

-s : 사용자 계정의 기본 셸 수정

-u : 사용자 계정의 UID 수정

 

ex) usermod -u 2001 member_001 : member_001의 UID를 2001로 변경

tail -1 /etc/passwd : 계정에 대한 UID 확인 가능

 

 

사용자 계정 삭제 : userdel

 

userdel [옵션] 계정 이름

옵션

-r : 홈 디렉터리 삭제

-f : 사용 중인 계정 이름도 강제 삭제

-rf : 홈 디렉터리 이외에 존재하는 파일 삭제

 

사용자 계정 삭제 수행 방법

  1. /etc/passwd 파일에서 사용자 계정 삭제: userdel -r 계정 이름
  2. /etc/group 파일에서 사용자 그룹 삭제: groupdel 계정 이름
  3. /home 디렉터리에 있는 사용자의 홈 디렉터리 삭제: rm -rf /home/계정 이름
  4. /var/spool/mail에 있는 사용자 메일 삭제: rm /var/spool/mail/계정 이름
  5. 데이터베이스 연동에서 삭제하려는 계정 이름과 암호 삭제
  6. 기타 응용 프로그램에 존재하는 사용자 계정의 정보 삭제
  7. 우분투 시스템을 재시작

 

UID를 이용하여 사용자 계정 관련 모든 파일 삭제 방법

  • find 명령으로 UID를 찾아서 사용자 계정과 관련된 모든 파일을 한꺼번에 삭제
  • 계정 자체를 삭제하는 것이 아님 (홈 디렉터리 삭제 X)

find [옵션] UID [옵션] [명령] {} \;

 

ex) find -user 2001 -exec rm -r {} \;

: UID가 2001인 계정의 모든 정보를 한꺼번에 삭제

grep 계정 이름 /etc/passwd : passwd 파일에 계정 이름에 대한 문자열이 존재하는지 확인

(출력결과 아무것도 나타나지 않는 것은 제대로 삭제되었음을 의미)

 

find 명령어를 통해서 삭제하는 것은 계정의 정보(해당 UID가 소유한 파일들)임

grep 계정 이름 /etc/passwd를 입력해도 결과가 나타남

계정 자체를 삭제하는 명령어는 userdel -r 계정 이름

 

 

기타 명령어

명령어 의미
su 다른 계정으로 변경
useradd 사용자 계정 생성
passwd 사용자 계정의 암호 수정
head 파일내용을 첫번째 라인부터 10행 만큼만 출력
tail 파일내용을 마지막 라인부터 10번째 라인까지만 내용 출력
usermod 사용자 계정정보 수정
grep 찾고자 하는 문자열 검색
sudo chage 시스템 보안을 위해 사용자 계정의 암호 기한설정 및 변경

 

 

문제 09-02

  1. 사용자 계정 space를 암호 123456으로 설정하여 생성하기
  2. space 계정의 UID를 확인하기
  3. UID를 사용하여 space 계정 삭제하기
  4. /etc/passwd 파일에 space 문자열이 존재하는지 확인하기
$ adduser space
$ tail -1 /etc/passwd
$ find -user (해당 UID) -exec rm {} \\;
$ grep space /etc/passwd