posted by 귀염둥이채원 2018. 11. 27. 15:51

1. 유저관리

1) useradd : 유저생성 

기본형식

#useradd [옵션] [유저명]

-G, --groups GROUPS

-d, --home-dir HOME_DIR

-s, --shell SHELL

-u, --uid UID

-g, --gid 새로운초기 로그인 그룹 존재하는 그룹이어야함

-c, --comment COMMENT

-o, --non-unique 사용중인 UID 다른 유저에게 할당

-r, --system 100이하의 시스템 계정 생성시

-e, --expiredate EXPIRE_DATE(YYYY-MM-DD)

 

# useradd -rou 0 -g 0 -d /root -c "test usertest

# useradd -e 2015-08-31 -G test,root -c "test user" -s /bin/csh test

 

2) userdel : 유저삭제

기본형식 

userdel [옵션유저명

-r, --remove remove home directory and mail spool

 

# userdel -r test

 

3) usermod : 유저변경

usermod [옵션유저명

-a, --append 그룹에 유저추가시 사용 -G 옵션이랑 같이 써야함.

-G, --groups GROUPS

-d, --home-dir HOME_DIR

-s, --shell SHELL

-u, --uid UID

-g, --gid 새로운초기 로그인 그룹 존재하는 그룹이어야함

-c, --comment COMMENT

-o, --non-unique 사용중인 UID 다른 유저에게 할당

-r, --system 100이하의 시스템 계정 생성시

-e, --expiredate EXPIRE_DATE(YYYY-MM-DD)

-l, --login NEW_LOGIN

-L, --lock

-U, --unlock

 

# groupadd myproject

# usermod -a -G myproject test

 

2. 그룹관리

1) 그룹생성 : groupadd

groupadd [options] GROUP

-g, --gid GID

 

# groupadd -g 700 project

 

2)그룹삭제 : groupdel

# groupdel project

 

3) 그룹변경 : groupmod

# groupmod -n myproject project


posted by 귀염둥이채원 2018. 11. 27. 14:20

vim 를 사용하다 보면 자주 부딪치게 되는 문제가 인코딩이다. 

파일을 열었더니 문자가 도저히 알아 볼 수 없는 그런 외계어로 되어있다면 바로 아래방법을 사용하시면 됩니다.


현재 보이는 문자의 인코딩을 수정하는 방법

:e ++enc=utf-8

:e ++enc=euc-kr


현재 파일의 인코딩을 수정하는 방법

:set fileencoding=utf-8

:set fileencoding=euc-kr

posted by 귀염둥이채원 2018. 11. 27. 11:33

# rsync 특정 파일 제외하기

password.txt 파일은 rsync 동기화 시에 제외하기


$ rsync -avz --delete --exclude="password.txt" root@192.168.1.1:/var/www/html/ /var/www/html/


rsync 특정 폴더 제외하기

.svn 폴더는 rsync 동기화 시에 제외하기


$ rsync -avz --delete --exclude=".svn" root@192.168.1.1:/var/www/html/ /var/www/html/



# rsync 특정 파일&폴더 제외하기

$ rsync -avz --delete --exclude="password.txt" --exclude=".svn" root@192.168.1.1:/var/www/html/ /var/www/html/

posted by 귀염둥이채원 2018. 11. 27. 10:15

버전확인하는 명령어


uname -a

uname -r


cat /proc/version

cat /etc/issue


lsb_release -a


posted by 귀염둥이채원 2018. 11. 27. 09:41

WMware 에서 CentOS설치해서 네트워크를 설정하는 방법입니다.

가끔 서버에서 네트웍이 연결이 안되는 일이 있어서 정리합니다.



윈도우의 네트워크 설정에 들어가면 로컬여역과 WMware의 어탭터가 두개 있습니다.


 



1.로컬영역 공유 설정

로컬영역에서 [연결 > 속성 > 공유탭] 으로 들어가서 인터넷 공유를 합니다.

홈 네트워킹 연결에는 VMware의 VMnet8을 선택합니다.







2.VMware의 어댑터 설정

[VMnet8 > 속성 > Internet Protocal Version 4 (TCP/iPv4) ]를 선택하고 속성으로 들어갑니다.


- IP : 192.168.58.1 (중요: 아래에서 VMware의 게이트웨이로 사용됩니다)

