패스워드 파일을 섀도우로 변환하며 패스워드 운영에서도 섀도우 방식을 사용한다.

사용법 : pwconv 

/etc/passwd 파일은 일반 사용자도 읽기가 가능하여, 보안상 취약성을 가지고 있다.
pwconv는 /etc/passwd에 있는 데이터를 변경하고, 현재 존재하고 있는 섀도우 정보에 포함 시킨다. 패스워드가 설정되지 않은 사용자는 /etc/shadow에 추가시키지 않으며, 패스워드 만료나 경고 잠금 등의 정보를 가지고 있는 /etc/login.defs에 정의된 값을 사용하게 된다. 요즈음 배포판은 기본으로 pwconv가 설정되어 있어 특별히 설정할 필요가 없다. 해제를 위해서는 pwunconv 명령을 사용한다. 이는 섀도우 데이트를 /etc/passwd 형식으로 변경하고 /etc/shadow 파일을 삭제하므로 사용하지 않는 것이 좋다.
/etc/shadow파일은 root만이 읽을 수 있으므로, 실제 크래킹의 위험을 보다 감소 시킬수 있다.

[관련 명령어]
grpconv 섀도우 그룹을 만드는 명령어
2005/06/17 13:10 2005/06/17 13:10
현재 사용하는 디렉토리의 절대 경로를 보여 주는 명령어이다.

사용법 : pwd 

pwd 명령은 현재 작업중인 디렉토리의 절대 경로를 보여준다.
2005/06/17 13:09 2005/06/17 13:09
특정 사용자나 그룹에서 하드 디스크를 많이 사용하여 다른 사용자들에게 피해를 주는 것을 방지하기 위해 각 사용자나 그룹에서 사용할 수 있는 디스크 용량에 제한을 두는 명령어이다.

사용법 : quota [옵션] [유저|그룹] 
-g : 계정과 관련된 그룹의 쿼터 정보를 보여준다. 
-q : 쿼터제한을 넘긴 유저의 파일시스템 정보를 보여준다. 
-u : 디폴트 옵션이다. 유저의 쿼터 정보를 보여준다. 
-v : 좀 더 자세한 쿼터 정보를 보여준다. 

quota는 사용자가 사용하는 디스크의 크기의 제한을 두어, 시스템상의 관리에 효율성을 증대 시킨다. 기본적인 quota 명령으로 로긴한 계정의 quota 설정 내용을 볼 수 있다.
아래 자세한 쿼터 설정 팁으로 쿼터를 설정해 보자.
쿼터 설정하기(레드햇 7.X이상)
1) /etc/fstab에서 쿼터 제한을 두고 싶은 파일시스템에 usrquota를 입력한 후 재부팅한다.

LABEL=/  / ext2 defaults,usrquota 1 1 

2)위의 설정은 /에 제한 두었으므로, / 디렉토리에 touch 명령으로 quota.user 파일을 생성한다.

# touch /quota.user # chmod 600 /quota.user 

3)convertquota명령으로 quota.user를 aquota.user데이터파일로 생성한다.

# convertquota / 

4)edquota admin 명령으로 admin 유저의 soft와 hard쿼터를 설정한다.

# eduquota admin 
dit block adn inode quota for user admin: Device /dev/hda6 (/): Used 
484KB, limits: soft=0 hard=0 Used 118 inodes, limits: soft=0 hard=0 

5)requota 명령으로 파일시스템의 quota를 간략히 볼 수 있다.

# requota -a 
*** Report for user quotas on device /dev/hda6 (/) 
Block grace time: 7 days: Inode grace time: 7 days 
Block limits File limits 
User userd soft hard grace used soft hard grace 
----------------------------------------------------------- 
root --- 42668 0 0 28 0 0 
admin --- 484 0 0 118 0 0 

[관련 명령어]
edquota 쿼터제한을 위해 각 설정을 편집하는 명령어
quotacheck 쿼터설정을 체크하는 명령어
quotaoff 쿼터 제한을 해제하는 명령어
quotaon 쿼터 제한을 켜는 명령어
quotastats 쿼터 상태를 보는 명령어
2005/06/17 13:08 2005/06/17 13:08
RAM 디스크의 크기를 확인하고 설정하는 명령어이다.

