Mail 서버구축


sendmail 설치 


 1.  /usr/local/src 디렉토리로 이동후 wget 사용해서 sendmail 다운받고 해당디렉토리로 이동

[root@server114 ~]# cd /usr/local/src

[root@server114 src]# cd sendmail-8.15.1 

[root@server114 sendmail-8.15.1]#

 


 2. smtp 가 주석처리 돼있는지 확인해서 되어있으면 삭제    (왜? 이거뭔데??)

[root@server114 sendmail-8.15.1]# grep smtp /etc/services

smtp            25/tcp          mail

smtp            25/udp          mail

smtps           465/tcp                         # SMTP over SSL (TLS)

rsmtp           2390/tcp                        # RSMTP

rsmtp           2390/udp                        # RSMTP


 


  3. make로 컴파일후 프로그램설치 (컴파일시 디렉토리가 없어서 에러남 그래서 디렉토리 먼저 만듬)


[root@server114 sendmail-8.15.1]# mkdir -p /usr/man/man8

[root@server114 sendmail-8.15.1]# mkdir -p /usr/man/man1

 

[root@server114 sendmail-8.15.1]# mkdir -p /usr/man/man5


[root@server114 sendmail-8.15.1]# make

......(컴파일목록)

[root@server114 sendmail-8.15.1]# make install

.......(설치목록)



 sendmail 설정파일 생성


 4. 설정파일이 있는 디렉토리로 이동 후 리눅스버전이므로 sendmail.mc파일로 변경


[root@server114 sendmail-8.15.1]# cd cf/cf

[root@server114 cf]#

[root@server114 cf]# pwd

/usr/local/src/sendmail-8.15.1/cf/cf

[root@server114 cf]# mv generic-linux.mc sendmail.mc

 


5. vi sendmail.mc 파일열어서 아래 나용 추가

    (access.db, domainaliases.db등등 자동으로 생성하기 위함) 후, 설정파일 빌드

[root@server114 cf]# vi sendmail.mc


FEATURE(access_db)dnl
FEATURE(virtusertable, btree /etc/mail/domainaliases.db)dnl
FEATURE(genericstable, btree /etc/mail/useraliases.db)dnl
FEATURE(accept_unqualified_senders)dn

[root@server114 cf]# sh Build sendmail.cf
[root@server114 cf]# ls sendmail.cf
sendmail.cf

 


 6. 설정파일 install 하면 /etc/mail 디렉토리로 이동됨


[root@server114 cf]# make install-cf

../../devtools/bin/install.sh -c -o root -g bin -m 0444 sendmail.cf /etc/mail/sendmail.cf

../../devtools/bin/install.sh -c -o root -g bin -m 0444 submit.cf /etc/mail/submit.cf

You have new mail in /var/spool/mail/root

[root@server114 cf]# ls /etc/mail

access          helpfile          Makefile     submit.cf      virtusertable.db

access.db       local-host-names  sendmail.cf  submit.mc

domaintable     mailertable       sendmail.mc  trusted-users

domaintable.db  mailertable.db    statistics   virtusertable

[root@server114 cf]#


 




  7. sendmail 중요 설정파일 생성 및 설정 (access)

[root@server114 mail]# vi access                                                                          access는 sendmail의 접근을 제어하는 파일.

# Check the /usr/share/doc/sendmail/README.cf file for a description             호스트나 도메일을 허용하는 의미는 RELAY.

# of the format of this file. (search for access_db in that file)                             반대는 REJECT. 

# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc

# package.

#

# by default we allow relaying from localhost...

Connect:localhost.localdomain           RELAY

Connect:localhost                       RELAY

Connect:127.0.0.1                       RELAY

Connect:172.16.5.114                    RELAY

~


 


  8. sendmail 중요 설정파일 생성 및 설정 (aliases)


[root@server114 mail]# vi aliases        

webmaster: root    

                                 

  //aliases 설정파일은 특정 계정으로 메일을 보냈을 경우 그 계정으로 메일이 도 착하지 않고 이 파일에 지정된 다른 계정으로 메일이 

      전송될 수 있게 함.특정 사 용자에게 온 메일을 다른 사람에게 보내주거나 리스트를 작성해야 하는 경우에 사용되 는 파일.

ex) admin 계정에게 보내는 메일 

     admin : Gz@ab.com, gz@abcd.com

ex) manager계정으로 오는 메일을 webmaster와 root로 전달 

     manager : root, webmaster

ex) manager 계정으로 오는 메일을 /etc/mailist/manager 파일에 계정들에게 전달 

     manager:: include:/etc/maillist/manager


 



 9. makemap이란 프로그램을 사용하여 Sendmail이 인식할 수 있는 DB 형태로 만듬


[root@server114 mail]# touch local-host-names                    //사용하고자 할 도메인 이름을 입력하면 사용할수있는데 

[root@server114 mail]#                                                   여기서는 빈 파일로 생성함.

[root@server114 mail]# makemap hash access < access

[root@server114 mail]# ls access.db

access.db



 

 

  10. aliases.db 파일 생성하기위한 단계

[root@server114 mail]# mkdir -p /var/spool/mqueue                  

[root@server114 mail]# chmod 755 /var/spool/mqueue

[root@server114 mail]# newaliases

[root@server114 mail]# ls aliases.db

aliases.db


 

  

11. sendmail 데몬시작

[root@server114 mail]# which sendmail

/usr/sbin/sendmail

[root@server114 mail]# /usr/sbin/sendmail -Ac -q1h                     // 중계용데몬

[root@server114 mail]# /usr/sbin/sendmail -bd -q1h                    // 제출용(수신용)데몬

[root@server114 mail]#

[root@server114 mail]#

[root@server114 mail]# ps -ef | grep -v grep | grep sendmail

root      3130     1  0 19:15 ?        00:00:00 sendmail: accepting connections

smmsp     3138     1  0 19:15 ?        00:00:00 sendmail: Queue runner@01:00:00 for /var/s        pool/clientmqueue

smmsp     8587     1  0 23:03 ?        00:00:00 sendmail: Queue runner@01:00:00 for /var/s        pool/clientmqueue

smmsp     8781     1  0 23:29 ?        00:00:00 sendmail: Queue runner@01:00:00 for /var/s        pool/clientmqueue

root      8784     1  0 23:29 ?        00:00:00 /usr/sbin/sendmail -bd -q1h

 

[root@server114 mail]#


 

 


 12. sendmail TEST 및 메일 로그 확인


[root@server114 mail]# telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 localhost.localdomain ESMTP Sendmail 8.13.8/8.13.8; Thu, 12 Feb 2015 23:32:51 +0900

mail from : ******@gmail.com

