14 분 소요

1. 사용자 계정 관련 파일

사용자 관리

  • 리눅스는 다중 사용자 시스템이므로 사용자를 구별하고 사용자에게 적절한 자원을 할당해주는 방법이 필요
  • 사용자 계정은 사용자가 시스템에 접근할 수 있는 유일한 방법

(1) /etc/passwd 파일

  • 사용자 계정 정보가 저장된 기본 파일
  • 한 행에 사용자 한 명에 대한 정보가 기록 (7개 항목 저장)

로그인ID : x : UID : GID : 설명 : 홈 디렉터리 : 로그인 셸 $ cat /etc/passwd | grep user1

  1. 로그인 ID : 사용자 계정 이름, 32자를 넘을 수 없으며 8자로 제한하는 것이 좋음

  2. x : 초기 유닉스에서 사용자 암호 저장, 최근 /etc/shadow 에 별도로 암호 저장

  3. UID : 사용자 ID (시스템이 사용자를 구별하기 위해 사용하는 번호)
    • 0~999번, 65534번은 시스템 사용자를 위한 UID로 예약
    • ex) 0: root, 1: daemon, 2: bin, 7:lp 등
    • 사용자들은 일반적으로 UID 1000번부터 할당
    • 로그인 ID가 다르더라도 UID가 같으면 리눅스 시스템은 같은 사용자로 판단
  4. GID : 그룹 ID, 시스템에 등록된 그룹에 대한 정보는 /etc/group 파일에 저장

  5. 설명 : 사용자 실명, 부서명, 연락처 등 사용자에 대한 일반적인 정보 기록

  6. 홈 디렉터리 : 사용자 계정에 할당된 홈 디렉터리의 절대 경로 기록

  7. 로그인 셸 : 사용자의 로그인 셸 지정, 우분투는 배시 셸을 기본 셸로 이용

(2) /etc/shadow 파일 구조

  • 사용자 암호에 관한 정보를 별도로 관리하는 파일

로그인ID : 암호(패스워드) : 최종 변경일 : MIN : MAX : WARNING : INACTIVE : EXPIRE : flag $ sudo cat /etc/shadow | grep user1

  1. 로그인 ID : 사용자 계정 이름

  2. 암호(패스워드) : 실제 비밀번호가 암호화되어 저장

  3. 최종 변경일 : 암호의 마지막 변경된 날짜 저장, 1970.01.01일 기준으로 날수 기록 (18834일 51년 219일) -> 2021년 8월 00일)

  4. MIN : MIN은 암호 변경 후, 사용해야 하는 최소 기간 저장 (0)

  5. MAX : 암호를 사용할 수 있는 최대 기간 저장 (99999)

  6. WARNING : 암호가 만료되기 전에 경고를 시작하는 날수 저장 (7)

  7. INACTIVE : 암호 만료 이후에도 이 항목에 지정한 날수 동안은 로그인 가능

  8. EXPIRE : 사용자 계정이 만료되는 날 저장

  9. Flag : 향후 사용 목적으로 비워둔 항목

(3) /etc/login.defs 파일

  • 사용자 계정 설정 관련 기본 값을 정의한 파일
  • PASS_MAX_DAYS_PASS_MIN_DAYS, PASS_WARN_AGE, UDI_MIN, UID_MAX, GID_MIN, GID_MAX, UMASK

/etc/login.defs 파일의 내용

항목 기본값 의미
PASS_MAX_DAYS 99999 패스워드 에이징
PASS_MIN_DAYS 0 패스워드 에이징
PASS_WARN_AGE 7 패스워드 에이징
UID_MIN, UID_MAX 1000~60000 사용자 계정의 UID 범위
GID_MIN, GID_MAX 1000~60000 사용자 계정의 UID 범위
UMASK 0 0 umask 값 설정

(4) /etc/group 파일 구조

  • 그룹에 대한 정보 저장
  • /etc/passwd 파일의 GID 에 지정된 그룹이 기본 그룹(1차 그룹)이며, 사용자가 속하는 2차 그룹은 /etc/group 파일에 지정
  1. 그룹 이름 : 그룹 이름

  2. x : 그룹 암호 저장, 실제 /etc/gshadow 파일(리눅스에서 추가)에 그룹 암호 저장

  3. GID : 그룹을 식별하는 번호 (etc/group 파일에 저장)

  4. 그룹 멤버 : 그룹에 속한 멤버들의 사용자 계정 이름 쉼표(,)로 사용자 구별

