시스템 명령어(계속)
* 파이프 (|) : 한 명령의 출력을 다른 명령의 입력으로 리디렉션
ex) ls -al | sort | more
* df (Disk File system) : 하드 디스크의 용량이 얼마나 남아있는지 확인
>> df [옵션]
-a : 디폴트로 생략된 0 블록 크기의 파일 시스템도 보여줌
-i : 파일 크기를 블록 대신 inode로 디스크 정보를 보여줌
-k : 파일 크기를 킬로바이트(kb)로 보여줌
-T : 파일 시스템의 종류와 함께 디스크 정보를 보여줌
-t : fstype 값을 가진 파일 시스템에 대한 디스크 정보
-h : 쉬운 용량 표시 단위로 표기 (예:1G, 25M 1K)
* du (Disk Usage) : 사용한 디스크 용량에 대한 정보 제공
>> du [옵션][디렉토리명]
-a : 해당 경로에 대한 사용한 디스크 용량 표시
-k : 용량 표시 단위를 킬로 바이트(kb)로 표시
-m : 용량 표시를 메가 바이트(MB)로 표시
* find : 원하는 파일 위치 찾기
-amin n : n분 전에 마지막으로 액세스된 파일
-atime n : n*24시간 전에 마지막으로 액세스된 파일
-cmin n : n분 전에 마지막으로 변경된 파일
-ctime n : n*24시간 전에 마지막으로 변경된 파일
-empty : 비어있는 파일이나 디렉토리
-name <pattern> : Pattern으로 주어진 파일
-newer 파일 : “파일”보다 최신의 파일
* grep (Global Regular Expression Print) : 지정된 파일에 대해서 일치하는 라인 출력
>> grep [파일명(들)]
ex) cat /etc/passwd | grep fedora
2. 시스템 상태 확인 명령
1) 프로세스(Process)의 개념
* 프로세스(Process) : 주 기억장치에서 운영체제에 의해 실행 중인 프로그램
* 프로세스 번호 : 시스템에서 자동적으로 프로세스 식별번호(PID : Process Identifier Number)를 할당
>> 0 ~ 30,000개
2) 프로세스 상태 확인 명령
* ps (Process Status) : 프로세스의 상태 확인
>> ps [옵션][인수]
-a : All, 사용자의 단말기에 관련된 모든 프로세스의 상태정보 표시
-j : “job” 형식으로 표시
-l : Long, 자세하게 모든 상태 정보를 표시
-u 사용자명 : User, 기술된 사용자의 상태 정보를 표시
-s : 시그널 포맷으로 표시
-m : 메모리 정보 표시
-x : 터미널 제어 없이 프로세스 현황 표시
※ ps 옵션은 -(하이푼) 잘 안 붙이고 사용.
* kill : 프로세스 종료
>> kill [옵션] PID(들)
-1, -HUP : 프로세스를 재활성화
-9 : 프로세스 강제 kill
ex) ps ax | grep cupsd
3) 그 외 시스템 상태 확인 명령
* finger
- 시스템 사용자의 개인 정보를 나타내는 명령
- 상대방에게 메일을 보내기 위하여 메일을 수신할 사람의 login 명을 찾는 용도로 사용
- 여러 명이 사용하는 Multi-User Mode에서 다른 사용자에 대한 정보를 알려주며, who 명령보다는 정보들이 자세하게 나타남
ex) $ finger –s fedora
>> finger 옵션
-s : 간단한 형식으로 출력
-l : 자세한 형식으로 출력
-p : 설정된 계획을 제외하고 출력시킬 때 사용
>> finger의 필드와 의미
Login : login 할 때의 사용자 id
Name : 사용자의 이름
TTY : 터미널 이름
Idle : 아무 일도 하지 않는 시간
When : login한 시간
Where : 원격 시스템에서 login한 경우 원격 시스템의 호스트 이름
* tty : 단말기명 확인
* whereis : 명령어의 경로명 확인
>> whereis [명령어]
* time : 명령어의 실행 시간 측정
>> time [명령어]
* ping : 원격지 호스트의 동작 여부 확인
>> ping [원격지 호스트명]
사용자 계정 관리
1. 계정(account)의 개요
>> 건물명 Linux
>> 504호 주택
- 계정 생성 (adduser)
- 주소 : /home/504
- 소유권 이전
2. 사용자 계정 생성
1) adduser
# adduser(or useradd) 계정명
ex)
# adduser ydvt
# cat /etc/passwd | grep ydvt -> /etc/passwd 파일에서 ydvt 키워드와 일치하는 줄 출력
2) adduser 옵션
-c 설명 : 패스워드 파일에 새로운 사용자 설명 추가
-d 디렉토리 : 새 계정에 대한 디렉토리 위치 지정
-e 유효기간 : 지정된 날짜에 사용자의 계정 삭제
-f 비활성일수 : 패스워드가 만기된 후 계정이 영구히 말소될 때까지의 시간
-u uid : 사용자의 ID 지정
-s shell : 사용자의 로그인 shell 지정
-n : 사용자 계정 추가 기본 모드를 지정하지 않을 때
-G [그룹, …] : 사용자를 기본 그룹 이외의 다른 그룹에 추가할 때
ex)
# adduser ydvt1 -c "Developer Course in Yedam"
실습)
[root@localhost ~]# adduser ydvt1 -c "Developer Course in Yedam"
[root@localhost ~]# cat /etc/passwd | grep ydvt1
ydvt1:x:1002:1002:Developer Course in Yedam:/home/ydvt1:/bin/bash
계정명|패스워드|PID| 설명 | 계정 위치 | 쉘(shell)
# mkdir /users
# adduser –d /users/ydvt2 ydvt2
# cat /etc/passwd | grep ydvt2
ydvt2:x:1003:1003::/users/ydvt2:/bin/bash
※ /users라는 디렉토리가 없는 상태에서 /users/ydvt2 디렉토리를 ydvt2 사용자의 홈 디렉토리로 지정하면 계정이 생성되지 않음
실습)
[root@localhost ~]# mkdir /users
[root@localhost ~]# adduser -d /users/ydvt2 ydvt2
[root@localhost ~]# cat /etc/passwd | grep ydvt2
ydvt2:x:1003:1003::/users/ydvt2:/bin/bash
# adduser ydvt3 –u 530 –d /users/ydvt3
실습)
[root@localhost ~]# adduser ydvt3 -u 530 -d /users/ydvt3
[root@localhost ~]# cat /etc/passwd | grep ydvt3
ydvt3:x:530:1004::/users/ydvt3:/bin/bash
# adduser ydvt4 –u 540 –d /users/ydvt4 –s /bin/false
실습)
[root@localhost ~]# adduser ydvt4 -u 540 -d /users/ydvt4 -s /bin/false
[root@localhost ~]# cat /etc/passwd | grep ydvt*
ydvt:x:1001:1001::/home/ydvt:/bin/bash
ydvt1:x:1002:1002:Developer Course in Yedam:/home/ydvt1:/bin/bash
ydvt2:x:1003:1003::/users/ydvt2:/bin/bash
ydvt3:x:530:1004::/users/ydvt3:/bin/bash
ydvt4:x:540:1005::/users/ydvt4:/bin/false
* 새로 생성된 계정 디렉토리에 있는 숨김 파일은 계정 추가시 /etc/skel 디렉토리 내에 있는 파일들이 사용자 홈 디렉토리로 복사됨.
3) adduser 명령 기본 설정값 변경
* 사용자 생성 명령어의 기본 설정값 확인
# useradd -D (= adduser -D)
실습)
[root@localhost ~]# adduser -D -b /users
[root@localhost ~]#
[root@localhost ~]# useradd -D
GROUP=100
HOME=/users
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
# adduser –D –s /bin/false
※ shell을 false로 바꿔버리면, 접속(로그인) 불가...
실습)
[root@localhost ~]# adduser -D -s /bin/false
[root@localhost ~]#
[root@localhost ~]# adduser -D
GROUP=100
HOME=/users
INACTIVE=-1
EXPIRE=
SHELL=/bin/false
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
3. 사용자 계정 삭제
1) userdel
# userdel ydvt4
/users/ydvt5 디렉토리는 삭제되지 않음
# cd /users
# rm –r ydvt5
# userdel –r ydvt5
* 계정 서비스 보류 및 재서비스
- /etc/passwd의 두 번째 필드 값 ‘*’표시
- 재서비스할 경우 ‘*’ 문자 삭제
* 계정 발급하더라도 로그인 불가능
- /etc/passwd의 /bin/bash → /bin/false (or /sbin/nologin)
4. 계정 패스워드 지정 및 변경
1) passwd 파일 구조
/etc/shadow 파일에 암호화된 형태로 안전하게 저장.
2) passwd 변경 (시스템 관리자)
실습)
[root@localhost users]# adduser ydvt5
[root@localhost users]# passwd ydvt5
ydvt5 사용자의 비밀 번호 변경 중
새 암호:
잘못된 암호: The password is shorter than 8 characters
새 암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
3) passwd 변경 (사용자)
실습)
[root@localhost users]# su - ydvt5
[ydvt5@localhost ~]$ passwd
ydvt5 사용자의 비밀 번호 변경 중
ydvt5에 대한 암호 변경 중
(현재) UNIX 암호:
새 암호:
새 암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
* 사용자가 패스워드 변경할 경우 유의사항
- 숫자로만 지정 불가
- 사전적인 쉬운 단어로 지정 불가
- 6자 이상
- 이전에 사용하던 패스워드 지정 불가
- 여러 문자와 숫자 조합이 가장 좋음
4) Shadow Password System
실습)
[ydvt5@localhost ~]$ su -
암호:
[root@localhost ~]# pwunconv
[root@localhost ~]# cat /etc/passwd | grep root
root:$6$lsRpERiSxLnCFuWm$.2z9ktq5DGoIwNdoSsHvyZ9kWu3MsASJBwyZOUsEBvY05iBxH0w.y6DmH26Xs5tw7oSr2EmY2eSbL7WEth/P0.:0:0:root:/root:/bin/bash
operator:*:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# cat /etc/shadow | grep root
cat: /etc/shadow: 그런 파일이나 디렉터리가 없습니다
[root@localhost ~]# pwconv
[root@localhost ~]# cat /etc/shadow | grep root
root:$6$lsRpERiSxLnCFuWm$.2z9ktq5DGoIwNdoSsHvyZ9kWu3MsASJBwyZOUsEBvY05iBxH0w.y6DmH26Xs5tw7oSr2EmY2eSbL7WEth/P0.:17679:0:99999:7:::
[root@localhost ~]# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
5) 패스워드 관리 (chage)
# chage [옵션] [설정 내용] 사용자 계정
-l : chage 설정 내용 확인
-m : 새로운 pw를 변경할 수 있는 최소 일 수, 0은 언제나 변경 가능
-M : 유효한 pw의 최대 일수
-W : 사용자가 pw를 바꿀 때까지 경고할 일 수
-I : pw 유효기간이 경과된 후 사용자의 계정이 비활성화될 일 수
-E : 사용자가 계정을 사용할 수 있는 유효기간 (연도/월/일)
-d : 사용자가 pw를 변경한 마지막 일자
실습)
[root@localhost ~]# chage -l ydvt5
마지막으로 암호를 바꾼 날 : 5월 28, 2018
암호 만료 :안함
암호가 비활성화 기간 :안함
계정 만료 :안함
암호를 바꿀 수 있는 최소 날 수 : 0
암호를 바꿔야 하는 최대 날 수 : 99999
암호 만료 예고를 하는 날 수 : 7
[root@localhost ~]# chage -M 15 ydvt5
[root@localhost ~]# chage -l ydvt5
마지막으로 암호를 바꾼 날 : 5월 28, 2018
암호 만료 : 6월 12, 2018
암호가 비활성화 기간 :안함
계정 만료 :안함
암호를 바꿀 수 있는 최소 날 수 : 0
암호를 바꿔야 하는 최대 날 수 : 15
암호 만료 예고를 하는 날 수 : 7