250 2.1.0 ****@gmail.com... Sender ok

rcpt to : d****@gmail.com

250 2.1.5 ****@gmail.com... Recipient ok (will queue)

subject : Test mail

500 5.5.1 Command unrecognized: "subject : Test mail"

data

354 Enter mail, end with "." on a line by itself

hello

bye

.

250 2.0.0 t1CEWprk008797 Message accepted for delivery

quit

221 2.0.0 localhost.localdomain closing connection

Connection closed by foreign host.

[root@server114 mail]#


[root@server114 mail]# cd /var/log
[root@server114 log]# tail -f maillog
Feb 12 23:30:26 server114 sendmail[8784]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon MTA: cannot bind: Address already in use
Feb 12 23:30:26 server114 sendmail[8784]: daemon MTA: problem creating SMTP socket
Feb 12 23:30:31 server114 sendmail[8784]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon MTA: cannot bind: Address already in use
Feb 12 23:30:31 server114 sendmail[8784]: daemon MTA: problem creating SMTP socket
Feb 12 23:30:36 server114 sendmail[8784]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon MTA: cannot bind: Address already in use
Feb 12 23:30:36 server114 sendmail[8784]: daemon MTA: problem creating SMTP socket
Feb 12 23:30:36 server114 sendmail[8784]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon MTA: server SMTP socket wedged: exiting
Feb 12 23:33:19 server114 sendmail[8797]: t1CEWprk008797: Authentication-Warning: localhost.localdomain: server114 [127.0.0.1] didn't use HELO protocol
Feb 12 23:34:16 server114 sendmail[8797]: t1CEWprk008797: from=****@gmail.com, size=10, class=0, nrcpts=1, msgid=<201502121433.t1CEWprk008797@localhost.localdomain>, proto=SMTP, daemon=MTA, relay=server114 [127.0.0.1]
Feb 12 23:34:16 server114 sendmail[8797]: t1CEWprk008797: to=****@gmail.com, delay=00:00:26, mailer=esmtp, pri=30010, dsn=4.4.3, stat=queued

 

   

'linux' 카테고리의 다른 글

[서버구축] FTP  (73) 2016.03.08
[서버구축] DNS  (121) 2016.03.08
Shell Script  (163) 2016.03.08
Visual Editor(vi editor) 명령어 / network 정보  (153) 2016.03.08
[명령어] - 3. Process / RPM / Cron 관리  (160) 2016.03.08



FTP 서버구축

  

   1.  /usr/local/src 디렉토리로 이동후 wget 사용해서 vsftpd 다운받기

[root@server114 ~]# cd /usr/local/src

[root@server114 src]#

[root@server114 src]#

[root@server114 src]# pwd

/usr/local/src

[root@server114 src]# wget https://security.appspot.com/downloads/vsftpd-3.0.2.tar.gz




 

  2. 압축해체하고 해당 디렉토리로 이동후, 디렉토리생성

[root@server114 src]# tar zxf vsftpd-3.0.2.tar.gz

[root@server114 src]# cd vsftpd-3.0.2

[root@server114 vsftpd-3.0.2]# 
[root@server114 vsftpd-3.0.2]# mkdir -p /usr/local/sbin /usr/local/man/man{5,8}
[root@server114 vsftpd-3.0.2]# mkdir /var/ftp

 



  3. ftp 사용자의 권한을 root.root로 셋팅해서 익명접속 가능하게하고 og-w 이용해 쓰기권한 삭제

[root@server114 vsftpd-3.0.2]# chown root.root /var/ftp

[root@server114 vsftpd-3.0.2]chmod og-w /var/ftp
[root@server114 vsftpd-3.0.2]#  





  4. make; make install로 설치(bind와는 다르게 configure 지정안함) 후 필요한 파일들 복사

[root@server114 vsftpd-3.0.2]# make

[root@server114 vsftpd-3.0.2]# make install
[root@server114 vsftpd-3.0.2]# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd(pam 파일 복사:vsftpd 로그인 인증방법중 pam방식 사용이 필요한 파일)
[root@server114 vsftpd-3.0.2]# cp RedHat/vsftpd.log /etc/logrotate.d/vsftpd  (로그 설정파일복사 . logrotate설정파일)
[root@server114 vsftpd-3.0.2]# cp vsftpd.conf /etc/vsftpd.conf                  (환경설정 파일 복사)   
[root@server114 vsftpd-3.0.2]#
[root@server114 vsftpd-3.0.2]#

 


 5. vi /etc/vsftpd.conf  설정변경   

12 anonymous_enable=YES

15 local_enable=YES

18 write_enable=YES
22 local_umask=022
35 dirmessage_enable=YES
38 xferlog_enable=YES
41 connect_from_port_20=YES
51 xferlog_file=/var/log/vsftpd.log
112 listen=NO

118 pam_service_name=vsftpd 




 

  6. xinetd 재시작후 ftp 로컬호스트 name, passwd 입력 ( 먼저 계정 생성후)  

[root@server114 vsftpd-3.0.2]# /etc/init.d/xinetd restart
[root@server114 vsftpd-3.0.2]# ftp localhost
Connected to server114.
220 (vsFTPd 3.0.2)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): dahye
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp>
ftp> bye
221 Goodbye.
 

​ 

 

  7 /var/ftp  들어가서 ftp서버에서 보여질 폴더생성 한후 폴더안에 들어갈 파일 생성

[root@server114 vsftpd-3.0.2]# cd /var/ftp

[root@server114 ftp]#

[root@server114 ftp]# mkdir sercet

[root@server114 ftp]# vi hello.txt                      -> 보여질 내용 적기.









  8. vi named.conf 파일수정  zone 파일생성


[root@server114 ftp]# cd /usr/local/dns/etc

[root@server114 etc]#

[root@server114 etc]# vi named.conf               -> dns와 연동하기 위해서 파일수정.


zone "server114" IN{

type master; 

file "zone-server114";                              ->추가.

};  


[root@server114 etc]# cd /var/named

[root@server114 named]# vi zone-server114 

$TTL 86400


@       IN      SOA     @       root. (


        42              ;serial (d. adams)

        3H              ; refresh

        15M             ; retry

        1W              ; expiry

        1D )            ; minimum


        IN      NS      @

        IN      A       172.16.5.114

www   IN      A       172.16.5.114

ftp     IN      A       172.16.5.114



   

 


9. ftp://내ip주소            접속!

    ftp://root@server114   접속!



'linux' 카테고리의 다른 글

[서버구축] Mail  (30) 2016.03.08
[서버구축] DNS  (121) 2016.03.08
Shell Script  (163) 2016.03.08
Visual Editor(vi editor) 명령어 / network 정보  (153) 2016.03.08
[명령어] - 3. Process / RPM / Cron 관리  (160) 2016.03.08