사용법 : ramsize [옵션] [image [size [offset]]] 
-o offset : 지정한 offset으로 offset 값을 지정한다. 

ramsize 명령은 RAM 디스크의 크기를 보여주거나 설정할 수 있다.
ramsize 명령으로 커널 이미지를 지정하면, 지정된 offset의 정보를 보여주게 된다.

# rdev -r vmlinuz-2.4.13-1hl 
Ramsize 0

ramsize 명령은 rdev 명령에 심볼릭 링크 되어 있다.

# ls -al /usr/sbin/ramsize 
lrwxrwxrwx   1 root   root   4 12월 14  2001 /usr/sbin/ramszie -> rdev

자세한 사항은 rdev 명령을 참조하자.
2005/06/17 13:06 2005/06/17 13:06
아카이브를 랜덤 라이브러리로 변환한다.

사용법 : ranlib 파일명 

ranlib 명령은 지정한 아카이브 파일명의 인덱스를 생성하여 랜덤 라이브러리로 변환한다. 이는 ar -s 명령과 동일하다.
2005/06/17 13:04 2005/06/17 13:04
원격 호스트의 파일을 복사하는 명령

사용법 : 
rcp [옵션] 파일1 파일2 
rcp [옵션] 파일... 디렉토리 
-p : 원본 파일의 변경날짜와 모드를 유지하여 복사한다. 
-x : 호스트 간의 모든 정보 전달을 DES 암호화한다. 
-r : 디렉토리 내의 하위 디렉토리와 파일을 로컬 시스템으로 복사한다. 
-D port : 지정한 포트로 접속을 한다.

rcp 명령 원격 복사(remote copy)로 네트워크로 연결되어 있는 각 시스템끼리 복사를 가능하게 한다. r로 시작하는 명령들은 대부분 보안에 취약점이 노출되어 있으므로, rcp 대신 scp 명령을 사용하기를 권장한다.
2005/06/17 12:33 2005/06/17 12:33
타임서버에서 시간 정보를 얻어 시스템의 시간을 변경한다.

사용법 : rdate [옵션] [호스트...] 
-p : 호스트의 데이터를 보여준다. 
-s : 원격 네트워크 호스트로부터 로컬호스트 시간을 설정한다.

rdate 명령은 타임서버의 시간을 참고 하여 시스템의 시간을 변경한다.
rdate -p 옵션으로 time.nuri.net 서버의 시간 정보를 확인해 보자.

# rdate -p time.nuri.net 
[time.nuri.net] Fri Jun 7 02:38:58 2002 

rdate -s 옵션으로 로컬 시스템의 시간을 타임서버의 시간으로 바꿀 수 있다.

# rdate -s time.nuri.net 

date 명령으로 변경된 시간을 확인 할 수 있다.

# date 
2002. 06. 07 (금) 02:39:11 KST 
2005/06/17 10:52 2005/06/17 10:52
root 장치, 스왑장치, RAM디스크 크기, 비디오 모드조사/설정 명령어

사용법 : 
rdev [옵션] [-o offset] [image [value [offset]]] 
rdev [-o offset] [image [root_device [offset]]] 
-r : rdev 명령을 ramsize 명령으로 사용한다. 
-R : rdev 명령을 rootflags 명령으로 사용한다. 
-v : rdev 명령을 vidmode 명령으로 사용한다. 
-h : 도움말을 보여준다. 

rdev는 RAM 디스크 크기, root 플래그, 비디오 모드의 상태를 보여주고 설정도 가능하다.
시스템 부팅에 사용되는 부트 이미지 안에서 root 플래그, 비디오 모드, RAM 디스크 크기등의 정보가 들어 있다.
먼저 RAM 디스크의 크기를 확인해 보자.

# rdev -r /boot/vmlinuz 
Ramsize 0 