그룹 이름 : x : GID : 그룹 멤버 $ cat /etc/group | grep user1

(5) /etc/gshadow 파일 구조

  • 그룹의 암호 저장
  • 원래 유닉스에서 없는 파일로 리눅스에서 별도로 만든 파일
  1. 그룹 이름 : 그룹 이름

  2. 그룹 암호 : 암호화된 그룹 암호

  3. 관리자 : 그룹 암호나 멤버를 바꿀 수 있는 계정으로 여러 개일 경우 쉼표(,)로 구분

  4. 그룹 멤버 : 그룹에 속한 멤버들의 사용자 계정 이름 쉼표(,)로 사용자 구별

그룹 이름 : 그룹 암호 : 관리자 : 그룹 멤버 $ sudo cat /etc/gshadow | grep user1


2. 사용자 계정 관리 명령

useradd, adduser -사용자 계정 생성하기

useradd  
기능 사용자 계정을 생성한다
형식 useradd [옵션][로그인 ID]
옵션 -u uid : UID를 지정한다, -o : UID의 중복을 허용한다, -g gid : 기본 그룹의 GID를 지정한다, -G gid : 2차 그룹의 GID를 지정한다, -d 디렉터리명 : 홈 디렉터리를 지정한다, -s 셸 : 기본 셸을 지정한다, -c 설명 : 사용자의 이름 등 부가적인 설명을 지정한다, -D : 기본값을 설정하거나 출력한다, -e 유효 기간 : EXPIRE 항목을 설정한다(YYYY-MM-DD), -f 비활성 일수 : INACTIVE 항목을 설정한다, -k 디렉터리 : 계정 생성 시 복사할 초기 파일이나 디렉터리르 설정해놓은 디렉터리를 지정한다, -m : 홈 디렉터리를 생성한다
사용 예 useradd user2 , useradd -m -d /home/user2 user2 , useradd -m -d /home/user2 -u 2000 -g 100 -s /bin/ksh user2 , useradd -D -d /export/home

(1) useradd 명령

옵션 없이 사용자 계정 생성 (user2 계정 생성)

$ sudo useradd user2

  • 장점: 단순함
  • 단점: 기본 셸이 본 셸, 홈 디렉터리(/home/user2) 생성 안됨, passwd 생성 안됨

다양한 옵션을 지정하여 사용자 계정 생성 (user3 계정 생성)

$ sudo useradd -s /bin/bash -m -d /home/user3 user3

  • 기본 셸을 bash로 지정 (-s /bin/bash)
  • 홈 디렉터리 생성 명령 (-m)
  • 홈 디렉터리 이름 지정 (-d /home/user3)

user3passwd를 설정함 (암호 입력)

$ sudo passwd user3

$ su user3
# user3 사용자로 전환 (암호 입력)

$ exit
# 다시 user1 사용자로 빠져 나가기

useradd, adduser -사용자 계정 생성하기

adduser useradd 보다 조금 더 편리
기능 사용자 계정을 생성한다
형식 adduser [옵션] 로그인 ID
옵션 --uid UID : UID를 지정한다, --gid GID : 기본 그룹의 GID를 지정한다, --home DIR : 홈 디렉터리를 지정한다, --shell 셸 : 기본 셸을 지정한다, --gecos 설명 : 사용자의 이름 등 부가적인 설명을 지정한다
사용 예 adduser user5 , adduser --uid 2001 user5 , adduser --home /home/user5 -u 2001 -gid 2100 --s /bin/sh user5

(2) adduser 명령

옵션 없이 사용자 계정 생성 (user4 계정 생성)

$ sudo adduser user4

/etc/skel 디렉터리 역할 (useradd, adduser 모두 해당)

  • 사용자 계정의 홈 디렉터리에 공통으로 배포해야 할 파일을 /etc/skel 디렉터리에 파일을 만들어 놓으면 사용자 계정 생성 시에 자동으로 복사
  • .profile(=.bash_profile 또는 .bash_login), .bash_logout, .bashrc의 3개 파일이 사용자 계정이 생성될 때, 홈 디렉터리에 복사

.bash_history : 내가 쓴 명령어 기록