- 서브넷마스크 : 255.255.255.0

나머지 케이트웨이나 DNS정보는 입력하지 않아도 됩니다.





3.VMware 네트워크 설정

[ Edit > Virtual Network Editor ] 설정으로 들어갑니다.


아래처럼 위쪽의 VMnet8을 선택하고 설정합니다.

Subnet IP : 192.168.58.0

Subnet mask : 255.255.255.0


그리고 NAT (shared host's IP address with VMs) 를 선택하고 오른쪽의 NAT Settings... 버튼으로 게이트웨이를 설정합니다.

단, 윈도우 네트워크설정에서 VMnet8 에 적어주었던 IP를 입력해야 합니다

 






4.WMware 에 설치된 리눅스의 네트워크설정

아래처엄 VMware 의 [ VM > Settings ] 설정으로 들어갑니다.


 


아래와 같이 Network Adapter 를 NAT로 설정합니다.






5.설치된 리눅스의 네트워크 설정


IP : 192.188.58.201 (중복되지 않는 아이피)

GATEWAY : 192.168.58.1 (윈도우의 WMnet8에서 설정한 IP)

DNS : 192.168.58.1 (윈도우의 VMnet8에서 설정한 IP)



6.데몬 재시작 또는 리붓

# service network restart

또는

# /etc/rc.d/init.d/network restart

posted by 귀염둥이채원 2018. 11. 27. 08:13

iptables 의 명령어에 대해 알아보겠습니다.

 

-A : append a Rule (--append) 정책수립

-D : delete a Rule (---delete) 정책삭제

-C : test packets ( --check)

-R : replace a new Rule(--replace)

-I : insert a rUle(--insert)

-L : show the Rules in the chain (--list) 정책목록확인

-F : delete all Rules (-flush) 모든정책삭제

-Z : make a new chain (--zero)

-N : make a new chain (--new)

-X : delete a new chain (--delete-chain)

-P : change a basic Rules(--policy)

 

제가 옆에 설명달아논것들을 보통 많이쓴답니다.

 

-s : source address (보내는 사람주소 ip)

-d : destination address (받는사람주소ip)

-i : input interface (INPUT ,FORWARD chain에서 사용 가능) -데이터가 들어오는길

-p : protocol name -통신의 언어

-o : output interface (OUTPUT chain 에서 사용 가능) -데이터가 나가는길

-f : 분절

-j : command 이후에 붙이는 옵션

- ACCEPT패킷을 허용

- DROP : 패킷을 허용하지 않으며, 허용하지 안흔ㄴ 메시지를 보내지 않음

 

ICMP방어!

 

ICMP: 목적지의 가용성 확인을 위한 ping메시지에 사용되는 프로토콜

 

예)

 

iptables -A INPUT -p icmp -j DROP

 

해석 -> icmp로 나에게 들어오는것이 있으면 DROP시키겠다.

 

iptables -A INPUT -p tcp --dpotr 7070 -j DROP

 

해석 -> INPUT체인에 protocol은 TCP 이고 destination port는 7070인 패킷을 DROP한다.

 

iptables -A OUTPUT -p udp --sport 6060 -j DROP

 

해석-> OUTPUT 체인에 protocol은 UDP이고 source port는 6060인 패킷을 DROP한다.

posted by 귀염둥이채원 2018. 11. 27. 05:20

하드링크

 

예를들어 abc.txt라는  파일을 만들었다고 칩시다.

 

abc.txt원본파일의 하드링크를 생성하면 habc로 나옵니다.

 

이 하드링크의 특징은 원본파일을 수정해도 하드링크된 파일에게 영향을 주지 않습니다.

 

그냥 복사본같은 느낌이죠?? 근데 완전한 복사본이라고 할 순 없답니다.

 

이번에는 심볼릭링크에 대해 알아보겠습니다.

 

심볼릭링크

 

위에서 링크를 바로가기그 자체라고 표현했는데요 하드링크를 바로가기라고 표현하기엔 약간 무리수 

 

가있고  이게 바로 바로가기의 표본이라고 보면됩니다. 생성하면 sabc로 표현되구요.

 

원본파일이 없어지거나 수정되어지면 이 심볼릭링크는 영향을 받습니다.

 

물론 원본파일이 삭제되면 실행 불가하겠죠??

 