rdev -r 명령에서 사용되는 RAM 디스크의 크기 값은 KB 단위이다.
현재 RAM 디스크로 사용되는 용량이 없음을 확인 할 수 있다.
rdev -r 은 ramsize과 같은 명령으로 ramsize은 rdev로 심볼릭 링크 되어 있다.
다음으로 root 플래그 확인해 보자.

# ls -al /usr/sbin/ramsize 
lrwxrwxrwx    1 root   root   4  5월 19 16:17 /usr/sbin/ramsize -> rdev 

rdev -R 명령에서 사용되는 flags 인자 값은 root파일 시스템을 마운트 할 때 추가적인 정보를 담고있는 값이다. 일반적으로 flags 값이 0 이 아니라면 이 값은 커널이 root 파일 시스템을 읽기 전용으로 마운트 하도록 한다.
rdev -R는 rootflags와 같은 명령으로 rootflags는 rdev로 심볼릭 링크 되어 있다.

# ls -al /usr/sbin/rootflags 
lrwxrwxrwx   1 root   root     4    5월 19  16:17 /usr/sbin/rootflags -> rdev 

마지막으로 비디오 모드를 확인해 보자

# rdev -v /boot/vmlinuz 
Video mode 65535 

vidmod 명령에서 사용되는 mode 인자 값은 다음과 같은 비디오 모드를 지정한다.

-3 - Prompt 
-2 = Extended VGA 
-1 = Normal VGA 
0 = as if "0" was pressed at the prompt 
1 = as if "1" was pressed at the prompt 
2 = as if "2" was pressed at the prompt 
n = as if "n" was pressed at the prompt 

value 인자 값이 지정되지 않으면, image 인자 값은 단지 현재 설정을 알기 위해서 쓰인다. rdev -v 는 vidmode와 같은 명령으로 vidmode는 rdev로 심볼릭 링크 되어 있다.

# ls -al /usr/sbin/vidmode 
lrwxrwxrwx   1 root   root     4    5월 19  16:17 /usr/sbin/vidmode -> rdev 
2005/06/17 10:49 2005/06/17 10:49
파일을 읽기 전용으로 표시하는 명령어

사용법 : readonly [옵션] [이름 ...] 
-f : 이름에 해당하는 함수를 읽기 전용으로 표기한다. 
-p : 모든 읽기 전용 변수 목록을 보여준다.

readonly 명령은 주어진 이름들을 읽기 전용으로 표기하고 다음에 나올 대입문에 의해 이름들의 값이 바뀌지 않도록 해 준다. -- 인수는 나머지 인수에 대한 점검을 하지 않도록 지시한다. 잘못된 옵션이 있거나 이름들 중 하나라도 적합한 셀 변수 이름이 아닌 경우 또는 -f 다음에 나온 이름이 함수가 아닌 경우를 제외하고는 반환 상태값이 0이다.
자세한 사용법은 셀 스크립트 부분을 참조하자.
2005/06/17 10:48 2005/06/17 10:48
시스템을 종료하고 다시 시작하는 시스템 관리 명령어이다.

사용법 : reboot [옵션] 
-d : wtmp 파일에 기록을 남기지 않는다. 
-f : 강제로 리부트한다. 
-n : 리부트할 때 sync하지 않는다. 
-w : 실질적으로 리부트 하지 않고, /var/log/wtmp 기록을 남긴다. 

reboot 명령은 다른 사용자가 시스템을 사용하지 않을 때 시스템을 다시 시작하는 명령어이다. 이는 shutdown -r now 명령이나, init 6 명령과 동일하다.
shutdown 명령은 보통 시스템이 수행중이고 사용자가 현재 작업 중인 것을 저장할 시간적 여유를 줄 경우 메시지를 보내 이를 알리게 된다. 허나, reboot는 경고 없이 시스템 관리자가 바로 리부트 하게 된다.
reboot 명령은 syslog 명령으로 /var/log/message와 로그인 사용 통계 로그인 /var/log/wtmp 에 이를 저장하게 된다.
2005/06/17 10:47 2005/06/17 10:47
실행 중인 프로세스의 작업 우선 순위를 변경하는 명령어

사용법 : renice 우선권 [옵션][프로세스] 