사용자 계정 정보 수정하기 (usermod 명령)

  • UID, GID, 홈 디렉터리, 기본 셸, 설명, 로그인 ID 등 계정 관련 모든 정보 수정가능
usermod  
기능 사용자 계정을 정보를 수정한다
형식 usermod [옵션] 로그인 ID
옵션 -u uid : UID를 수정한다, -o : UID의 중복을 허용한다, -g gid : 기본 그룹의 수정한다, -G gid : 2차 그룹을 수정한다, -d 디렉터리명 : 홈 디렉터리를 수정한다, -s 셸 : 기본 셸을 수정한다, -c 설명 : 부가적인 설명을 수정한다, -f inactive : 계정 비활성화(INACTIVE) 날짜를 수정한다, -e expire : 계정 만료(EXPIRE) 날짜를 수정한다, -l 새 로그인 이름 : 새 로그인 이름으로 계정 이름을 바꾼다
사용 예 usermod ou 1111 user1 , usermod -l user111 user1 , usermod -d /home/user111 user1

UID 수정하기 (sudo usermod -u 2002 user3)

  • user3 계정의 UID를 1002번에서 2002번으로 수정

기본 셸 수정하기 (sudo usermod -s /bin/sh user3)

  • user3 계정의 UID를 1002번에서 2002번으로 수정

홈 디렉터리 변경하기 (sudo usermod -d /home/user41 user4)

  • user4 계정의 홈 디렉터리를 /home/user4 에서 /home/user41로 변경
  • 단, /home/user41 디렉터리는 수작업으로 생성하고 파일을 복사해주어야 함

로그인 ID 변경하기 (sudo usermod -l user41 user4)

  • user4 계정으로 로그인 ID를 user4에서 user41로 변경

userdel -사용자 계정 삭제하기

userdel  
기능 사용자 계정을 삭제한다
형식 userdel [옵션] 로그인 ID
옵션 -r : 홈 디렉터리와 메일 디렉터리를 삭제한다, -f : 사용자가 로그인 중이어도 강제로 삭제한다
사용 예 userdel user4 , userdel -r user4

사용자 계정만 삭제하기 (not good)

user4 계정만 삭제 ($ sudo userdel user4)

$ sudo userdel user4
$ ls /home
user1 user3 user4

사용자 계정과 홈 디렉터리 삭제하기

  • userdel 명령에서 -r 옵션을 지정하면 사용자 계정과 홈 디렉터리가 함께 삭제
  • $ sudo userdel -r user3
  • (참고) 홈 디렉터리가 아니라 다른 곳에 위치한 user3 사용자 계정의 파일 검색하여 삭제
  • $ sudo find / -user user3 -exec rm -r {} \; # user3 가 만든 find 파일을 모두 지움

3. 그룹 관리 명령

groupadd, addgroup -그룹 생성하기

groupadd  
기능 그룹을 생성한다
형식 groupadd [옵션] 그룹명
옵션 -g gid : 그룹의 GID를 지정한다, -o : GID의 중복을 허용한다
사용 예 groupadd gtest , groupadd -g 2013 gtest , groupadd -g 2013 -o gtest
addgroup  
기능 그룹을 생성한다
형식 addgroup [옵션] 그룹명
옵션 --gid GID : 그룹의 GID를 지정한다
사용 예 addgroup gtest , addgroup --gid 2013 gtest

(1) groupadd 명령

옵션 없이 그룹 생성 (gtest1 그룹 생성)

$ sudo groupadd gtest1 옵션이 없으면 GID를 가장 마지막 번호의 다음 번호로 자동 설정

$ sudo groupadd gtest1
$ cat /etc/group | grep gtest
gtest1:x:1004:

특정 GID를 지정하여 gtest2 그룹 생성 (-g 옵션 사용)

$ sudo groupadd -g 3000 gtest2

$ sudo groupadd -g 3000 gtest2
$ cat /etc/group | grep gtest
gtest1:x:1004:
gtest2:x:3000:

(2) addgroup 명령

옵션 없이 그룹 생성 (gtest3 그룹 생성)

$ sudo addgroup gtest3 옵션이 없으면 GID를 중간에 비어있는 번호로 자동 설정

$ sudo addgroup gtest3
그룹 'gtest3' (GID 1002) 추가 ...
완료.
$ tail -4 /etc/group
gtest1:x:1004:
gtest2:x:3000:
gtest3:x:1002:

특정 GID를 지정하여 그룹 생성 (--gid 옵션 사용)

$ sudo addgroup --gid 3001 gtest4

$ sudo addgroup --gid 3001 gtest4
그룹 'gtest4' (GID 3001) 추가 ...
완료.
$ grep gtest /etc/group
gtest1:x:1004:
gtest2:x:3000:
gtest3:x:1002:
gtest4:x:3001:

groupmod -그룹 정보 수정하기

groupmod  
기능 그룹 정보를 수정한다
형식 groupmod [옵션] 그룹명
옵션 -g gid : 그룹의 GID를 수정한다, -o : GID의 중복을 허용한다, -n 그룹명 : 그룹명을 다른 이름으로 바꾼다
사용 예 groupmod -g 3001 gtest , groupmod -g 3001 -o gtest2 , groupmod -n gtest1 gtest

GID 바꾸기 (-g 옵션)

  • gtest1 그룹의 GID를 2500으로 변경 $ sudo groupmod -g 2500 gtest1
    $ sudo groupmod -g 2500 gtest1
    $ grep gtest /etc/group
    gtest1:x:2500:
    gtest2:x:3000:
    gtest3:x:1002:
    gtest4:x:3001:
    

그룹 이름 바꾸기 (-n 옵션)

  • gtest1 그룹 이름을 gtest11으로 변경
    $ sudo groupmod -n gtest11 gtest1
    $ grep gtest1 /etc/group
    $ grep gtest11 /etc/group
    gtest11:x:2500:
    

groupdel -그룹 삭제하기

groupdel  
기능 그룹을 삭제한다
형식 groupdel 그룹명
사용 예 groupdel gtest
  • gtest4 그룹 삭제 $ sudo groupdel gtest4
    $ sudo groupdel gtest4
    $ grep gtest /etc/group
    gtest2:x:3000:
    gtest3:x:1002:
    gtest11:x:2500:
    

gpasswd -그룹 암호 설정하고 사용하기

  • 그룹에 멤버 추가 및 삭제, 암호 설정에 사용
gpasswd  
기능 /etc/group, /etc/gshadow 파일을 관리한다
형식 gpasswd [옵션] 그룹명
옵션 -a 사용자 계정 : 사용자 계정을 그룹에 추가한다, -d 사용자 계정 : 사용자 계정을 그룹에서 삭제한다, -r : 그룹 암호를 삭제한다
사용 예 gpasswd gtest1 , gpasswd -a test1 gtest1 , gpasswd -r gtest1

그룹에 멤버 추가하기 (-a 옵션)

  • gtest11 그룹에 test01 , test02 계정 추가 (먼저 test01 , test02 사용자 추가) $ sudo gpasswd -a test01 gtest11 $ sudo gpasswd -a test02 gtest11
$ cat /etc/group | grep gtest
gtest2:x:3000:
gtest3:x:1002:
gtest11:x:2500:

$ sudo gpasswd -a test01 gtest11
사용자 test01을(를) gtest11 그룹에 등록 중

$ sudo gpasswd -a test02 gtest11
사용자 test02을(를) gtest11 그룹에 등록 중

$ cat /etc/group | grep test
gtest2:x:3000:
gtest3:x:1002:
gtest11:x:2500:test01,test02

그룹의 멤버 삭제하기 (-d 옵션)

  • gtest11 그룹에서 test02 계정 삭제 $ sudo gpasswd -d test02 gtest11
    $ sudo gpasswd -d test02 gtest11
    사용자 test02을(를) 그룹 gtest11에서 제거 하는 중
    $ cat /etc/group | grep gtest
    gtest2:x:3000:
    gtest3:x:1002:
    gtest11:x:2500:test01
    

그룹 암호 설정하기 (gtest11 그룹에 암호 설정)

$ sudo gpasswd gtest11

  • 그룹 암호는 사용자 계정의 소속 그룹을 자신이 현재 속해 있는 1, 2차 그룹이 아닌 다른 그룹으로 변경할 때 사용
  • ! 는 암호가 잠겨있다는 뜻
$ sudo gpasswd gtest11
gtest11 그룹의 암호를 바꾸는 중
새 암호 :
새 암호를 다시 입력하십시오 :

$ cat /etc/gshadow | grep gtest
cat: /etc/gshadow: 허가 거부