하나 간단한 예를 들어보겠습니다.

 

abc.txt파일이 잇는데 habc와 sabc파일을 만듭니다. 그리고 abc를 삭제합니다.

 

자이제 그럼 sabc는 실행하지못하고 habc는 뭐 아돈케어 하고 실행되겠지요??

 

habc는 원래 원본파일이 쓰던 Inode를 그대로 복사한거니까 실제데이터를 찾아갑니다.

 

abc원본이 삭제해도 Inode는 어딘가에 남아있어서 habc가 그곳을 찾아가는겁니다.

 

 

링크 생성방법에 대해 알려드리겠습니다.

 

hard link

 

ln <링크원본 파일> <링크 파일명>

 

symbol link 

 

ln -s <링크 원본> <링크 파일>

 

하나 예를 들어보자면 

 

ln -s /tmp/abc /sabc

 

항상 절대경로를 써주어야하고요.

 

만약에 심볼링크의 권한을 바꾼다면 심볼링크자체의 권한은 안바뀌지만

 

원본의 권한이 바뀌어버립니다.

posted by 귀염둥이채원 2018. 11. 27. 04:51

 

 

/ (root) 
- 마운트 되는 리눅스 파일 시스템이 있는 최상위 디렉토리 
- 시스템의 근간을 이루는 가장 중요한 디렉토리 
- 파티션 설정 시 반드시 존재하여야 함 
- 절대경로의 기준이 되는 디렉토리 
※ 절대경로 - / 디렉토리 기준 예) /usr/local 
상대경로 - 현재 작업 디렉토리 기준 예) ./local

/bin 
- 리눅스의 기본 명령어(binary)들이 들어있는 디렉토리 
- 시스템을 운영하는데 기본적인 명령어들이 들어 있음.

/sbin 
- 시스템 관리에 관련된 실행 명령어들이 들어있는 디렉토리 
- 시스템 점검 및 복구 명령, 시스템 초기 및 종료 명령 등 시스템 관리에 관련된 실행파일들 존재.

/lib 
- 프로그램들이 의존하고 있는 라이브러리 파일들 존재. 
- /lib/modules : 커널 모듈 파일들 존재. 
- 대부분의 라이브러리들은 링크로 연결되어 있음.

/proc 
- 시스템에 대한 정보를 제공하는 가상 파일 시스템. 
- 커널의 어떤 기능을 제어할 수 있는 역할을 가지고 있음. 
- 대부분 읽기 전용이나, 일부 파일중에는 쓰기가 가능한 파일이 존재 하는데 이러한 파일들에 특정 값을 지정하면 커널 기능이 변하게 됨. 
- 이 디렉토리 내에 있는 파일을 cat 명령을 이용하여 보면 시스템 정보를 확인 할 수 있음. 
예) 인터럽트 정보 확인 ---> cat /proc/interrupts

/etc 
- 시스템 환경 설정 파일이 있는 디렉토리 
- 네트워크 관련 설정파일, 사용자 정보 및 암호정보, 파일 시스템 정보, 보안파일, 시스템 초기화 파일등 중요 설정 파일들의 위치한 디렉토리 
- /etc/CORBA : Common Object Request Broker Architecture (COBRA)에 관한 파일이 들어있음. 
- /etc/X11 : 엑스 윈도우 설정에 관련된 파일들이 있음. 
- /etc/cron.d : crontab 명령의 설정파일이 있음. 
- /etc/cron.daily : 매일 작동하게 하는 crontab 스크립트 파일이 존재. 
- /etc/gnome : GTK+ 정의파일들이 있음. 
- /etc/httpd : 아파치 웹 서버의 설정 및 로그파일이 있음. 
- /etc/logrotate.d : logrotate 설정 파일들이 있음. 
- /etc/mail : 센드메일과 관련된 파일이 있음. 
- /etc/ppp : ppp 설정에 관련된 파일들이 있음. 
- /etc/profile.d : 쉘 로그인 하여 프로파일의 실행되는 스크립트에 대한 정의가 있음. 
- /etc/rc.d : 시스템 초기화와 관련된 스크립트가 존재. 
- /etc/samba : 삼바에 관련된 파일들이 있음. 
- /etc/security : 터미널 보안에 관련된 설정이 있음. 
- /etc/skel : 새로운 사용자를 추가할 때 자동적으로 생성되는 디렉토리와 파일이 있음. 
- /etc/squid : squid 프록시 서버에 관련된 파일이 있음. 
- /etc/ssh : secure shell 설정 파일이 있음 
- /etc/sysconfig : 시스템과 네트워크 설정을 담고 있음. 
- /etc/xinetd.d : 슈퍼데몬 xinetd.d의 서비스 영역을 설정하는 디렉토리.