+num : 현재 프로세스의 우선권을 num 수만큼 지정하여 우선 순위를 낮춘다. 
-num : 현재 프로세스의 우선권 num 수만큼 지정하여 우선 순위를 높여준다. 
-g : 그룹 ID 지정 
-u : 사용자 ID 지정 
-p : 프로세스 ID 지정(초기값) 

renice 명령은 하나 또는 그 이상의 실행중인 프로세스의 진행 우선권을 바꾼다. 이는 nice 명령과 함께 참조하여 비교해 보자.
renice 각 옵션에서 사용되는 옵션의 인자는 프로세스 ID, 프로세스 그룹 ID, 사용자 ID이다. 프로세스 그룹의 우선권 변환은 그 해당되는 그룹의 모든 프로세스에 적용된다. 사용자의 우선권 변환은 그 해당되는 사용자의 모든 프로세스에 적용된다. 초기값으로 우선권 변환에 영향을 받는 프로세스는 그 지정한 프로세스 뿐이다.
예제는 nice 명령과 같이 설명이 되어 있다.
2005/06/17 10:44 2005/06/17 10:44
터미널을 초기화하는 명령어

사용법 : reset [옵션] [터미널] 
- : 현재 터미널의 종류를 보여준다. 
-e ch : 지정된 ch 문자를 터미널에서 ERASE 문자로 설정한다. 
-i ch : -e 옵션과 유사하지만, 지정된 ch 문자를 터미널에서 인터럽트 문자로 설정한다. 
-k ch : 지정한 ch문자를 터미널에서 LINE KILL 문자로 설정한다. 
-m mapping : 지정한 mapping을 터미널에서의 포트 형태로 설정한다. 

clear은 현재 터미널에 보이는 것을 화면상에서 깨끗하게 지운 후 커서를 화면 맨 상단으로 이동 시키는 명령이지만 reset은 터미널을 초기화한다.
이 reset 명령은 프로그램이 종료되어 터미널이 예기치 못한 상태로 일반적인 명령어가 먹지 않는 경우 Ctrl+j clear Ctrl+j 명령으로 터미널을 초기화할 수도 있다.
reset 명령은 tset 명령의 심볼릭 링크파일이다.

# ls -al /usr/bin/reset 
lrwxrwxrwx   1 root   root     4    5월 19  16:17 /usr/bin/reset -> tset 

[관련 명령어]
clear 화면을 깨끗이 하고 커서를 화면 맨 상단으로 이동시킨다.
2005/06/17 10:44 2005/06/17 10:44
dump 백업파일을 복구한다.

사용법 : restore [옵션] 
restore -C [-ckMvy] [-b blocksize] [-D filesystem] [-f file] [-s fileno] [-T directory] 
restore -i [-chkmMNuvy] [-b blocksize] [-f file] [-Q file] [-s fileno] [-T directory] 
restore -R [ckMNuvy] [-b blocksize] [-f file] [-s fileno] [-T directory] 
restore -r [-ckMNuvy] [-b blocksize] [-f file] [-s fileno] [-T directory] 
restore -t [-chkMNuvy] [-b blocksize] [-f file] [-Q file] [-s fileno] [-T directory] [-X filelist] [파일이름] 
restore -x [-chkmMNuvy] [-b blocksize] [-f file] [-Q file] [-s fileno] [-T directory] [-X filelist] [파일이름]

dump 명령어는 복잡한 파일 시스템 백업 유틸리티로서 보통은 규모가 큰 설치와 네으퉈크에서 쓰인다. restore 명령어는 이 dump로 백업된 파일을 복구한다.
2005/06/17 10:43 2005/06/17 10:43
파일의 내용을 줄 단위로 알파벳 순서를 거꾸로 바꾸어 나열하는 명령어

사용법 : rev [파일] 

rev 명령은 지정한 파일을 줄 단위로 읽어, 그줄의 내용을 역변환하여 보여준다. 파일이 지정되지 않으면, 표준 입력에서 입력받는다.
2005/06/17 10:42 2005/06/17 10:42
원격 호스트에 접속하여 명령을 실행한다.

