[Linux] 10. 사용자 관리
1. 사용자 계정 관련 파일
사용자 관리
- 리눅스는 다중 사용자 시스템이므로 사용자를 구별하고 사용자에게 적절한 자원을 할당해주는 방법이 필요
- 사용자 계정은 사용자가 시스템에 접근할 수 있는 유일한 방법
(1) /etc/passwd
파일
- 사용자 계정 정보가 저장된 기본 파일
- 한 행에 사용자 한 명에 대한 정보가 기록 (7개 항목 저장)
로그인ID : x : UID : GID : 설명 : 홈 디렉터리 : 로그인 셸
$ cat /etc/passwd | grep user1
-
로그인 ID
: 사용자 계정 이름, 32자를 넘을 수 없으며 8자로 제한하는 것이 좋음 -
x
: 초기 유닉스에서 사용자 암호 저장, 최근/etc/shadow
에 별도로 암호 저장 UID
: 사용자 ID (시스템이 사용자를 구별하기 위해 사용하는 번호)- 0~999번, 65534번은 시스템 사용자를 위한 UID로 예약
- ex) 0: root, 1: daemon, 2: bin, 7:lp 등
- 사용자들은 일반적으로 UID 1000번부터 할당
- 로그인 ID가 다르더라도 UID가 같으면 리눅스 시스템은 같은 사용자로 판단
-
GID
: 그룹 ID, 시스템에 등록된 그룹에 대한 정보는/etc/group
파일에 저장 -
설명
: 사용자 실명, 부서명, 연락처 등 사용자에 대한 일반적인 정보 기록 -
홈 디렉터리
: 사용자 계정에 할당된 홈 디렉터리의 절대 경로 기록 로그인 셸
: 사용자의 로그인 셸 지정, 우분투는 배시 셸을 기본 셸로 이용
(2) /etc/shadow
파일 구조
- 사용자 암호에 관한 정보를 별도로 관리하는 파일
로그인ID : 암호(패스워드) : 최종 변경일 : MIN : MAX : WARNING : INACTIVE : EXPIRE : flag
$ sudo cat /etc/shadow | grep user1
-
로그인 ID
: 사용자 계정 이름 -
암호(패스워드)
: 실제 비밀번호가 암호화되어 저장 -
최종 변경일
: 암호의 마지막 변경된 날짜 저장, 1970.01.01일 기준으로 날수 기록 (18834일 51년 219일) -> 2021년 8월 00일) -
MIN
: MIN은 암호 변경 후, 사용해야 하는 최소 기간 저장 (0) -
MAX
: 암호를 사용할 수 있는 최대 기간 저장 (99999) -
WARNING
: 암호가 만료되기 전에 경고를 시작하는 날수 저장 (7) -
INACTIVE
: 암호 만료 이후에도 이 항목에 지정한 날수 동안은 로그인 가능 -
EXPIRE
: 사용자 계정이 만료되는 날 저장 -
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
파일에 지정
-
그룹 이름
: 그룹 이름 -
x
: 그룹 암호 저장, 실제/etc/gshadow
파일(리눅스에서 추가)에 그룹 암호 저장 -
GID
: 그룹을 식별하는 번호 (etc/group 파일에 저장) -
그룹 멤버
: 그룹에 속한 멤버들의 사용자 계정 이름 쉼표(,)로 사용자 구별
그룹 이름 : x : GID : 그룹 멤버
$ cat /etc/group | grep user1
(5) /etc/gshadow
파일 구조
- 그룹의 암호 저장
- 원래 유닉스에서 없는 파일로 리눅스에서 별도로 만든 파일
-
그룹 이름
: 그룹 이름 -
그룹 암호
: 암호화된 그룹 암호 -
관리자
: 그룹 암호나 멤버를 바꿀 수 있는 계정으로 여러 개일 경우 쉼표(,)로 구분 -
그룹 멤버
: 그룹에 속한 멤버들의 사용자 계정 이름 쉼표(,)로 사용자 구별
그룹 이름 : 그룹 암호 : 관리자 : 그룹 멤버
$ 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
)
user3
의 passwd
를 설정함 (암호 입력
)
$ 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. 사용자 정보 관리 명령
UID
와 EUID
(Effective UID
)
UID
는 사용자가 로그인 할 때 사용한 계정의 ID를 의미EUID
는 현재 명령을 수행하는 주체의 ID를 의미
실행 파일에 setuid
가 설정되어 있는 경우
해당 실행 파일 소유자의 UID
가 EUID
가 됨
su
명령을 사용하여 다른 계정으로 전환한 경우 (su user2
)
사용자가 로그인하면 처음에는 UID
와 EUID
가 같은 값을 가짐. 하지만 su
명령을 사용하여 다른 사용자로 전환하면 UID
와 EUID
가 달라짐
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
)
댓글남기기