/var 
- 가변 자료 저장 디렉토리 
- 시스템 운영중에 시스템 자료 데이터가 변경될 때 변경된 자료들이 저장되는 곳. 
- 주로 시스템 작동기록(log)들을 저장. 
- /var/log : 시스템에 발생된 일들에 대한 기록 파일이 있음 
- /var/named : 네임서버 설정 파일들 존재 
- /var/spool/mail : 수신 메일을 사용자 명으로 기록하는 디렉토리

/usr 
- 일반 사용자들을 위한 대부분의 프로그램 라이브러리 파일들이 위치. 
- /usr/bin : 응용 프로그램의 실행 파일이 위치 
- /usr/sbin : 주로 네트워크 관련 실행 명령어와 실행 데몬들을 많이 포함하고 있음. 
- /usr/X11R6 : X-window 시스템에 관련된 파일 존재. 
- /usr/include : 기본 C 라이브러리 헤더 파일과 각종 라이브러리 헤더파일들이 있음. 
- /usr/lib : /usr/bin과 /usr/sbin에 있는 실행 바이너리를 실행하기 위한 라이브러리 존재. 
- /usr/src : 프로그램소스 및 커널 소스들이 보관되어 있는 곳. 
- /usr/man : 매뉴얼 페이지가 담겨있는곳. 
- /usr/local : 새로운 프로그램들이 설치되는 곳 (windows의 Program Files 와 유사)

/mnt 
- 다른 장치들을 마운트 할때 일반적으로 사용하는 디렉토리 
- 다른 디렉토리를 사용하여도 됨.

/home 
- 일반 사용자의 홈 디렉토리가 만들어 지는 디렉토리 
- 사용자 계정을 만들면 게정과 같은 이름으로 새로운 사용자 디렉토리가 /home 디렉토리의 하위 디렉토리로 생성됨.

/boot 
- 부팅에 핵심적인 커널 이미지와 부팅 정보 파일을 담고 있는 디렉토리 
- /etc/lilo.conf에서 지정한 커널 부팅 이미지 파일이 들어 있으며 부팅시 매우 중요한 디렉토리

/root 
- 슈퍼유저(root) 사용자의 홈 디렉토리. 
- / 와 /root 디렉토리는 부르는 이름은 같지만 서로 다름.

posted by 귀염둥이채원 2018. 11. 27. 03:31

리눅스 scp명령어 파일전송/디렉토리전송


SCP명령어는 서버간의 크기가 작은 파일과 디렉토리를 전송할 많이 쓰는 명령어 이다


Server -> Client


spc -r [Server 파일 경로] [사용자계정]@[Clinet IP 주소]:[Client 업로드 경로]

여기서 -R 옵션은 Recuresive를 의미한다 디렉토리를 전송할때 붙여준다


spc -r [Server 파일 경로] [계정]@[Clinet IP 주소]:[Client 업로드 경로] 이렇게 입력하면

Server -> Client로 업로드되 기 때문에 Client의 패스워드를 물어본데 그때 Client 패스워드를 입력후 업로드 하면된다


Server <- Clinet

scp -r [사용자계정]@[Server IP 주소]:[Clinet에서 Server로 다운로드 할 경로] [Clinet에서 다운받을 경로]이고

업로드 명령어에서 두 매개변수의 순서를 바꿔주면 다운로드 동작이 된다


여기서 가장중요한 scp -[옵션]을 입력하는 과정이다

-v [verbose] : 파일/디렉토리가 전송중이 과정을 상세하게 출력한다

-q [quiet] : 에러 및 기타 어떠한 메시지도 출력하는 않는다

-a [archive] : 아카이브 모드로 가조온다

-r  [recursive] : 하위 구조의 디렉토리 모두 재귀적으로 가져온다