사용법 : rexec [옵션] -I username -p password host command 
옵션 
-I username : 원격 호스트에 접속할 사용자명을 지정한다. 
-p password : 원격 호스트에 접속할 사용자명의 패스워드를 지정한다. 
-n : 접속할 사용자와 패스워드 프롬프트를 보여준다. 
-h : 사용법을 보여준다. 

rexec 명령은 지정한 원격 호스트에 실행할 명령을 입력하여, 로컬 시스템에서 실행한 명령의 결과를 볼 수 있는 명령어이다. r로 시작하는 명령어 대부분은 보안상 취약한점이 노출되므로, rexec서비스는 권장하지 않는다.
그러므로, rexec 명령법에 대해 조금만 알아보자
rexec.linux.net 호스트의 date 명령을 실행하여 이 호스트의 시간을 한 번 알아보자.

# rexec rexec.linux.net date 

이 예제에서, 로컬 시스템은 $HOME/.netrc 파일에 원격 호스트의 사용자와 패스워드를 저장하게 된다.
아래 예제는 rexec.linux.net 호스트에서 admin 계정의 홈디렉토리 목록을 로컬 시스템에 보여주게 된다.

# rexec rexec.linux.net ls -l /home/admin 
2005/06/17 10:41 2005/06/17 10:41
자주 접속해 들어오는 호스트를 허용하여 자동으로 텔넷 접속을 할 수 있는 명령어이다.

사용법 : rlogin 호스트 [옵션] 
-t ttytype : tty 형태를 지정한다. 
-I username : 접속할 사용자 계정을 지정한다. 

rlogin은 telnet과 비슷한 기능을 한다. 하지만, rlogin은 허용한 호스트간에 자동으로 로그인할 수 있다. 만일 linux1.linux.net 에서 linux2.linux.net로 텔넷 로그인을 한다면 매번 계정을 입력하고 나서 패스워드를 입력해야 한다. 하지만 rlogin을 사용한다면, linux1.linux.net 호스트를 rlogin 허용을 하여, 자동으로 로그인이 가능하다. 이는 대부분 r로 시작하는 명령어가 보안상 취약점이 노출되는 것과 마찬가지로, rlogin 명령 또한 예외가 아니다. rlogin 명령 대신 ssh 명령을 사용하기를 권장한다.
레드햇 7.X 버전은 /etc/xinetd.d/rlogin 파일에서 기본적으로 서비스가 막혀있다.

# cat /etc/xinetd.d/rlogin 
# default: on 
# description: rlogind is the server for the rlogin(1) program.  The server \ 
#       provides a remote login facility with authentication based on \ 
#       privileged port numbers from trusted hosts. 
service login 
{ 
        socket_type             = stream 
        wait                    = no 
        user                    = root 
        log_on_success          += USERID 
        log_on_failure          += USERID 
        server                  = /usr/sbin/in.rlogind 
        disable                 = yes 
} 

[관련 명령어]
telnet 원격 텔넷 서버에 접속하기 위한 클라이언트
ssh openSSH SSH클라이언트 (원격 SSH 서버 접속 클라이언트)
2005/06/17 10:36 2005/06/17 10:36
파일과 디렉토리를 삭제하는 명령어이다.

사용법 : rm [옵션] 파일명 
-d, --directory : rmdir 명령 대신에 unlink'와 함께 경로를 지운다. 
-f, --force : 지울 파일이 없을 경우 아무런 메시지를 보여주지 않고 그냥 넘어간다. 
-i, --interactive : 삭제하기 전 사용자에게 삭제 여부를 확인한다. 
-r -R --recursive : 하위 디렉토리를 포함한 모든 내용을 삭제한다. 
-v --verbose : 지워지는 파일의 정보를 화면에 출력한다. 
-R : -r 옵션과 같은 역활을 한다. 
--help ; 표준출력으로 도움말을 보여주고 마친다. 
--version : 표준출력으로 버전 정보를 보여주고 마친다. 