$ sudo cat /etc/gshadow | grep gtest
gtest2:!::
gtest3:!::
gtest11:$6~~~ ..

그룹 암호 삭제하기 (-r 옵션) (gtest11 그룹의 암호 삭제)

$ sudo gpasswd -r gtest11

현재 소속 그룹 확인 명령 (id)

$ id

  • user1의 1차 그룹은 user1(1000)이고 2차 그룹은 adm, cdrom, sudo 등이 있음
    $ id
    

4. 사용자 정보 관리 명령

UIDEUID (Effective UID)

  • UID는 사용자가 로그인 할 때 사용한 계정의 ID를 의미
  • EUID는 현재 명령을 수행하는 주체의 ID를 의미

실행 파일에 setuid 가 설정되어 있는 경우

해당 실행 파일 소유자의 UIDEUID가 됨

su 명령을 사용하여 다른 계정으로 전환한 경우 (su user2)

사용자가 로그인하면 처음에는 UIDEUID가 같은 값을 가짐. 하지만 su 명령을 사용하여 다른 사용자로 전환하면 UIDEUID가 달라짐

who -사용자 로그인 정보 확인하기

  • 옵션 없이 사용하면 사용자 이름, 사용자가 접속한 단말기 번호, 로그인 시간, 외부 네트워크에서 접속했을 경우 외부 컴퓨터 이름이나 IP 주소 출력 (UID)
who  
기능 현재 시스템을 사용하는 사용자의 정보를 출력한다
형식 who [옵션]
옵션 -q : 사용자만 출력한다, -H : 출력 항목의 제목도 함께 출력한다, -b : 마지막으로 재시작한 날짜와 시간을 출력한다, -m : 현재 사용자 계정의 정보를 출력한다, -r : 현재 런레벨을 출력한다
사용 예 who , who -b

who 명령 -현재 시스템을 사용하는 사용자의 정보 출력

  • 로그인 한 사용자의 정보를 각 항목의 제목과 함께 출력
  • $ who -H

  • 로그인 한 사용자의 수와 계정 이름 출력
  • $ who -q

  • 시스템이 마지막으로 부팅한 날짜와 시간 정보 출력
  • $ who -b
vihaan@vihaan:~$ who
vihaan   tty2         2023-12-11 17:33 (tty2)
vihaan@vihaan:~$ who -H
이름      행            시각              설명
vihaan   tty2         2023-12-11 17:33 (tty2)
vihaan@vihaan:~$ who -q
vihaan
사용자의 수=1
vihaan@vihaan:~$ who -b
         시스템 부팅 2023-12-11 17:33
vihaan@vihaan:~$ 

w 명령 -현재 시스템을 사용하는 사용자의 정보와 작업 정보 출력

$ w (UID) -w는 UID 기준으로 출력

w  
기능 현재 시스템을 사용하는 사용자의 정보와 작업 정보를 출력한다
형식 w [사용자명]
사용 예 w user1 : su로 유저를 바꿔도 user1(UID기준)으로 출력한다

last 명령 -사용자 이름, 로그인 시간, 로그아웃 시간, 터미널 번호, IP 주소 출력

$ last (UID)

last  
기능 시스템에 로그인하고 로그아웃한 정보를 출력한다
형식 last
$ last
vihaan   tty2         tty2             Mon Dec 11 17:33    gone - no logout
reboot   system boot  5.15.0-89-generi Mon Dec 11 17:33   still running
vihaan   tty2         tty2             Mon Dec 11 16:58 - down   (00:01)
reboot   system boot  5.15.0-89-generi Mon Dec 11 16:57 - 16:59  (00:01)
vihaan   tty2         tty2             Sat Dec  9 17:12 - down  (1+23:41)
reboot   system boot  5.15.0-89-generi Sat Dec  9 17:12 - 16:53 (1+23:41)
vihaan   tty2         tty2             Tue Dec  5 09:10 - down   (02:44)
reboot   system boot  5.15.0-83-generi Tue Dec  5 09:09 - 11:55  (02:45)
vihaan   tty2         tty2             Mon Dec  4 16:06 - down   (03:24)
reboot   system boot  5.15.0-83-generi Mon Dec  4 16:06 - 19:30  (03:24)
vihaan   tty2         tty2             Tue Nov 28 09:09 - down   (01:44)
reboot   system boot  5.15.0-83-generi Tue Nov 28 09:08 - 10:54  (01:46)
vihaan   tty2         tty2             Mon Nov 27 16:05 - down   (01:48)