TIP : 아카이브모드 - 아카이브모드는 파일/디렉토리를 전송 후 퍼미션 소유주 및 위치까지 그대로 가져온다

posted by 귀염둥이채원 2018. 11. 27. 02:33

리눅스 find명령어


리눅스에서 find명령어는 파일 시스템에서 주어진 조건으로 파일을 찾는다

find /대상디렉토리 -옵션 처리방법

대상 디렉토리 : 찾을 파일의 시작할 디렉토리를 지정한다

옵션 : 찾을 조건을 입력한다

-name 파일 이름 : 파일 이름으로 찾는다


-atime +n

access time이 n일 이전인 파일을 찾는다

ex) find /etc -atime +7 : 7일 이전에 파일을 검색한다


-atime -n

access time이 n일 이내 파일을 찾는다

ex) find /etc -atime +n : 7일 동안 파일을 검색한다


-mtime +n

n일 이전에 변경된 파일을 찾는다

ex) find /etc/ -mtime +7 : 7일 이전에 파일을 검색한다


-mtime -n

n일 이내의 변경된 파일을 찾는다

ex) find /etc/ -mtime -7 : 7일 이내에 파일을 검색한다 

-perm nnn

파일 권한이 nnn인 파일을 찾는다

ex) find /etc/ -perm nnn : nnn일 권한을 가진 파일을 찾는다


-type x

파일 type이 x인 파일을 찾는다

ex) find /etc/ -type x : 파일 타입이 x인 파일을 찾는다


-size n

사이즈가 n이상인 파일들을 찾는다

find /etc -size 8 : 파일을 8이상인 파일을 찾는다


-links n

링크된 개수가 ndls vkdlfemfdmf ckwsmsek


-user username

user 이름으로 찾는다

ex) find /etc -user nobody : nobody이름으로 찾는다 


-group nobodygroup

그룹이름을 찾는다


-print

찾은 파일의 절대 경로명을 화면에 출력한다


-exec cmd {};

찾은 파일들에 대한 cmd 명령어를 실행한다


find [찾을 디렉토리경로] [찾기옵션] [찾은후행할 작업]


찾기홉션

-empyty : 비어있는파일

gidn : 특정 gid를 갖는 파일

group gname : 특정 grop에 속한 파일

name : wlwjdgks gudtlrdmf rkwsms vkdlfdlfma

newer : 특정 파일 이후에 생성된 파일

perm : 특정 허가모드를 가지고 있는 파일

uid n : 특정 uid를 갖는 파일

used n : 특정파일을 소유하고 있는 소유자의 파일


[찾은후 행할 작업]

-print : 찾은 파일을 보여준다

-exec : 찾은 파일들에 대해 특정명령을 수행한다


그럼, 사용예를 들어 보겠습니다.


find . -uid 504 -print


./home/sspark

./home/sspark/.Xdefaults

./home/sspark/.bash_logout

./home/sspark/.bash_profile

./home/sspark/.bashrc


위의 예는 현재디렉토리(.)에서부터 uid가 504인 사용자의 파일을 찾아서 보여달라는 것입니다.(-print)


find ~sspark -name *.shtml -print

./home/sspark/public_html/sample.shtml

./home/sspark/public_html/testpass/sample.shtml

./home/sspark/public_html/testdir/sample.shtml


위의 예는 sspark이라는 사용자의 소유로된 파일중 shtml로 끝나는 파일을 찾아서 보여달라는 것입니다.


find ~sspark -name *.doc -exec rm -f {} \;


위의 예는 sspark이라는 사용자의 홈디렉토리(~sspark)이하에 존재하는 doc로 끝나는(*.doc) 파일을 찾아서 묻지말고(-f) 지워(rm)버리라는 명령어입니다.


이 명령어는 웹호스팅사용자에게 보다도 서버관리자에게 더욱 유용한 명령어로서 서버관리를 하다보면 어떤 파일이 어디에 위치하고 있는지 찾아야 할 때가 많습니다. 이런 경우에 매우 유용하게 사용됩니다.

 
find /user4 -name test* -print

/user4 아래에서 파일이름이 test로 시작하는 모든 파일을 찾아서 화면에 
보여준다.

cd / 
find . -name ping -print

root 디렉토리 밑에서 파일이름이 ping인 파일을 찾아 절대 경로명을 화면에 
출력한다.