rm 명령은 디렉토리나 파일을 삭제하는 명령어이다.
보통 배포판에는 $HOME/.bashrc 파일에 alias rm='rm -i'를 설정하여, 실수로 파일을 삭제하는 경우를 막기 위해 -i 옵션을 두어 삭제 여부를 확인하게 된다.

# rm httpd 
rm : remove 'httpd'? y 

만일 확실하게 삭제할 파일이나 디렉토리라고 생각이 들면 -rf 옵션으로 디렉토리를 포함한 하위 디렉토리와 파일들을 모두 삭제할 수 있다.
rm -ir 옵션으로 yes/no을 선택하여 하위 디렉토리 중 원하는 파일만 삭제를 할 수도 있다.

[관련명령어]
rmdir 디렉토리 삭제 명령어]
2005/06/17 10:34 2005/06/17 10:34
uucp를 통해 받은 원격 메일을 다루는 명령어이다.

사용법 : rmail [옵션] 사용자 
-D domain : 기본값인 UUCP 대신에 지정한 domain을 설정한다. 
-T : 디버깅 모드 

UUCP 환경에서, 메일은 수신 주소와 메일 메시지를 전하려고 하는 인접호스트 상에서 대개 rmail 명령을 주면 메일을 전송하게 된다. rmail 명령은 메시지를 다른 호스트로 전송하게 되며, 그 메시지는 목적 호스트에 도착한다.
현재에는 거의 쓰이지 않는 명령어이다.
2005/06/17 10:33 2005/06/17 10:33
빈 디렉토리를 삭제하는 명령어이다.

사용법 : rmdir [옵션] 디렉토리 
-p, --parents : 상위 경로도 지운다. 이 명령은 그 상위 경로 안에 물론 비어있어지 가능하다. 
--verbose : 진행상황을 상세하게 보여준다. 
--help : 도움말을 보여주고 종료된다. 
--version : 버전 정보를 보여주고 종료된다. 

rmdir은 하위 디렉토리나 파일이 없는 디렉토리를 지우는 명령어이다. 만일 하위 디렉토리나 파일이 있는 경우의 디렉토리를 삭제하려면 -rm -r 옵션으로 삭제한다.
rmdir명령은 디렉토리가 비어져 있지 않으면 삭제되지 않는다. 비어있지 않는 maillist 디렉토리를 한 번 삭제해 보자

# rmdir maillist/ 
rmdir: maillist/': 디렉토리가 비어있지 않음 

이는 먼저 하위 디렉토리의 파일이나 디렉토리를 rm 명령으로 삭제해야 한다.

# rm -rf maillist/* 
# rmdir maillist/ 

[관련 명령어]
rm 파일이나 디렉토리 삭제 명령어
2005/06/17 10:32 2005/06/17 10:32
사용할 수 있는 상태인 커널 모듈을 메모리에서 제거하는 명령어이다.

사용법 : rmmod [옵션] 모듈명 
-a, --all : modprobe -a 로 자동 적재된 모듈까지 삭제한다. 
-h --help : 사용법을 보여준다. 
-r --stacks : 모듈 스택을 제거한다. 
-s --syslog : syslog에 메시지를 남긴다. 
-v --verbose : 진행 상태를 상세히 보여준다. 
-V --version : 모듈의 버전을 보여준다. 

rmmod 명령은 시스템에 적재된 모듈을 제거할 경우 사용하는 명령어이다. 이는 아래 관련 명령어들과 매우 밀접하게 연관이 되므로, 각 명령어들을 한 번씩 연관시켜서 살펴보기를 권장한다.
현재 시스템에 적재되어 있는 모듈들을 lsmod 명령으로 확인할 수 있다.
그중 ip_tables 모듈을 한 번 삭제해 보자. 아무 에러가 없는 것으로 봐서 모듈이 제거되었다고 볼 수 있다.

# rmmod ip_tables 

[관련 명령어]
depmod 모듈 적재를 위한 의존성 관계를 다루는 명령어
modprobe insmod보다 뛰어난 모듈 적재 명령어
insmod 모듈 적재 명령어
2005/06/17 10:10 2005/06/17 10:10