whoami, id -UID와 EUID 확인하기

  • UID 출력 (who, w, last)
  • EUID 출력 (whoami, id)
vihaan@vihaan:~$ id
uid=1000(vihaan) gid=1000(vihaan) groups=1000(vihaan),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd)

vihaan@vihaan:~$ who
vihaan   tty2         2023-12-11 17:33 (tty2)

vihaan@vihaan:~$ su test01
암호: 
test01@vihaan:/home/vihaan$ whoami
test01

test01@vihaan:/home/vihaan$ id
uid=1002(test01) gid=1004(test01) groups=1004(test01),3500(gtest10)

test01@vihaan:/home/vihaan$ who
vihaan   tty2         2023-12-11 17:33 (tty2)

test01@vihaan:/home/vihaan$ 

groups 명령 -소속 그룹 확인하기

  • 사용자 계정이 속한 그룹을 출력
  • $ groups , $ groups test01
vihaan@vihaan:~$ groups
vihaan adm cdrom sudo dip plugdev lxd

vihaan@vihaan:~$ groups vihaan
vihaan : vihaan adm cdrom sudo dip plugdev lxd

vihaan@vihaan:~$ groups test01
test01 : test01 gtest10

vihaan@vihaan:~$ 

passwd 명령 -사용자 계정의 암호 수정

passwd  
기능 사용자 계정의 암호를 수정한다
형식 passwd [옵션] [사용자 계정]
옵션 -l 사용자 계정 : 지정한 계정의 암호를 잠근다, -u 사용자 계정 : 암호 잠금을 해제한다, -d 사용자 계정 : 지정한 계정의 암호를 삭제한다
  • 암호 만들기 $ sudo passwd test01

  • 암호 잠그기 (-l 옵션) /etc/shadow 파일을 보면 암호의 맨 앞에 !가 있는데 이는 암호가 잠겼음을 의미 $ sudo passwd -l test01

  • 암호 해제하기 (-u 옵션) $ sudo passwd -u test01

  • 암호 삭제하기 (-d 옵션) $ sudo passwd -d test01

사용자 계정의 암호 수정 (passwd 명령)

vihaan@vihaan:~$ sudo cat /etc/shadow | grep test01
[sudo] vihaan 암호: 
test01:$y$j9T$4f/OqLa.dtH/IEu.x9CJl.$S8Fj0n1CBSx6k5S7WXHWJcU2bTVIYLB2nkrjyokiG92:19695:0:99999:7:::

vihaan@vihaan:~$ sudo passwd -l test01
passwd: password expiry information changed.

vihaan@vihaan:~$ sudo cat /etc/shadow | grep test01
test01:!$y$j9T$4f/OqLa.dtH/IEu.x9CJl.$S8Fj0n1CBSx6k5S7WXHWJcU2bTVIYLB2nkrjyokiG92:19695:0:99999:7:::

vihaan@vihaan:~$ sudo passwd -u test01
passwd: password expiry information changed.

vihaan@vihaan:~$ sudo cat /etc/shadow | grep test01
test01:$y$j9T$4f/OqLa.dtH/IEu.x9CJl.$S8Fj0n1CBSx6k5S7WXHWJcU2bTVIYLB2nkrjyokiG92:19695:0:99999:7:::

vihaan@vihaan:~$ sudo passwd -d test01
passwd: password expiry information changed.

vihaan@vihaan:~$ sudo cat /etc/shadow | grep test01
test01::19695:0:99999:7:::

vihaan@vihaan:~$ 

chown, chgrp 명령 -파일 및 디렉터리의 소유자와 소유 그룹 변경하기

파일과 디렉터리는 생성한 사용자 계정과 그룹으로 파일 소유자와 그룹이 설정됨