cd / 
$ find /usr -name *.c -print

/usr 밑에 이름이 .c로 끝나는 모든 파일들을 찾아 경로명을 보여준다.

$ cd / 
$ find $home -name who.txt -print

home 디렉토리 아래에 who.txt라는 파일을 찾아 경로명을 보여준다.

$ cd / 
$ find . -type d -print

파일 타입이 d인 파일을 찾아 경로명을 화면에 출력한다.

$ cd / 
$ find /dev -type c -print

/dev디렉토리 아래에서 파일 타입이 c인 파일을 찾아 경로명을 보여 준다.

$ cd / 
$ find . -perm 700 -print

파일 권한이 700인 파일을 찾아준다.

$ cd / 
$ find . \ ( -perm 400 -o -perm 200 ) -print

파일 권한이 400인 파일과 200인 파일을 찾아준다. 
(주의 : "\"의 앞뒤에 space 가 반드시 있어야 한다.)

$ cd / 
$ find . -size +1024 -print

파일의 블럭 크기가 1024 이상인 파일을 찾아준다.

$ cd / 
$ find . -name core -size +2048 -print

파일 이름이 core이고 크기가 2048블럭 이상인 파일을 찾아준다.

$ cd / 
$ find . -user unix01 -print

파일 소유자가 unix01인 파일을 찾아준다.

$ cd / 
$ find . -group unix -print

사용자그룹이 unix인 파일을 찾아준다.

$ cd / 
$ find . -atime +30 -print

30일 이전에 억세스되었던 파일을 찾는다.

$ cd / 
$ find . -mtime -7 -print

7일 이내에 수정된 적이 있는 파일을 찾는다.

$ cd / 
$ find . -name core -exec ls -l {} \;

이름이 core인 파일을 찾아서 ls -l 한다.

$ cd / 
$ find . -name \*.c -atime +30 -exec ls -l {} \;

30일 이전에 억세스된 파일 중 *.c를 찾아 ls -l 한다.

$ cd / 
$ find . -name core -exec rm -i {} \;

현재 디렉토리 밑에서 이름이 core인 파일을 찾아 지운다(지우기 전에 정말 
지울 지를 물어본다.)

grep와 함께 사용한 find명령어 strcpy 문자열을 포함한 현재디렉토리 아래의 *c파일
grep strcpy `find ./ -name *c`


8. 최상위 root에서 파일 찾기
find /
 home directory 밑에서 찾기
find ~ -name sample
 find ~ -name 'file*'
 home directory에서 파일명에 file이 들어가면서 타입이 f(일반파일인)경우
find ~ -name 'file*' -a -type f
특정 디렉토리에서 사용자 unix05가 만든 파일 찾기
find /data2/unix -user unix05

9. core
실행하다가 오류가 있는 파일 core
(ex. sleep 20) ctrl+\ 강제종료하면 core 파일이 생성됨
실행하다가 종료되어도 생김 (cat으로 열수 없음(개발자가 debugger로만 확인할 수 있음, 파일 크기가 굉장히 큼)

core파일 찾기
find ~ -name core
core파일 삭제
find ~ -name core -exec rm {} \;
HDD 용량 줄이기 
find / -name core -exec rm {} \;

10. passwd 파일을 찾을 때 뜨는 2>(오류메시지)를 /dev/null로 보냄 -오류메시지 안 보임
find / -name passwd 2> /dev/null
ls -i passwd (passwd 파일의 inode찾기)
find / -inum 108235 2> /dev/null (inode가 같은 것을 찾음)

11. 최근 3일 사이에 마지막 수정되고 파일타입은 일반타입인 로그파일(/var/adm에 있음) 찾기
find /var/adm -mtime -3 -a -type f

12. /etc 디렉토리에서 일반파일 중 파일의 크기가 4096 byte 이하인 파일 찾기 (1block = 512byte)
 find /etc -size -8 -a -type f
 find /etc -size -1 -a -type f 2> /dev/null 512바이트 이하 파일 찾기 (오류메시지는 /dev/null로 보내기)

13. etc + k 이전에 입력했던 내용
| more 내용을 페이지별로 보여주기 (많은 내용일 경우)



find ~ -name '*.sql' -exec grep -il 'linkcomp' {} \; 

1 2