DNS 서버구축




BIND 설치


   1.  /usr/local/src 디렉토리로 이동후 wget 사용해서 bind 다운받기

[root@server114 ~]# cd /usr/local/src

[root@server114 src]#

[root@server114 src]#

[root@server114 src]# pwd

/usr/local/src

[root@server114 src]# wget ftp://ftp.isc.org/isc/bind9/9.10.1-P1/bind-9.10.1-P1.tar.gz

--20:19:42--  ftp://ftp.isc.org/isc/bind9/9.10.1-P1/bind-9.10.1-P1.tar.gz

           => `bind-9.10.1-P1.tar.gz'

Resolving ftp.isc.org... 204.152.184.110, 2001:4f8:0:2::18

Connecting to ftp.isc.org|204.152.184.110|:21... connected.

Logging in as anonymous ... Logged in!

==> SYST ... done.    ==> PWD ... done.

==> TYPE I ... done.  ==> CWD /isc/bind9/9.10.1-P1 ... done.

==> SIZE bind-9.10.1-P1.tar.gz ... 8356463

==> PASV ... done.    ==> RETR bind-9.10.1-P1.tar.gz ... done.

Length: 8356463 (8.0M)

100%[=======================================>] 8,356,463    803K/s   in 15s

20:19:59 (551 KB/s) - `bind-9.10.1-P1.tar.gz' saved [8356463]



  2. 압축해체하고 해당 디렉토리로 이동후, 경로옵션 지정후 시스템에 적당한 환경파일 생성하기

[root@server114 src]# tar zxf bind-9.10.1-P1.tar.gz

[root@server114 src]# ls

bind-9.10.1-P1  bind-9.10.1-P1.tar.gz

[root@server114 src]#

[root@server114 src]# cd bind-9.10.1-P1


[root@server114 bind-9.10.1-P1]# ./configure  --prefix=/usr/local/dns     (/usr/local/dns 디렉토리 생성한뒤)




​  3. make로 컴파일후, 프로그램설치

[root@server114 bind-9.10.1-P1]# make

......(컴파일목록)

[root@server114 bind-9.10.1-P1]# make install

.......(설치목록)







파일 환경설정 named.conf


 1. /usr/local/dns/etc 로 이동 후 vi로 named.conf 파일 생성

[root@server114 bind-9.10.1-P1]# cd /usr/local/dns/etc

[root@server114 etc]# ls

bind.keys

[root@server114 etc]# vi named.conf


? ​/usr/local/dns 디렉토리 생성 안하고 configure 했더니 /usr/local/dns/etc 에 bind.key 파일이 존재하지 않았음. 

 그래서디렉토리 생성후 다시 configure함. (bind-9.10.1-P1에서 configure.) 그럼, 전에 make install했던 나의 bind.key는 어디로 간거야? 읭??????


 2. named.conf 환경설정하기


/*

directory : 네임서버에서 데이터베이스 역활을 하는 존(zone)파일의 위치를 설정
dump-file :   named는 정보가 갱신될 때 dump파일로 저장하는데 그 덤프파일이 생성될 위치아 파일명을 지정
statistics-file : 네임서버의 통계를 낼 경우에 사용하는 옵션으로 메모리 통계 파일을 생성할 위치와 파일명 지정
allow-transfer : zone 파일의 내용을 복사할 대상에 제한을 걸 때 지정
*/




options {
        directory "/var/named";
        dump-file "/var/tmp/named_dmp.db";
        statistics-file "/var/tmp/named.stats";
        pid-file "/var/run/named.pid";
        allow-transfer { 172.16.5.114; };        
};
logging {
        category lame-servers { null; };
        category notify { null; };
};


zone "localhost" IN {
        type master;
        file "zone-localhost";
}; 

zone "naver.com" IN {
        type master;
        file "zone-naver.com";
};




​ 

파일 환경설정 zone file


1. /var/named 디렉토리 생성후 이동해서 zone file 작성

[root@server114 var]# mkdir /var/named

[root@server114 var]# cd /var/named

[root@server114 named]#

[root@server114 named]# vi zone-localhost


2zone-localhost 환경설정하기

[root@server114 named]# vi zone-localhost


$TTL 86400

@       IN      SOA     @       root (

        42              ; serial (d. adams)

        3H              ; refresh

        15M            ; retry

        1W             ; expiry

        1D )            ; minimum


        IN      NS      @

        IN      A       172.16.5.114

 


3. zone-naver.com 환경설정하기

[root@server114 named]# vi zone-naver.com


$TTL 86400

@       IN      SOA     @       root (

        42              ; serial (d. adams)

        3H              ; refresh

        15M            ; retry

        1W             ; expiry

        1D )            ; minimum


        IN      NS      @

  


        IN      A       173.194.127.152              

www   IN      A       173.194.127.152                  -> 순서 바뀌면 존파일 확인오류뜸.

 


4. zone file 확인하기. (/usr/local/dns/sbin 으로 이동한 뒤)

[root@server114 named]# cd /usr/local/dns/sbin

[root@server114 sbin]# ./named-checkzone naver.com /var/named/zone-naver.com

zone naver.com/IN: loaded serial 42

OK

[root@server114 sbin]# ./named-checkzone localhost /var/named/zone-localhost

zone localhost/IN: loaded serial 42

OK

 

[root@server114 sbin]#

 


5. 설정확인 및 테스트

[root@server114 sbin]# ./named

[root@server114 sbin]# ps -ef | grep -v grep | grep named

root     16297     1  0 23:25 ?        00:00:00 ./named




 DNS 서버 변경후 네트워크 재시작


 1. /etc/resolv.conf 열어서 변경하고 네트워크재시작 후 dns 서버변경 확인


[root@server114 sbin]# vi /etc/resolv.conf                                    ; dns서버를 내 아이피주소로 설정함.

[root@server114 sbin]# service network restart

Shutting down interface eth0:                              [  OK  ]

Shutting down loopback interface:                          [  OK  ]

Bringing up loopback interface:                            [  OK  ]

Bringing up interface eth0:                                [  OK  ]





2. nslookup으로 변경 확인

[root@server114 named]# nslookup

> naver.com

Server:         172.16.5.114

Address:        172.16.5.114#53


Name:   naver.com

Address: 173.194.127.152      -> 구글 ip주소.

>


>> VMware상 RHEL5 인터넷켜서 naver.com치면 google열림


'linux' 카테고리의 다른 글