chown  
기능 파일과 디렉터리의 소유자와 소유 그룹을 변경한다
형식 chown [옵션] 사용자 계정 파일명/디렉터리명
옵션 -R : 서브 디렉터리의 소유자와 소유 그룹도 변경한다
사용 예 chown user2 file1 , chown user2:grp01 file1 , chown -R user2 file1
chgrp  
기능 파일과 디렉터리의 소유 그룹을 변경한다
형식 chgrp [옵션] 그룹명 파일명/디렉터리명
옵션 -R : 서브 디렉터리의 소유 그룹도 변경한다
사용 예 chgrp han01 file1 , `chgrp -R han01 file1

chown 명령 사용 예(1)

1) linux_ex 디렉터리에 ch10 디렉터리 생성 2) ch10 디렉터리에 temp 디렉터리 생성 3) ch10 디렉터리에 /etc/hosts 파일과 /etc/services 파일 복사 4) temp 디렉터리, hosts 파일, services 파일의 소유자 확인

$ linux_ex
$ mkdir ch10
$ cd ch10

vihaan@vihaan:~/linux_ex/ch10$ mkdir temp
vihaan@vihaan:~/linux_ex/ch10$ cp /etc/hosts .
vihaan@vihaan:~/linux_ex/ch10$ cp /etc/services .
vihaan@vihaan:~/linux_ex/ch10$ ls -l

-rw-r--r-- 1 vihaan test01   221 12월 12 10:36 hosts
-rw-r--r-- 1 vihaan vihaan 12813 12월 12 10:36 services
drwxrwxr-x 2 vihaan vihaan  4096 12월 12 10:36 temp
vihaan@vihaan:~/linux_ex/ch10$ 

chown 명령 사용 예(2)

1) hosts 파일의 소유자를 test01 로 바꿈 (root 권한 필요) 2) hosts 파일의 소유자를 다시 user1로, 그룹은 test01 동시에 바꾸기

vihaan@vihaan:~/linux_ex/ch10$ sudo chown test01 hosts
vihaan@vihaan:~/linux_ex/ch10$ ls -l

-rw-r--r-- 1 test01 test01   221 12\uc6d4 12 10:36 hosts
-rw-r--r-- 1 vihaan vihaan 12813 12\uc6d4 12 10:36 services
drwxrwxr-x 2 vihaan vihaan  4096 12\uc6d4 12 10:36 temp

vihaan@vihaan:~/linux_ex/ch10$ sudo chown vihaan:test01 hosts
vihaan@vihaan:~/linux_ex/ch10$ ls -l

-rw-r--r-- 1 vihaan test01   221 12\uc6d4 12 10:36 hosts
-rw-r--r-- 1 vihaan vihaan 12813 12\uc6d4 12 10:36 services
drwxrwxr-x 2 vihaan vihaan  4096 12\uc6d4 12 10:36 temp

vihaan@vihaan:~/linux_ex/ch10$ 

chown 명령 사용 예(3)

1) temp 디렉터리에 /etc/services 파일 복사 2) temp 디렉터리와 temp 디렉터리 내의 파일까지 한 번에 소유자를 test01 로 소유 그룹을 test01 로 변경

vihaan@vihaan:~/linux_ex/ch10$ cp services ./temp/.
vihaan@vihaan:~/linux_ex/ch10$ ls -l temp
-rw-r--r-- 1 vihaan vihaan 12813 12월 12 10:42 services

vihaan@vihaan:~/linux_ex/ch10$ sudo chown -R test01:test01 temp
vihaan@vihaan:~/linux_ex/ch10$ ls -lR temp

temp:
-rw-r--r-- 1 test01 test01 12813 12월 12 10:42 services
vihaan@vihaan:~/linux_ex/ch10$ 

chgrp 명령

  • temp 디렉터리와 그 아래의 파일까지 한 번에 그룹을 user1로 변경
vihaan@vihaan:~/linux_ex/ch10$ sudo chgrp -R vihaan temp

vihaan@vihaan:~/linux_ex/ch10$ ls -lR temp
temp:
합계 16
-rw-r--r-- 1 test01 vihaan 12813 12월 12 10:42 services

  • sudo chown : user1 hosts (그룹만 바꾸는 것은 chown도 가능)

요약

  • 사용자 계정 관련 파일 (/etc/passwd, /etc/shadow, /etc/group, /etc/shadow, /etc/login.defs)
  • 사용자 계정 관리 명령 (useradd, adduser, usermod, userdel)
  • 그룹 관리 명령 (groupadd, addgroup, groupmod, groupdel, gpasswd, newgrp)
  • 사용자 정보 관리 명령 (who, w, last, whomai, id, groups, passwd, chown, chrgp)

태그: ,

카테고리:

업데이트:

댓글남기기