/ 는 최상위 디렉터리를 뜻함. 만약 찾고자 하는 디렉터리가 있다면 그걸로 대체
- 파일 이름에 foobar 가 들어간 파일 찾기
find / -name "foobar" -print
- 특정 사용자(foobar) 소유의 파일을 찾기
find / -user foobar -print | more
- 최근 하루동안에 변경된 파일을 찾기
find / -ctime -1 -a -type f | xargs ls -l | more
- 오래된 파일(30일 이상 수정되지 않은 파일) 찾기
find / -mtime +30 -print | more
- 최근 30일안에 접근하지 않은 파일과 디렉터리를 별도의 파일로 만들기
find / ! ( -atime -30 -a ( -type d -o -type f ) ) | xargs ls -l > not_access.txt
- 하위 디렉터리로 내려가지 않고 현재 디렉터리에서만 검색하기
find . -prune ...
- 퍼미션이 777 인 파일 찾기
find / -perm 777 -print | xargs ls -l | more
- others 에게 쓰기(write) 권한이 있는 파일을 찾기
find / -perm -2 -print | xargs ls -l | more
- others 에게 쓰기(write) 권한이 있는 파일을 찾아 쓰기 권한을 없애기
find / -perm -2 -print | xargs chmod o-w
또는
find / -perm -2 -exec chmod o-w {} ; -print | xargs ls -l | more
- 사용자이름과 그룹이름이 없는 파일 찾기
find / ( -nouser -o -nogroup ) -print | more
- 빈 파일(크기가 0 인 파일) 찾기
find / -empty -print | more
또는
find / -size 0 -print | more
- 파일 크기가 100M 이상인 파일을 찾기
find / -size +102400k -print | xargs ls -hl
- 디렉터리만 찾기?
find . -type d ...
- root 권한으로 실행되는 파일 찾기
find / ( -user root -a -perm +4000 ) -print | xargs ls -l | more
- 다른 파일시스템은 검색하지 않기
find / -xdev ...
- 파일 이름에 공백이 들어간 파일 찾기
find / -name "* *" -print
- 숨겨진(hidden) 파일을 찾기
find / -name ".*" -print | more
- *.bak 파일을 찾아 지우기
find / -name "*.bak" -exec rm -rf {} ;
find -name ".git" | xargs rm -rf
find -name ".svn" | xargs rm -rf
- *.bak 파일을 찾아 특정 디렉터리로 옮기기
mv `find . -name "*.bak"` /home/bak/
- 여러개의 파일에서 특정 문자열을 바꾸기
find / -name "*.txt" -exec perl -pi -e 's/찾을문자열/바꿀문자열/g' {} ;
2010년 3월 5일 금요일
2009년 10월 22일 목요일
10 - 리눅스 Open SSH
SSH(Secure SHell)
관리의 목적으로 만들어진 보안로그인 쉘이다.Open SSH 서버설치 구성 요소
telnet 과 ftp 와 유사하나 보안이 우수하다. ssh 중에도 전혀 다른 개념의 protocol1 과 protocol2 가 있는데 protocol1은 스니핑이 가능하다. 따라서 protocol1 과 protocol2 를 같이사용하면 안된다.
* ssh 는 상용이고 openssh 는 배포판이다
openssh-4.0p1-3.i386.rpm서버 운용
openssh-server-4.0p1-3.i386.rpm
설치 후
# rpm -ql openssh-server-4.0p1-3
로 패키지가 설치한 파일들의 경로 및 이름을 확인할 수 있다.
그중에
/etc/rc.d/init.d/sshd 서버 실행 스크립트(path 경로에 없으므로 절대경로를 지정해서 실행해야함, # echo $PATH 엔터 패스경로 확인)
/etc/ssh/sshd_config 서버 설정 파일(서버설정파일은 rpm패키지로 설치시에는 대개 /etc/서비스와유사한이름의 디렉터리 안에 설정파일이 생성된다.)
/usr/sbin/sshd 서버 프로그램(스크립트가 읽혀지면서 이파일을 실행시킴)
이 3개지 파일이 특히 중요하다. 다른파일들도 중요 함.
# /etc/rc.d/init.d/sshd [옵션]서버 접속
start 시작
stop 종료
restart 종료 후 시작
status 상태표시
# ps -axf 계층적인 구조로 프로그램동작 출력
# netstat -atunp 현재 네트워크 연결상태를 보여줌
a all
t tcp
u udp
n numeric
p program
# who 현재 접속중인 tty또는, pts 원격지를 표시하고 접속한 사용자가 누구인지 정보를 출력
최초 접속시 접속자의 홈디렉터리의 .shh라는 숨은 디렉터리에 known_hosts 라는 파일안에 개인키를 받음
# ssh serverIP
접속한 서버의 쉘이 뜨면서 모든작업이 가능
단, 종료명령이나 랜카드 초기화시키는 명령은 하지 말것
# ssh [사용자ID]@serverIP
사용자로 접속 가능 (접속하려는 서버에 사용자 계정이 있어야함)
사용자로 접속후
* # su root 또는 # su - root 슈퍼유저 모드로 접속해서 root와 같은 작업을 할 수 있음
# scp [원본경로] [복사할위치의경로]
내컴의 디렉터리는 /어디/어디/어디
서버의 디렉터리는 serverIP:/어디/어디 이렇게 표시한다.
# sftp [server IP]
라벨:
LINUX,
LINUX COMMAND
09 - 리눅스 네트워크 설정, FTP, RPM
네트워크 설정
RPM
# ifconfigFTP
랜카드의 상태 확인 및 설정
# ifconfig [장치명]
장치의 상태를 출력
# ifconfig [장치명] down
장치의 상태 초기화(장치에 gw주소가 포함되어 있으면 같이 초기화 됨)
# ifconfig [장치명] [IP주소] netmask [넷마스크주소] broadcast [브로드캐스트주소] up
랜카드 설정
# route add default gw [IP대역에대한 게이트웨이주소]
게이트웨이주소 설정
# route del gw [게이트웨이주소]
게이트웨이주소삭제
# route del default gw [게이트웨이주소]
게이트웨이주소삭제
# echo "nameserver [네임서버주소]" > /etc/resolv.conf
네임서버의 주소를 /etc/resolv.conf 로 보냄
네임서보주소를 설정하지 않으면 URL 입력시 접속 할 수 없음
# ping www.yahoo.com
PING www.yahoo-ht2.akadns.net (209.131.36.158) 56(84) bytes of data.
64 bytes from f1.www.vip.sp1.yahoo.com (209.131.36.158) : icmp_seq=0 ttl=128 time=148 ms
64 bytes from f1.www.vip.sp1.yahoo.com (209.131.36.158) : icmp_seq=1 ttl=128 time=148 ms
...
ping 으로 접속이 잘 되었는지 확인
209.131.36.158 는 DNS서버에서 얻은 www.yahoo.com 의 IP주소
64 bytes = 56bytes의 임의의 값 + 8bytes
64 bytes를 해당서버에 보내고 다시 돌려받는 time=148 ms시간을 확인하여 통신이 잘되는지 확인할 수 있다.
ttl 값은 해당 서버의 OS를 알아볼 수 있는 방법이었는데 관리자가 보안을 위해 변경을 하기때문에 알 수 없다.
ttl 값이 1씩 줄어 들면서 0이 될 때까지 목적지에 도달하지 못하면 현재 위치한 곳의 주소를 출발지로하여 다시 되돌려 보냄. 이러한 방식으로 루핑을 방지한다.
# traceroute [목적지IP 혹은 도메인주소]
목적지까지 어떠한 경로를 거쳐서 가는지 확인
* VMware에서는 확인할 수 없다.
# nslookup [도메인주소]
해당 도메인의 IP주소를 확인
# ftp ftp.superuser.co.kr
Name : ftp 또는 anonymous (익명계정)
Password : 엔터
ftp> hash
다운로드시 #으로 다운받은양 표시 여부, 초기값은off
ftp> prompt
다운로드시 다운로드 확인 여부, 초기값은 on
ftp> lcd /tmp
로컬영역의 디렉터리변경(다운로드 받을 위치지정)
ftp> mget openssh*
현재디렉터리의 opensh로 시작하는 파일 다운로드
ftp> quit
ftp 종료
RPM
rpm packages 는 설치/관리는 쉬우나 보안에 취약하다.
반면, source package는 설/관리는 어려워도 보안 우수하다.
openssh-4.0p1-3.1386.rpm 를 설치하면 openssh-4.0p1-3 로 설치된다.
openssh-4.0p1-3.1386.rpm 설치할 패키지명
openssh-4.0p1-3 설치된 패키지명
-i 버전 확인 안하고 같은이름의 패키지 존재여부 확인후 설치(install)
-U 버전 확인후 상위버전이면 설치(Upgrade)
-v 설치결과를 보여줌
-h 진행상태를 # 로 표시
--nodeps 설치에 필요한 파일이 모두있을 때 설치순서 무시하고 진행(의존성 무시)
--force 기존 설치파일에 덮어 씌우기
# rpm ivh [설치할패키지명] --nodeps
패키지를 의존성무시하고 설치하며 설치결과와 진행상태를 보여줌
-e 제거(erase)
# rpm -e [설치된패키지명] --nodeps
의존성을 무시하고 패키지 삭제
-q 관리
-a 설치된 패키지의 리스트
-c 특정 패키지의 설정파일
-l 특정패키지가 설치한 파일들의 위치 및 이름 확인
-f 특정파일의 속해있는 패키지 확인
# rmp -qc [설치된패키지명(i386.rpm은 뺀 앞부분)]
# rmp -ql [설치된패키지명(i386.rpm은 뺀 앞부분)]
# rmp -qf [특정파일의경로]
라벨:
LINUX,
LINUX COMMAND
2009년 10월 18일 일요일
08 - 리눅스 setuid, setgid, stickybit, 소유자 그룹 변경
setuid (4000)
지정한 파일이 실행시점부터 끝날때까지 지정한 파일의 uid 의 소유권을 갖게 됨.
지정한 파일에 실행권한이 있을경우 rwx => rws
지정한 파일에 실행권한이 없을경우 rw- => rwS 실행안됨
지정한 파일이 실행 시점부터 끝날때까지 실행한파일의 gid 의 소유권을 갖게됨
지정한 파일에 실행권한이 있을경우 rwx => rws
지정한 파일에 실행권한이 없을경우 rw- => rwS 실행안됨
rwx rwx rwx (777)
=> 이러한 디렉터리의 권한은 디렉터리내에 혼돈을 일으키게 된다.
user, group, other 의 구분없이 디렉터리내에 파일들을 마음데로 삭제할 수 있기 때문이다.
그래서 stickybit를 사용한다.
게시판과 비슷한 계념이다. stickybit(1777일때)
게시판에서 글의 작성은 모두 할 수있다. => 파일및디렉터리 생성은 모두 가능
게시판에서 글의 수정은 작성자만 할 수있다. => 파일및디렉터리 수정은 작성자만 가능
게시판에서 글의 삭제는 작성자만 할 수있다. => 파일및디렉터리 삭제는 작성자만 가능
게시판에서 글의 보기는 모두 할 수있다. => 파일및디렉터리 관람은 모두 가능
(단, 관리자(해당 디렉터리의 소유자)는 모든 권한이 있다.)
stickybit를 사용하게 되면 group의 권한은 무시되고 user 와 other 의 권한만 인식을 한다.
chown
파일및디렉터리의 소유권자와 해당그룹을 바꿈
chown 바꿀소유자 파일및디렉터리 소유자만 변경
chown :바꿀그룹명 파일및디렉터리 그룹만 변경
chown 바꿀소유자:바꿀그룹명 파일및디렉터리 소유자와 그룹 모두 변경
지정한 파일이 실행시점부터 끝날때까지 지정한 파일의 uid 의 소유권을 갖게 됨.
지정한 파일에 실행권한이 있을경우 rwx => rws
지정한 파일에 실행권한이 없을경우 rw- => rwS 실행안됨
ex)
setgid (2000)# chmod 4755 /etc/passwd
$ passwd
- 이 시점부터 설정한 실행이 끝날때까지 uid의 소유를 갖음
주의! 위험한 시도
$ more /etc/shadow
/etc/shadow: Permission denied
# ls -l /bin/more -rwxr-xr-x 1 root root 30316 2008-09-25 22:08 /bin/more
# sudo chmod 4755 /bin/more
# ls -l /bin/more
-rwsr-xr-x 1 root root 30316 2008-09-25 22:08 /bin/more
$ more /etc/shadow
// 접근가능
지정한 파일이 실행 시점부터 끝날때까지 실행한파일의 gid 의 소유권을 갖게됨
지정한 파일에 실행권한이 있을경우 rwx => rws
지정한 파일에 실행권한이 없을경우 rw- => rwS 실행안됨
ex)stickybit
# find / -perm +4000 2 > /dev/null
검색경로: /
검색데이터: -perm +4000
어떻게: 2(출력?)
방향: > (왼쪽에서 오른쪽으로 보내라)
어디로: dev/null(쓰레기통?)
=> setuid 정보 보안설정 해줘야함
rwx rwx rwx (777)
=> 이러한 디렉터리의 권한은 디렉터리내에 혼돈을 일으키게 된다.
user, group, other 의 구분없이 디렉터리내에 파일들을 마음데로 삭제할 수 있기 때문이다.
그래서 stickybit를 사용한다.
# chmod 1777 /tmp=> 디렉터리내에서 other의 권한이 자신이 생성한 파일및디렉터리에 대해선 막강하나, 타인의해서 생성된 파일및디렉터리에 대해서는 권한이 없다. 단지 관람만 할 수 있을 뿐이다.
rwx rwx rwt (1777)
게시판과 비슷한 계념이다. stickybit(1777일때)
게시판에서 글의 작성은 모두 할 수있다. => 파일및디렉터리 생성은 모두 가능
게시판에서 글의 수정은 작성자만 할 수있다. => 파일및디렉터리 수정은 작성자만 가능
게시판에서 글의 삭제는 작성자만 할 수있다. => 파일및디렉터리 삭제는 작성자만 가능
게시판에서 글의 보기는 모두 할 수있다. => 파일및디렉터리 관람은 모두 가능
(단, 관리자(해당 디렉터리의 소유자)는 모든 권한이 있다.)
stickybit를 사용하게 되면 group의 권한은 무시되고 user 와 other 의 권한만 인식을 한다.
chown
파일및디렉터리의 소유권자와 해당그룹을 바꿈
chown 바꿀소유자 파일및디렉터리 소유자만 변경
chown :바꿀그룹명 파일및디렉터리 그룹만 변경
chown 바꿀소유자:바꿀그룹명 파일및디렉터리 소유자와 그룹 모두 변경
라벨:
LINUX,
LINUX COMMAND
2009년 10월 15일 목요일
07 - 리눅스 로그인 과정, 수동 계정 생성, 허가권과 소유권
계정 로그인 과정
수동으로 계정 만들기
허가권 부여 및 제거
/sbin/mingetty 에 의해서 로그인 폼이 나타난다.
/etc/inittab 의
'1 : 2345 : respawn : /sbin/mingetty tty1' 중
respawn 에 의해서 프로세스가 실행되었다가 죽어도 다시 살아나게 한다(절대 죽일 수 없음).
login : 계정 입력(아무 값이나 넣어도 다음 과정으로 넘어감)
password : 패스워드 입력
입력된 계정명은 /etc/passwd 에서 존재 여부 확인하고, 존재 한다면 입력된 암호를 MD5로 변경을 해서 /etc/shadow 와 비교한다.
맞으면 /bin/bash (/etc/passwd 의 7번 필드(쉘)) 를 실행하고 틀리면 다시 로그인 폼을 띄운다.
(입력된 계정명이 없을때에도 로그인폼을 다시 띄운다.)
/etc/passwd 에 아래와 같은 정보를 입력하고 저장.
계정명 : X : UID : GID : comment : home_dir : shell/etc/group 에 아래와 같은 정보를 입력하고 저장.
그룹명 : X : GID :
/etc/shadow 에 아래와 같은 정보를 입력하고 저장.
계정명 : $1$xxxxxxxx$~ : 최종암호변경일수(1970년1월1일기준) : 암호변경 최소일수 : 암호변경 유예기간 : 암호변경 경고일수 : 계정정지 사용여부 : 만기일사용여부 : 예약
* 여기서 $1$xxxxxxxx$~ 이것은
# perl -e 'print crypt("1234","\$1\솔트값\$"),"\n"' 해서 1234가 솔트값에 의해서 변경된 암호를 적어야함.
ex)
사용자 홈디렉터리의 뼈대 구성coderillla@localhost:~$ perl -e 'print crypt("1234","\$1\SaltValue\$"),"\n"'
$1CH2LCw5hraY => "1234" 라는 패스워드가 "SaltValue" 와 융화되어 만들어진 암호화된 값(?)
# cp /etc/skel /home_dir이제 다른 터미널로 이동해서 만든계정명으로 로그인하면 로긴이 되는데 root로 사용자의 홈디렉터리를 만들었을 경우에는 만든 계정의 홈디렉터리 소유권을 변경해주어야 한다.
PS : ) 수동으로 계정 생성하는 것은 비추이다. root 권한의 파일들을 수정하는 작업을 수행함으로써 자칫 잘못하다간 다른 계정의 정보를 날려 버릴 위험이 있다.
# chmod u(ser),+(추가)rwx,g(roup)-(삭제)rwx,o(rder)=(유지)rwx 파일경로위 방식 보다 절대모드 권장한다.
ex) # chmod u+rw-x,g+r-wx,o-rwx /etc/passwd
rwx(421)rwx(421)rwx(421) = 777권한 테스트 디렉터리 / 파일
rw-(420)r--(400)---(000) = 640
ex) # chmod 640 /etc/passwd
디렉터리
r - 디렉터리정보출력
w - 디렉터리내에서 파일을 쓰거나 삭제
x - 디렉터리진입
일반 파일
해당폴더의 권한이 rwx 일때
r - 파일을 출력한다. /삭제, 이동, 복사/
w - 출력한 파일을 입력(편집) 한다. /삭제, 이동/
실행 파일
해당디렉터리의 권한이 rwx 일때
r - 삭제, 이동, 복사
w - 삭제, 이동
x - 삭제, 이동, 실행
라벨:
LINUX,
LINUX COMMAND
06 - 리눅스 사용자 계정 관리
/etc/default/useradd (계정생성시 기본값을 설정하는 파일)
# chfn 계정명
# chfn 옵션 변경내용 계정명
/etc/group
# groups
GROUP=100/etc/login.defs (계정생성시 기본값을 설정하는 파일)
HOME=/home 홈디렉터리 경로
INACTIVE=-1 계정정지 사용여부 (-1사용안함, 0사용, 1기간연장)
EXPIRE= 만기일 사용여부(-1사용안함, 0사용)
SHELL=/bin/bash 사용할 쉘
SKEL=/etc/skel 홈디렉터리의 뼈대가 되는 파일
MAIL_DIR /var/spool/mail 메일이 보내지는 경로/etc/shadow (계정생성시 계정 정보가 추가되는 파일)
PASS_MAX_DAYS 99999 암호변경 유예기간, 입력된수일 동안 암호변경없이 사용가능
PASS_MIN_DAYS 0 암호변경 최소일수, 입력된수일 마다 변경가능
PASS_MIN_LEN 5 최소한 암호의 길이
PASS_WARN_AGE 7 암호변경 경고일수, 입력된수일 전에 경고
UID_MIN 500 최소 UID
UID_MAX 6000 최대 UID
GID_MIN 500 최소 GID
GID_MAX 60000 최대 GID
CREATE_HOME YES 홈디렉터리 생성여부
UMASK 076 사용자 디렉토리 생성시 UMASK 값을 설정한다. 701로 생성된다.
계정명 : $!$xxxxxxxx$~ : 최종암호변경일수(1970년1월1일기준) : 암호변경 최소일수 : 암호변경 유예기간 : 암호변경 경고일수 : 계정정지 사용여부 : 만기일사용여부 : 예약
chfn 사용자 comment 변경 명령
: 이름,회사,회사폰,집폰 :
-f fullname
-o office
-p office phone
-h home phone
# chfn 계정명
계정암호를 입력하고 문답식으로 변경
# chfn 옵션 변경내용 계정명
계정암호를 입력하면 선택한 옵션의 정보만 변경
/etc/group
그룹에관한 정보가있다.# groupadd 그룹명
-g 그룹의 고유ID지정# groupdel 그룹명
ex) groupadd -g 707 그룹명 UID값으로 707을 갖는 그룹명을 생성
* 현존하는 그룹은 생성 불가
지정한 그룹을 삭제 함.# groupmod 그룹명
*사용자가 포함되어있는 그룹은 삭제 불가
지정한 그룹의 속성을 변경 함.
-g 그룹의 고유ID변경
-n 그룹명 변경
ex) groupmod -g 변경값 그룹명
* 변경할 GID값이 다른 그룹의 GID값으로 존재하면 변경불가
useradd 기본값으로 계정을 생성하면 계정명과같은 그룹명이 생기는데 이 때,
userdel -r 계정명을 하면 그룹정보도 같이 지워진다.
하지만 기본값으로 계정을 생성하고 그룹에관한 정보를 조금이라도 수정하면, 이 때는 그룹과 계정을 별도로 관리해야한다.
즉, useradd 로 기본값으로 계정을 만들고 groupmod 로 기본값으로 생성된 그룹의 GID를 변경해도 /etc/passwd 는 변경된 것을 인식하지 않는다.
usermod 로 변경된 GID 값을 수정해줘야한다. (/etc/passwd의 GID값이 /etc/group 의 GID값과 같고
/etc/passwd의 계정명이 /etc/group 의 그룹명과 같으면 userdel 했을때 해당 계정명의 계정정보와 그룹정보가 삭제됨)
# groups
현재 접속한 계정의 그룹 정보 혹은 지정한 계정의 그룹 정보를 표시
계정명 : 소속그룹
라벨:
LINUX,
LINUX COMMAND
05 - 리눅스 사용자 추가
리눅스는 서버 등등의 서비스를 목적으로 하는 운영체제이기 때문에 계정생성이 필요하다.
계정을 생성하게되면
# useradd 계정명
위처럼 별개의 옵션없이 계정을 생성하게 되면 기본값으로 계정이 생성된다.
"/etc/passwd" 의 내용은 다음과 같으며,
기본값의 정보는
레드햇 - UID/GID
# passwd [엔터] 현재 접속중인 계정의 패스워드 변경
# passwd 계정명 지정한 계정의 패스워드 변경
root의 권한으로 패스워드를 최초로 입력할때는 조건없이 패스워드 지정이 가능하다. (경고메세지만나옴)
그러나, 일반 사용자가 암호를 입력할때는 다음 조건이 맞아야한다.
#userdel 계정명 계정에 관련된 파일의 정보만을 지운다. (홈디렉터리의 내용은 지우지않음)
#userdel -r 계정명 계정에 관련된 모든 정보를 지운다. (홈디렉터리의 내용도 지움)
/etc/passwd3개 파일에 계정명에 대한 정보가 추가되고
/etc/group
/etc/shadow
/home/계정명으로 계정에대한 사용자 홈디렉터리가 1개 생성된다.
# useradd 계정명
위처럼 별개의 옵션없이 계정을 생성하게 되면 기본값으로 계정이 생성된다.
"/etc/passwd" 의 내용은 다음과 같으며,
계정명 : X : UID : GID : comment : home_dir : shell기본값은 다음과 같다.
계정명:X:[이전에 생성된UID+1]:[UID와 동일]:[NULL]:[/home/계정명]:/bin/bash
기본값의 정보는
/etc/defualt/useradd위 두 파일과
/etc/login.defs
/etc/skel이라는 디렉터리가 갖고 있다.
0 관리자 계정/그룹
1~499 시스템관리계정/그룹500~6만 일반사용자계정/그룹
다른OS - UID/GID
0 관리자 계정/그룹[옵션]
1~99 시스템관리계정/그룹
100~ 일반사용자계정/그룹
-u uid(시스템이 판단하기위한 정보)* 옵션은 다중 사용가능하다.
-g gid(시스템이 판단하기위한 정보)GID는 사전에 등록된 값만을 지정할수있다.(새로운gid생성불가)
-c 설명
-d 홈디렉터리
-s 쉘
ex) # useradd -u 500 -c "test1" -d /home/test1 -s /bin/bash 계정명# passwd
# passwd [엔터] 현재 접속중인 계정의 패스워드 변경
# passwd 계정명 지정한 계정의 패스워드 변경
root의 권한으로 패스워드를 최초로 입력할때는 조건없이 패스워드 지정이 가능하다. (경고메세지만나옴)
그러나, 일반 사용자가 암호를 입력할때는 다음 조건이 맞아야한다.
- 길이제한 (7자이상)
- 간단한단어는 사용불가
- 등록된패스워드 사용불가
- 이전 패스워드 사용불가
# useradd
#userdel 계정명 계정에 관련된 파일의 정보만을 지운다. (홈디렉터리의 내용은 지우지않음)
#userdel -r 계정명 계정에 관련된 모든 정보를 지운다. (홈디렉터리의 내용도 지움)
# cat /etc/passwd | grep test
/etc/passwd라는 파일을 불러와서 test가 검색된 라인만 출력한다.
#finger 계정명1 계정명2 계정명3
계정에대한 정보를 출력한다.
라벨:
LINUX,
LINUX COMMAND
04 - 리눅스 기본 명령어 3: vi
VI editor
ctrl+z 최소화
# jobs 현재 작업중인 목록 표시
# fg 작업번호 작업번호 작업
대기/명령모드, 편집/추가모드, 라인입력 모드가 있으며, 모든명령은 대기/명령 모드에서 이루어진다.
[Esc]키를 이용하여 대기/명령 모드로 갈 수 있다.
[삽입 명령]
[파일관련]
[커서이동 및 화면이동]
[삭제(잘라내기)]
[복사]
[붙여넣기]
[바꾸기]
[검색]
[반복 및 취소]
[기타]
치환은 아래 사이트 참조
http://mwultong.blogspot.com/2006/09/vim-vi-gvim-find-and-replace.html
ctrl+z 최소화
# jobs 현재 작업중인 목록 표시
# fg 작업번호 작업번호 작업
대기/명령모드, 편집/추가모드, 라인입력 모드가 있으며, 모든명령은 대기/명령 모드에서 이루어진다.
[Esc]키를 이용하여 대기/명령 모드로 갈 수 있다.
[삽입 명령]
a append 현재 커서에서 추가
i insert 현재 커서에서 삽입
o open? 현재커서에서 아래로 행을 열고 입력
A APPEND 현재 커서가있는 행의 맨뒤에 추가
I INSERT 현재 커서가있는 행의 맨처음에 삽입
O OPEN? 현재 커서에서 위로 행을 열고 입력
[파일관련]
:e 열기
:q 종료
:q! 강제 종료(저장 안됨)
:w 저장
:wq 저장후 종료(:x, ZZ)
:wq! 강제 저장후 종료(관리자만 사용가능)
[커서이동 및 화면이동]
hjkl 좌하상우
e 다음단어의 마지막으로 이동
숫자+G 커서를 숫자에 해당하는 행으로 이동
Enter 커서를 다음라인의 첨으로
- 커서를 이전라인의 끝으로
0 커서를 해당라인의 첨으로
$ 커서를 해당라인의 끝으로
H 커서를 화면의 처음 HEAD
L 커서를 화면의 마지막LAST
ctrl+f 다음 화면으로 이동forword
ctrl+b이전 화면으로 이동b a c k
G 문서의 끝으로 이동
gg 문서의 첨으로 이동
[삭제(잘라내기)]
x 커서가 위치한 1 character 삭제(잘라내기)
dw 커서가 위치한 1 word 삭제(잘라내기)
dd 커서가 위치한 1 line 삭제(잘라내기)
숫자dd 입력한 숫자만큼의 line 삭제(잘라내기)
D 커서의 위치 부터 라인의 끝까지 삭제(잘라내기)
[복사]
yw 커서가 위치한 1 word 복사
yy 커서가 위치한 1 line 복사
숫자yy 커서가 위치한 곳에서부터 숫자만큼의 line 복사
[붙여넣기]
p 단어는 커서가 위치한 뒤에, 1개라인 이상은 커서가 위치한 아래에
P 단어는 커서가 위치한 앞에, 1개라인 이상은 커서가 위치한 위에
[바꾸기]
r 커서에 있는 1 character replace
R REPLACE 모드로 전환
s 커서에 있는 1 character 삭제후 입력모드로 전환
S 커서에 있는 STRING 삭제후 입력모드로 전환
[검색]
/ 검색어 검색어를 내림차순으로 검색
? 검색어 검색어를 오름차순으로 검색
n 해당검색기능의 흐름에맞게 계속 검색 (/검색어 사용후 n 하면 내림차순으로 계속검색)
N 해당검색기능의 역방향으로 계속 검색 (/검색어 사용후 N 하면 내림차순의역방향(오름차순)으로 계속검색)
g/검색어/s//대체어/g
검색어를 대체어로 바꿔라
처음에 g는 세로 행의 global
마지막 g는 가로 행의 global
앞뒤에 g가있으니 모는 검색어가 대체어로 바뀐다.
[반복 및 취소]
. 이전명령 반복
u 이전명령 취소
[기타]
:set nu 행의 행번호 출력VIM editor
:set nonu 해제
:set ts=숫자 탭의 간격설정(기본값 8)영구적으로 변하게 하려면 vi설정파일을 변경해야함
:! bash 잠시쉘로이동
[쉘상에서 명령]
vi -r 복구가능한 파일 보기
vi -r filename 파일복구
set -o vi [esc]키 입력후 쉘상에서 vi의 명령어 사용가능
visual기능이 있음
:vs 화면 분할(기본 세로)
ctrl+w+n 가로 분할
ctrl+ww 분할된 파일로 커서를 이동
:nohl 검색기능사용으로 표시된 검색어 헤드라인 해제
치환은 아래 사이트 참조
http://mwultong.blogspot.com/2006/09/vim-vi-gvim-find-and-replace.html
라벨:
LINUX,
LINUX COMMAND
피드 구독하기:
글 (Atom)