[서버구축] Mail  (30) 2016.03.08
[서버구축] FTP  (73) 2016.03.08
Shell Script  (163) 2016.03.08
Visual Editor(vi editor) 명령어 / network 정보  (153) 2016.03.08
[명령어] - 3. Process / RPM / Cron 관리  (160) 2016.03.08


Shell 종류

 Bourn sh  :  최초의 shell 

 C sh   :  근대적 shell의 시초

 Korn sh :  유닉스계열에서 많이 사용

 Bash sh  리눅스 기본쉘

 /bin/sh

 /bin/csh

 /bin/ksh

 /bin/bash


- 각각의 쉘마다 처리하는 명령어가 다를수 있음

- 실행파일의 위치

/bin

/usr/bin  (일반사용자)

/usr/sbin (루트사용자)


Shell Script형식

 

실행방법 : sh 명령이용 or 실행권한을 주고 ./로 실행

# : 주석처리 (첫줄은 #!/bin/bash 로 예외, 이 스크립트를 수행할 shell이름 적는 부분)


- echo : 내용을 화면에 출력 (=printf)

  ex) echo  -n 출력할 문장 "   ( -n: 줄을 바꾸지 않고 연속적으로 출력 )

       echo  `실행할 명령어 


- 변수사용 데이터를 저장하기 위한 임시 기억 공간

변수지정 : 변수명=값 ( = 기호 좌우에 공백불허용, 변수값안에 공백이 있을경우 반드시 " "로 묶어줘야함)

변수호출 : echo $변수명

환경변수 : 변수 중에서 서버를 운영하기 위해 미리 생성되어 있는 변수 (환경변수명은 대문자로 사용함)

      환경변수의값은 /etc/profile 이나 사용자의 홈디렉토리안에 .bash_profile등에 설정되어있음


- read함수 : ​사용자로부터 값을 입력받아 변수에 저장 (=scanf),  변수를 먼저 선언할 필요없이 바로 사용. 

ex)   read name 

echo " Name: $name"

- argument(인수)를 사용한 실행 : 사용자에게 인수를 입력받아 출력.         $0            $1       $2       $3

ex)  echo "name : $1, address: $2 , Tel: $3, filename: $0"         [root]#  sh echo_test.sh dahye incheon 4387  

 

크기비교 [  공백 주의!! ]


[ $A -gt  $B ] : A > B

[ $A -lt $B ] : A < B

[ $A -ge $B ] : A ≥ B

[ $A -le  $B ] : A ≤ B

[ $A -eq $B ] : A = B 

[ $A -ne $B ] : A ≠ B



자계산


(`expr ` 사용해 연산, 모든데이터를 문자로 취급하기때문)


 ex) hap=`expr  $A  +  $B`    ( ` ` 역따옴표 표시 꼭 해야함) 

 * 연산자와,  ( ) 괄호 에는 꼭 탈출문자\를 사용해야함

  expr 구문안에서의 모든 연산자와 기호, 변수 사이에는 공백으로 

  한칸 씩 띄워줘야한다

 ex) result=`expr  \(  $A  +  $B  \)  \*  $C` 



문자열 비교 [  공백 주의!! ]  


 [ "string1" = "string2" ]    : 두문자열 같을 경우  

 [ "string1" != "string2" ]   : 두문자열 다를 경우

-z "string" ]      :  문자열의 길이 0인경우 

   [ -n "string" ]      :  문자열의 길이 0아닌경우



 

파일관리 -옵션 파일명 ]


-f : 파일이 있는경우

-s : ​파일이 존재하고 내용이 있는 경우

-d : 디렉토리인 경우                         

-r : 읽기 가능한 파일일 경우  

-w : 쓰기 가능한 파일일 경우

-x : 파일이 존재하고 실행 가능할 경우

!-옵션 : 옵션의 조건이 아닐 경우


 



조건문(if, case)과 반복문(for, while)



if    

case 

for 

while / until


if [ 조건 ];then

   실행문장

   exit

elif [ 조건 ];then  

   실행문장

   exit 

else

   if[조건];then

       실행문장

   elif[조건];then

       실행문장

   fi

fi    

 

case 변수 in

패턴 1)

   실행명령 ;;

패턴 2)

   실행명령 ;;

패턴 3)

   실행명령 ;;

*)

   실행명령 ;;

esac

 

       for 변수  in

       do

            for 변수 in

            do

     실행문장

            done

       done


    while or until [조건문]

      do

          반복할 문장

      done


        

 - 연습문제 : * 찍기!!!



'linux' 카테고리의 다른 글

[서버구축] FTP  (73) 2016.03.08
[서버구축] DNS  (121) 2016.03.08
Visual Editor(vi editor) 명령어 / network 정보  (153) 2016.03.08
[명령어] - 3. Process / RPM / Cron 관리  (160) 2016.03.08
[명령어] - 2. 권한 / 디스크 관리  (153) 2016.03.08


Vi Editor

 

Vi mode

command mode(기본모드)​대부분의 작업이 이 모드에서 진행됨.

delete, change, copy, move next, cursor 위치변경, text strings 검색, vi editor 종료 등


edit mode(편집모드) - ​기본모드에서 아래의 키를 입력하면 편집모드로 변환,


O 

I 가         나   i       a    라       마   A
o               (현재커서위치)


- last line mode편집모드에서ESC(=기본모드) ->  :(콜론),/,?를 눌러 변환 ) : 저장, 검색, 치환




Vi 명령어


- 새로운글자 입력

i : 커서 앞 text추가
: 커서 뒤 text추가
o : 커서 아래에 새로운 줄이 생성되어 text추가
 I : 커서 있는 줄 가장 앞쪽에 text추가
A : 커서 있는 줄 가장 뒤쪽에 text추가
O : 커서 위에 새로운 줄을 생성되어 text추가


- 위치이동

  h      j       k       l

 ←     ↓      ↑      →

 

 w  : 앞으로 한단어 이동                       ctrl + : 한페이지 아래로(f), 위로(b)

 b :  로 한단어 이동                                      반페이지 아래로(d), 위로(u) 

 e : 재 단어의 끝으로 이동

 $ :  현재라인의 끝으로 이동 

 0 :  현재라인의 처음으로 이동


- 글자삭제

x : 커서가 위치한 한글자 cut

dw : 위치한 곳에서부터 한단어 cut

dd : 커서 라인 cut

D : 커서가 위치한 곳에서부터 라인의 마지막 부분까지 cut

:5, 10d : 5~10번째 라인 delete    (:13, .d : 13번째부터 현재커서위치까지 라인 delete)


- 글자변경

J :  현재라인, 아래쪽라인  join

~ :  대소문자 변경

u : 이전 command 원상태로 돌림 (= ctrl +z (윈도우))

U : 현재라인 모든변경 원상태로 돌림


- 글자검색

/string :  해당string을 아래로 진행하며 검색

?string :  해당string을 위로 진행하며 검색

: string의다음위치 검색

string의이전위치 검색

:%s/old/new/g : file에서 old문자를 new문자로 교체


- 복사/붙여넣기

yy : 커서가있는 줄 복사

p : 커서가 위치한 아랫줄에 붙여넣기

P 커서가 위치한 윗줄에 붙여넣기 

:1,3 co 5 : 1~3번 라인을 복사해 5번 다음 라인에 붙여넣기

:4,6 m 8 : 4~6번 라인을 8번 라인으로 이동


- 저장

:w : 변경사항 저장

:w new_filename : new_filename으로 저장

:wq : 변경사항 저장하고 종료 (일반계정)

:wq! : 강제로 변경사항 저장하고 종료 (root계정)

:q! : 변경사항 저장하지않고 강제종료


- 각종설정

:set nu : 라인 number 보기/ nonu (숨기기)

:set noic : 검색시 대소문자 구분

- 이동

G : 마지막라인으로 이동

1G : 첫라인으로 이동

:21 : 21번줄로 이동


네트워크정보

 ~p336 )


IP MAC

-IP Address : 공인ip/사설ip

-MAC(media access control) Address (=hardware address)


Subnet mask



파일위치 (Linux 서버에서 ip관련 파일

ip관련 파일 : /etc/sysconfig/network-scripts

eth0 (첫번째 랜카드)

eth1 (두번째 랜카드)

- 서버이름 : /etc/sysconfig/network

- ip, gw, netmask  /etc/sysconfig/network-scripts/ifcfg-eth0

- dns /etc/resolv.conf

 


 * neat : 리눅스에서 네트워크설정 창(GUI환경) 띄우는 명령어 

 (eth0편집 설정변경후 /etc/init.d/network restart 로 네트워크 재시작)





'linux' 카테고리의 다른 글

[서버구축] DNS  (121) 2016.03.08
Shell Script  (163) 2016.03.08
[명령어] - 3. Process / RPM / Cron 관리  (160) 2016.03.08
[명령어] - 2. 권한 / 디스크 관리  (153) 2016.03.08
[명령어] 1. 기본 / 사용자관리  (173) 2016.03.08


Process 관리



 PID(process ID) PPID

- PID : 각 프로세스마다 할당 받는 고유번호  

- PPID : ​부모프로세스의 고유번호

 (부모프로세스는 자신을 Fork해서 자식프로세스를 생성, 부모가 삭제되면 자식들은 defunct 프로세스가됨)

 명령어

 - ps -ef : 현재 작동하고 있는 프로세스들의 목록(process status)

 - pstree : 작동하는 프로세스들을 Tree형태로 정리해서 보여줌 

 - top : 작업관리자 같은역할을 하는 프로그램

          (실시간모니터링, ctrl+c :중단 / shift+p : CPU사용량 shift+m : 메모리사용순으로 정렬 )

     -c : 프로세스가 수행중인 명령까지 나타냄

 - kill : 종료           ex) kill [-signal] PID      

     

 signal number          signal          signal name                action

     

       1                        SIGHUP            HUP                   종료되었다가 다시실행

       9                        SIGKILL             KILL                    커널이 직접 강제종료

      15                       SIGTERM         TERM                프로세스 자신이 종료 (정상종료)  


    

RPM으로 프로그램 관리


프로그램 설치

- RPM(RedHat package manager): 프로그램을 만든 제조사에서 .rpm 형태로 만들어서 배포, RPM파일을 찾아서 설치.

(RPM 파일 이름의 의미 : 패키지이름-버전-릴리즈번호-리눅스버전-아키텍쳐.rpm)


RPM 관리하기

조회하기 :  rpm -qa 현재 서버에 설치되어 있는 rpm파일 검색; grep 으로 내용걸러내기.

- 설치하기 : 필요한 rpm이 설치되지 않았을경우, 리눅스 설치cd에서 해당rpm을 찾고 없으면 인터넷을 통해 찾음

   -Uvh : 이미 설치가 되어 있을 경우는 Upgrade를 하고 설치되어있지 않으면 install함/설치과정(v) hash마크(h)

- 제거하기 :  rpm -e 프로그램이름

- 의존성옵션

  rpm -Uvh a.rpm --nodeps : 의존성문제가 생겨도 무시하고 그냥 설치

  rpm -Uvh a.rpm --force : 강제로 설치를 한번더함 (삭제도안되고 설치도중 에러가 날경우)


Cron(규칙작업) 관리


해당작업 등록하기

crond : 관리자가 시간과 작업을 지정해주면 정해진 시간에 정해진 작업을 수행하는 프로그램 (demon)

crondtab : crond가 작업할 내용이 적혀 있는 파일

*파일형식 :   분 시 일 월 요일 command

 -e : crondtab 파일이 열리면서 작업을 등록할 수 있음 (vi editor로 해당파일을 수정해도 동일함)

 -l : cron 작업목록  

 -r : 작업내역삭제 (root의 모든 crontab 등록작업을 다 삭제시킴)


0일 1월 2화 3수 4목 5금 6토

ex) 30 2**6 명령어 : 매주 토요일 02시 30분/ *5-7*** 명령어 : 매일 오전 5-7시


- 해당 작업을 설정한후 저장하면 해당 내용이 /var/spool/cron/username 으로 저장됨

- /dev/null : 블랙홀같은 존재, 그냥버림(휴지통)




'linux' 카테고리의 다른 글

Shell Script  (163) 2016.03.08
Visual Editor(vi editor) 명령어 / network 정보  (153) 2016.03.08
[명령어] - 2. 권한 / 디스크 관리  (153) 2016.03.08
[명령어] 1. 기본 / 사용자관리  (173) 2016.03.08
[VMware] RHEL4_Update2_AS_x86, RHEL5_x86 설치  (8) 2016.03.08


권한관리



권한의 개념과 조회

 ex)      -rwx---r--    :   파일이며, user는 r,w,x의 권한이 모두허용/ group은 모두 비허용/ other는 r만허용

 ( file type user group other )


              

            권한                      file type )                    directory type d )      <- 권한 적용 대상

read         (r)          파일을 읽고, 복사가능                    ls 명령어로 list확인가능

write        (w)         파일의 내용 수정가능                     디렉토리에 파일추가삭제가능

execute      (x)         실행가능한 파일실행가능                  cd 명령어로 디렉토리에 접근가능




권한변경 ( ※  변경되서 접근이 허용되더라도 그 상위디렉토리의 권한이 없으면 접근불가능 )


명령어 : chmod   mode   filename :  소유자나 그룹은 변경하지 않고 사용권한만 변경( chown : 소유자변경) 

ex) chown user3000.sales /home/user1000/a.txt   (소유자를 sales그룹의 user3000로 변경)   


 - 방법

영어문자  ex) ​chmod  g+w  /home/user1000

( who       +/-      permission)

u (user)                  

g (group)                w

o (other)                 

a (all)

 

숫자 해당하는권한의 값을 모두더해서 할당  ex) chmod 77/home (모든사용자가 ​ r,w,x,의 권한허용) / r : 4  w 2  x : 1

-R : 하위 디렉토리까지 한꺼번에 변경

  


SetUID (4), SetGID (2), Sticky bit (1설정 :  맨앞에  (해당숫자 ) 적어서 적용

- setUID  : 로그램을 누가 실행 시키든 그 프로그램의 주인의 이름으로 실행 (x권한 있어야 실행됨,기본적으로 모든 컴퓨터는 실행하는계정으로 실행됨)

  ex) chmod 4755  /home/user1000/a.txt   (-rws r-xr-x )대문자S이면 권한이 없는 상태에서 지정한경우

- setGID  : 실행시킨 그 그룹의 이름으로 실행

- Sticky bit  : 자신이 만든것만 지울수 있게 설정( 권한 777의 경우 다른 사용자가 만든것까지 삭제가능하므로)

            


디스크관리


명령어

- df (disk free) : 현재 연결되어 있는 디스크와 해당 디렉토리 이름을 보여줌 (하위 디렉토리의 용량은 알수없음)

- du (disk usage) :  특정 디렉토리의 하위 디렉토리 별로 용량을 전부 보여줌

--max--depth=단계 : 용량을 디렉토리의 단계(0,1,2..) 별로 설정해서 보여줌 (du -h / 할 경우 전체디렉토리의 하위 디렉토리까지 다 나오기때문에 용량을 보는것이 힘들기때문)

  



cf) 비교


 PC

 

서버 

 IDE (EIDE)

SATA 

SCSI  

 용량

 대용량

대용량 

소용량 

 가격

 저가

저가 

고가 

 속도

저속 

고속 

고속 

 Linux에서 하드디스크 이름

/dev/hda, /hdb, /hdc, ... 

 

/dev/sda, /sdb, /sdc, ... 

partition->   /dev/sda1, /sda2, ..




디스크추가하기 ( root 계정만 권한 )

step1 : ​vmware상의 리눅스 서버를 종료하고, edit vm settings 에서 add- hard disk를 추가하여 linux를 재시작.


새로운 디스크가 추가 되면 하드 디스크를 OS에서 사용 가능하도록 후속작업을 해야함

1파티션나누기 - fdisk(리눅스, 윈도) , format (솔라리스) : 용도에 맞게 분할하는과정 (부서별로 구역나눔)

2포맷 - mkfs(리눅스), format(윈도) , newfs(솔라리스)   :  파티션 나눈 공간을 사용가능하도록 파일시스템 생성단계

3마운트 - mount(유닉스계열), (윈도)는 포맷이 끝나면 자동으로 연결해줌  : 사용준비가된 디스크를 디렉토리와 연결

  -> 파일저장시 디스크에 저장되어서 다른 디렉토리와 연결되더라도 그파일은 존재함


step2 :  ​fdisk -l 로 현재 연결되어있는  하드디스크 확인 후 , 분할할 디스크를  파티션 후 저장.(저장안하면초기화)

 ex) fdisk /dev/sdc -> n(new) -> p(주파티션) -> 1(주파티션번호) -> 1(시작실린더번호) -> +10G(용량지정) -> w(저장)


step3 : ​2번째로 분할할 디스크도 step1과 같은단계로 분할후 저장 (시작실린더번호 2, 용량지정시 엔터(남은용량할당) )


step4 : 파티션이 완료된 디스크를 포맷(디스크이름에 숫자부분을 주의해야함)

 ex)  mkfs.ext3  /dev/sdc1  (ext3은 파일시스템의 종류, 윈도는 NTFS, 솔라리스는UFS 사용)

        mkfs.ext3  /dev/sdc2


step5 : 디렉토리(연결문)를 생성하여 마운트.    

ex) ​mkdir /dir1       ex)  mount  /dev/sdc1  /dir1

     mkdir /dir2              mount  /dev/sdc2  /dir2


step6 ​재부팅 후에도 유지되도록 /etc/fstab 파일에 등록(등록하면 재부팅을 해도 리눅스가 자동으로 마운트작업을함)


 


LVM (logical volume manager)

물리적으로 여러개인 디스크를 논리적으로 하나의 디스크로 합쳐주고 다시 논리적으로 나눠서 관리하는방법


step1 : 위의 디스크추가하기 step1방법과 동일하게 hard disk추가하여 linux 재시작

step2 : 추가한 각각의 디스크들을 fdisk 하되, 리눅스 LVM용으로 파티션을 생성

 ex)    fdisk   ​/dev/sdd -> n  -> p  -> 1  -> enter  -> enter  -> t  (하드디스크 변환) -> 8e  (LVM용 파티션) -> w 


step3 : LVM용 디스크들을 각각 물리적볼륨(physical volume)으로 변환

 ex) pvcreate /dev/sdd1

       pvcreate /dev/sde1

       pvcreate /dev/sdf1


step4  : 물리적볼륨들을 1개의 볼륨그룹(volume group;논리적인1개의디스크)으로 합친후, 확인(vgdisplay)

 ex)   vgcreate vol1 /dev/sdd1  /dev/sde1  /dev/sdf1


step5 : 합쳐진 하나의 볼륨그룹(논리적디스크)을 논리적볼륨(logical volume)으로 파티션  lvscan으로 조회

 ex) lvcreate  -L  1.50GB  -n  lv1  vol1     (물리적디스크 파티션 : fdisk)

      lvcreate -L  1.45GB  -n  lv2  vol1     (vgdisplay로 남은용량확인 


- step6 :   논리적 볼륨으로 포맷   

 ex)  mkfs.ext3  ​/dev/vol1/lv1

        mkfs.ext3  /dev/vol1/lv2

- step7 :  디렉토리 생성해서  마운트 

 ex) ​ mkdir /dir3              ex)  mount  /dev/vol1/lv1  /dir3   

        mkdir /dir4                    mount  /dev/vol1/lv2  /dir4



 cf. LVM관련 명령어들

vgscan           lvdisplay

vgextend        lvextend        lvremove

vgreduce        lvreduce        vgremove




RAID : 여러개의 디스크중 몇개가 장애가 발생해도 데이터가 손실되지 않게 구성하는기술 (​LVM 은 여러개의 디스크중 1개가 장애가 날경우 모든데이터가 손실)


RAID 0 (striping) - RAID기능을 사용하지않는것.1개의 디스크고장시 전체고장.데이터를 분산시켜 동시에읽고씀(LVM은차례로저장). 속도빠름. 

RAID 1 (mirroring)  -  같은데이터 중복 저장. 안정적. 하지만 비용과 용량은 두배

RAID 5 (stripe with parity)  1개의 디스크를 spare(후보디스크)로 두어 장애 난 디스크와 교체. spare개수 부족시 모든데이터손실   








리눅스 기초 

(오라클 관리 실무 교재 참고) 


리눅스와 유닉스에서 가장 많이 사용되는 중요한 명령어들.

shell script 작성 및 운영과 관리에 관련된 명령어들 위주. 



[ 모든 유닉스 명령 대/소문자 구분. 기본적으로 소문자를 사용. 윈도우계열과 달리 확장자 개념이 없음, 0~255자까지가능 ]





- PATH

절대경로: 기준 /(루트)

상대경로: 기준 - 현재위치, ( :현재디렉토리 .. :상위디렉토리 ./ :하위디렉토리) ​        ./ 는 생략가능


- Shell Meta Character : 원래의 의미가 아닌 다른 특별한 의미를 가지는 문자


 문자

의미

예시

 (tilde)

 home directory

 ex) cd ~ , cd ~oracle(~사용자명)

 (asterisk)

 all (0~255사이의 모든 글자)

 ex) rm *.txt   ( .txt 포함되는 것을 모두 remove )

 (question)

 all (? 당 1 글자) 

 ex) rm ??.txt 2글자로된 .txt 포함된것을 remove )

 [ ] (squar brackets)

 괄호사이의 alleach 

 ex) [abc].sh (= a.sh , b.sh, c.sh) / [0-9] : 숫자전체

 (escape character)

 메타캐릭터 의미없앰​  

 ex) \*  (all의 의미가아닌 "*"문자자체의 인식)







기본 명령어 ( -옵션 )


 명령어

의미

예시

 man(manual)

 도움말 페이지

 ex) man cp ( cp 명령어에 대한 도움말)

 ls(list)

 파일이나 디렉토리안에 있는 목록

 ex) ls /etc/*.conf 

( etc디렉토리안에 .conf가 포함된 파일 목록보기)

 -a(all) : 숨긴 파일(파일이름 .으로시작)까지 포함

 -l(long) 권한, 소유자, 크기, 수정된 시간등의 상세 정보까지 표시

 -S(size) : 용량이 큰순서로 / -r : 용량이 작은 순서로 

 -h(human) :  사람이 보기편한 단위(kb,mb,gb)로


 mkdir(make directory)

 디렉토리 생성    

 ex) mkdir /test/dir1 (/test 디렉토리 안에 ​dir1 디렉토리생성)

 -p : 나열하는 디렉토리를 한꺼번에 모두 생성                           ex) mkdir -p /test/dir1/dir2/dir3  (상위디렉토리 한꺼번에 생성)


 rmdir(remove directory)

 디렉토리 삭제

 삭제할 디렉토리안에 아무것도 없어야 삭제가능해서 잘안씀(rm -r) 

 cd(change directory)

 디렉토리 이동

 

 pwd(print working directory)

 현재 작업중인 디렉토리 이름

 

  touch 

 용량이 0인 파일생성 

 ex) touch -t 05011230 a.txt (날짜를 5월10일12시30분으로 변경)

 -t 날자변경     

           

 cp(copy)

 파일복사

 ex) cp /test/a.txt  /test/dir1/aa.txt 

  (/test디렉토리의a.txt파일을 /dir1디렉토리안에 

    aa.txt로 이름변경후복사)

  -i : 복사할 대상이 이미 존재할경우, 덮어쓸지에 대한 여부질문

 -r : 복사원본에 디렉토리있을경우, 디렉토리까지 복사 (Linux에서는 -a로도 사용가능)

 -v : 복사되는 파일의 이름표시

 -p : 생성날짜, 권한등 원본파일의 정보와 똑같이 설정 

원본파일을 대상파일로 복사할때 생성날짜, 권한등은 대상파일에 맞게 다시 설정됨 (엄밀히 다른파일) )


 숨김파일(.)은 모든작업(복사, 이동, 삭제등)에서 제외됨     ex)  cp /test/.a.txt   /test3 (그래서 직접작업해야함) 

             cp /test/*  /test3 (.a.txt파일(숨김파일)은 복사되지않음)

 mv(move)

 파일이름 변경하거나  (원본)

 

  -i 덮어쓸지에 대한 여부질문


  rm(remove) 

 파일이나 디렉토리 삭제 

 rmdir과 다르게 디렉토리안에 파일있어도 삭제가능

  -f : 묻지않고 강제로 삭제

 -r : 하위디렉토리도 삭제                                        ex) rm -fr /test/*  (/test 디렉토리 안에있는 하위디렉토리와 파일 모두삭제)

 cat(concatenate)

 용량 적 text파일의 내용을 화면에 출력(내용이길경우 마지막페이지만 보임)

 more

 1page가 넘는 문서의 내용을 화면에 출력(page단위) 스페이스바(다음page), 엔터(다음줄),back키(이전page),-ctrl+c(종료)

 head 

 문서 첫 ~줄을 화면에 출력

 ex) head +10 a.txt

 tail

 문서의 마지막 ~줄을 화면에 출력  

 ex) tail -10 a.txt  

 -f : 파일에 내용이 추가되는 것을 실시간으로 계속 볼수있음 (log파일 조회할때 많이 사용됨)


 wc(word count)

 특정문서나 결과물에서 

 단어 수, 줄 수, 등을 세어

 ex) wc -l a.txt    (a.txt파일의 줄수 출력) 

  ln(link)

  링크생성 (윈도우의 아이콘생성 하는 개념과동일) 

 

 hard link - 원본변경시 반영안됨(또하나의 원본을 생성)            ex) ln file1  file2  (file1에대한 hard link (file2) 생성) 

 soft link  - 원본변경시 반영됨(윈도우의 바로가기아이콘기능)      ex) ln -s file1  file3 (file1에 대한 soft link (file3) 생성) 


 alias

 별칭부

  ex) ​alias cp='cp -i' (cp명령어 사용시 자동으로 cp -i로 적용)  

   현재 설정되어있는 alias해제 : unalias cp  /  alias만 입력 : 현재 설정된 alias 목록이 출력

  <, <<

  표준입력(키보드) 방향 변경  

 

  >, >>

  표준출력(모니터) 방향 변경   

 

 

>    : 출력결과를 덮어씀                        ex) ​ls -l /test  >  c.txt  (출력결과를 모니터에 출력하지않고 c.txt파일에 덮어씀)

>>  : 출력결과를 추가 


 |(pipe)

 명령어의 결과를 다음 명령어의 

 입력으로 결과전달 (종속적)

  ex) ls /etc/*.conf   |   wc -l (확장자conf인파일의 개수를 알고싶을때)

     a ; b ;  c ;  는 명령어 a, b, c가 단독적으로 실행(독립적)


 tar

 여러개의 파일을 하나로 거나 반대로 어줌.( unix는 압축 별도로 필요, linux는 압축까지 지원)

 -c(compress) : 여러개의 파일을 하나로 만들어주는 기능

-x(extract) : 묶여있는 파일을 풀어줌 (풀리는 위치(?))        ex) tar xvf tar1.tar

-t : 묶음 풀기전 미리 내용확인

-f : 저장될 파일명 지정

-v(view) : 작업수행과정 화면으로 보여줌             ex) tar cvf tar1.tar   /tar (/tar디렉토리에 tar1.tar로 파일묶기)

-z : tar + gzip(압축프로그램)                           ex) tar zcvf tar2.tar.gz  /tar (/tar디렉토리에 tar2.tar.gz로 압축하기)

-j : tar + bzip2(압축프로그램) 


 find

 파일의 이름, 소유자, 크기, 권한등의 속성으로 조건 검색 

 ex) find /test -name  '*.sh'

 -name :  파일이나 디렉토리의 이름으로 검색

-user : 소유자이름으로 검색

-newer : 기준되는 파일의 날짜 전/후에 생성되거나 수정된 파일검색

-perm : 주어진 권한으로 검색

-size :  주어진 크기로 검색                  ex) find /test -size +5k -size -10k  (/test 디렉토리에서 size가 5k~10k사이인 파일검색)

                                                                     

 grep

 파일의 내용으로 검색

 

 -i : 대소문자 구분안함

-l : 패턴이 있는 파일 이름만 출력, 라인은 출력하지 않음

-n : 출력하는 각 라인 앞에 라인 번호를 붙임   ex) grep -li 'Admin' /etc/* (대소문자 구분없이 모든파일중 'Admin'포함파일명 검색)

-v : 패턴이 없는 라인만 출력 (grep의 반대)

-c : 패턴이 있는 라인의 개수

-w : 패턴과 맞는 단어가 독립적인 경우만 출력

 @  find grep를 사용해 조건1개를 추가(정규식)해 검색할때

   ^  : 패턴으로 시작하는 line출력                 ex) ' ^a '  (= aaaa, aa, aaa, a.. 등) ->grep  '^a'  /test/a.txt 

   $ : 패턴으로 끝나는 line출력                    ex) a$ '

   . :  점 하나당 1글자                              ex) grep 'a..d' /test/a.txt (전체글자수4글자인것중 첫번째가 a,마지막d인것)

   * :  * 기호 이전의 문자가 0회 이상반복        ex) abc*    (c가 0번이상 반복 : ab, abc, abccc등)

  ] : 패턴에 해당하는 한 문자                    ex) ' [pP]attern '

   [^] : 패턴에 해당하지 않는 한 문자             ex) ' [^a] 

  /< >/ : 패턴 단어로 시작 또는 끝나는  line출력  

 

 @  egrep(확장정규식) :  조건2개로 검색하는 방법 

+  : + 이전의 문자가 1회이상 반복        ex)  ' [a-z]+bcd ' (a~z중 한문자로 시작하고 bcd로 끝나는 단어가있는 line출력

|   : 또는                                     ex)  ' aa | bb '         (aa나 bb가 포함된 line 출력)  

    ( )  : ( 또는 )                              ex)  ' do(es | ing)+ '   (does나 doing이 포함된 line 출력)




 


  




사용자관리 명령어


서버에 접속해 작업을 하기위해서는 계정과 권한이 있어야하고,사용자를 생성하려면 먼저 그 사용자가 소속될 그룹이 먼저 생성되어 있어야 함)


 명령어

의미

예시

 groupadd

 새로운 그룹(팀)을 생성 - 부서

 ex) groupadd -g 500 admin     (GID지정 안하면 OS가 자동으로 지정해줌)

 groupmod

 그룹이름이나, 번호수정

 ex) groupmod -g 501 -n sales admin2

 groupdel

 그룹삭제 

 ex) groupdel sales 

 유닉스계열OS에서 현재 서버내에 생성 그룹정보 /etc/group 에 모두저장돼있고 ,​사용자 정보 /etc/passwd에 모두저장)


 useradd

새 일반 사용자 계정생성


-u :  UID 지정. 유닉스에서의 주민등록번호     (※ uid : 0번 (root) 중복되면 안됨)

-g :  GID 지정. (-g 주그룹, -G 보조그룹)       (※ gid:14번(sysadmin) - root와 동일한 권한가짐 중복되면 안됨)

-d : 홈디렉토리 지정.

-s : shell 지정.                                  ex) useradd -u 600 -g admin -d /home/user1 -s /bin/bash -c test_add   user1

-c : 설명                                              (옵션을 주지 않으면 자동으로 생성됨)

 서버에서 새로운 사용자를 생성할때마다 /etc/skel 디렉토리에 있는 모든 파일들은 새 생성된 사용자 홈디렉토리로모두복사됨

              ( 새계정이 생성될때마다 어떤 사항을 공지하고 싶을경우, /etc/skel 디렉토리에 해당파일을 넣어두면 자동으로 복사되어 편리함 )


 사용자 정보 /etc/passwd 에 모두저장  root : 1 5 root /root : /bin/bash  ( x :/etc/shadow저장되어있다는 뜻)

                                      ( 계정 암호 UID GID 사용자설명 홈디렉토리 사용shell경로)


 id

 현재 접속해 있는 계정정보

 

 passwd

 사용자의 암호변경  

 ex) passwd  계정명 ( 계정명을 쓰지 않으면 현재계정의 암호변경)

 새계정이 생성되면 암호 /etc/shadow 파일에 암호화되어 저장됨   ex) root $123YSF~~~01:   ( : 암호 : ) 


 usermod

 사용자 정보수정 

  -o, -l 만다르고 useradd 옵션과 동일

 -u uid -o : uid 중복해서 사용가능                                            

-l :  이름변경                                                          ex) usermod -l 변경이름 원래계정


 userdel 

 사용자계정만 삭제 

 

 -r 홈 디렉토리까지 삭제                                                 ex) userdel -r 계정명