그룹 계정 생성 및 관리서버 인증키등록

#!/bin/bash -ex
bbungrp=`cat /etc/group | grep bbunbro | awk -F: ‘{print $1}’`
if [ -z “$bbungrp” ];
then
    groupadd -g 1001 bbunbro
    echo “add bbunbro group”
fi
bbunusr=`cat /etc/passwd | grep sungho | awk -F: ‘{print $1}’`
if [ -z “$bbunusr” ];
then
    useradd sungho -u 1001 -g 1001 -c “Mr.bbunbro” -d /bbunbro
    echo “add bbunbro user”
    echo “sungho ALL= NOPASSWD: ALL” >> /etc/sudoers
    echo “$PASSWORD” | passwd sungho –stdin
fi
# management Authorized RSA key Insert #
mkdir -p /bbunbro/.ssh
chown bbunbro:bbunbro /bbunbro/.ssh
chmod 700 /bbunbro/.ssh
cat<<EOF > /bbunbro/.ssh/authorized_keys
ssh-rsa ABCDB22222222221111111111133333333333= bbunbro@bbun.com
EOF
chown bbunbro:bbunbro /bbunbro/.ssh/authorized_keys
chmod 400 /bbunbro/.ssh/authorized_keys

그룹 및 계정 생성 후 sudo 로 권한 주기.

[그룹계정생성]

groupadd -g 1001 bbunbro

useradd sungho -u 1001 -g 1001 -c “bbunbro group” -d /bbunbro

echo 패쓰워드 | passwd test –stdin

 

[Visudo]

# 이걸추가하면 sungho 계정은 sudo 로 root에 준하는 권한을 모두허용!

sungho  ALL=(ALL)       NOPASSWD: ALL

 

또는..

Cmnd_AliasBBUNCMD = /bin/sh, /bin/chmod, /usr/bin/rsync, /usr/bin/svn, /bin/ls

sudo통해사용할커멘드를 alias 해준뒤에..

 

sungho  ALL=(ALL)       NOPASSWD: BBUNCMD

 

이렇게권한을주면되겟다.

 

 

 

 

 

 

Bash 에서 history 를 조회 시 실행된 날짜와 시간을 확인하자..

아래와 같이 bash_profile 에 지정합니다.

export HISTTIMEFORMAT=%F\ %T\  (공백)

그 후 history 를 조회하면, 시간과 날짜가 뙇!!~

해당 설정을 정하고 나면 이전 history 역시 시간날짜 포멧을 함께 출력하므로, 적용을 하는 시점은
아무때나 무관하겠습니다.

해당 기능은 Bash 3.0 이상에서 부터 가능합니다.

winrm 을 이용해서 리눅스 머신에서 윈도우 서버 관리!

WinRM 을 통해서 리눅스머신에서 윈도우서버로 원격 명령을 날리는 방법에 대해 간략하게 기술한다.

윈도우 서버에서 먼저 winrm 에 대한 설정을 진행해준다.

winrm quickconfig 커멘드를 사용하면 (run as administrator)
해당 서비스를 사용할 수 있도록 설정이 가능하다. (사용여부 y로 물어봄)

winrm 서비스가 사용가능하게 되면 다음과 같이 winrm 의 config를 확인할 수 있다.

winrm g winrm/config

이중 config 하위에 service 항목중 Auth와 AllowUnencryypted 는 기본설정이 false 로 되어있는데,
이부분을 true (사용) 으로 변경해주는 설정을 한다. (Basic 인증방식 사용)

winrm s winrm/config/service/auth @{Basic=”true”}

winrm s winrm/config/service @{AllowUnencrypted=”true”}

이후에 리눅스머신에서 winrm을 통해 plaintext를 통한 계정정보 입력을 통하여, 서버에 커멘드를 실행할 수 있다.
참고로 powershell에서도 아래와 같은 커멘드로 활성화 할 수 있다.

Set-item WSMan:\localhost\service\auth\basic “true” -force

Set-Item WSMan:\localhost\Service\AllowUnencrypted “true” -force

윈도우 서버에서 위와 같은 설정이 완료 되면 quickconfig를 통해서 허용 되었겠지만,
http 프로토콜로 5985 포트를 이용해서 접근하게 된다. 스위치에 Access List 를 관리한다면, 허용해줄것~

linux 관리머신에서 winrm 을 이용하기 위해 WinRM for Ruby 라이브러리를 설치한다.
(1.9 버전 이상의 ruby를 설치하여야 하고, gem install winrm (git 저장소 https://github.com/zenchild/WinRM) 으로 설치하고, WinRM 라이브러리를 이용해 서버 제어 스크립트를 생성한다.

예시 ) test.rb

 require ‘winrm’

endpoint = ‘http://10.0.0.1:5985/wsman’

winrm = WinRM::WinRMWebService.new(endpoint, :plaintext, :user =>

‘계정’, :pass => ‘암호’, :basic_auth_only => true )

winrm.cmd(‘ipconfig /all & dir c:\\‘) do |stdout, stderr|

    STDOUT.print stdout

    STDERR.print stderr

end

위와 같이 간단한 루비스크립트를 생성하고,
/usr/bin/ruby test.rb 를 실행하게 되면, 10.0.0.1 IP를 갖는 원격지 윈도우 서버에서
ipconfig /all 커멘드와 dir c:\ 라는 커멘드를 실행하여, 결과값 (Standard Output) 을 알려준다.

해당 방법은 원격지에서 WinRM을 통한 command를 실행시키는 방식으로
관리서버에서는 동시 다수 서버에 명령어를 전달하고, 다수의 서버에서는 개별적으로 해당 명령을 실행하기 때문에 서버 관리에 매우 유용하다.

로그나 파일을 메일로 쏴보자!

리눅스를 운영하다 보면, 상태 확인이나 체크등을 위해서 로컬에 로그를 남기는 일이 많다.

이런 경우에 매번 터미널 접속을 해서 확인하기 귀찮으니, 스케쥴등을 이용해서 메일로 발송해보자.

메일 발송의 경우는 local에 postfix 등을 이용해서 발송하면된다~

내 로컬에서 어떤 MTA (mail Transfer Agent) 가 설정된지 확인은

# alternatives –display mta

라는 명령어를 이용하면 확인 가능하다.

 [root@bbunbro ~]# alternatives –display mta
mta – status is manual.
 link currently points to /usr/sbin/sendmail.postfix
/usr/sbin/sendmail.sendmail – priority 90
 slave mta-pam: /etc/pam.d/smtp.sendmail
 slave mta-mailq: /usr/bin/mailq.sendmail
 slave mta-newaliases: /usr/bin/newaliases.sendmail
 slave mta-rmail: /usr/bin/rmail.sendmail
 slave mta-sendmail: /usr/lib/sendmail.sendmail
 slave mta-mailqman: /usr/share/man/man1/mailq.sendmail.1.gz
 slave mta-newaliasesman: /usr/share/man/man1/newaliases.sendmail.1.gz
 slave mta-aliasesman: /usr/share/man/man5/aliases.sendmail.5.gz
 slave mta-sendmailman: /usr/share/man/man8/sendmail.sendmail.8.gz
/usr/sbin/sendmail.postfix – priority 30
 slave mta-pam: /etc/pam.d/smtp.postfix
 slave mta-mailq: /usr/bin/mailq.postfix
 slave mta-newaliases: /usr/bin/newaliases.postfix
 slave mta-rmail: /usr/bin/rmail.postfix
 slave mta-sendmail: /usr/lib/sendmail.postfix
 slave mta-mailqman: /usr/share/man/man1/mailq.postfix.1.gz
 slave mta-newaliasesman: /usr/share/man/man1/newaliases.postfix.1.gz
 slave mta-aliasesman: /usr/share/man/man5/aliases.postfix.5.gz
 slave mta-sendmailman: /usr/share/man/man1/sendmail.postfix.1.gz
Current `best’ version is /usr/sbin/sendmail.sendmail.

혹시 로컬에 postfix가 설치되어 있지 않다면, postfix를 설치하고,
메일 발송을 위해서 mailx 패키지를 설치한다.

이후에 로그를 보내는 방법은 아래와 같다.

cat /log/20141204_test.log | mail -s “Sending MAIL to my email” pajuguy@nate.com -c pajuguy@gmail.com

이후 발송된 메일을 확인해보면 pajuguy@nate.com 으로 (참조 : gmail)
Sending MAIL to my email 이라는 제목으로 발송된 20141204_test.log 의 내용을 확인할 수 있다.

리눅스 컨트롤러 확인하는 방법

리눅스 컨트롤러 확인

dmesg 를 통해서 일일히 찾는 방법도 존재하지만,
bridge, IDE interface, VGA compatible controller 등을 확인할시에는

# lspci 명렁을 통해서 확인하면 편리하다

자세하게 보고싶은 경우는 -vvv 옵션을 준다.

 [nic2hong@bbunbro ~]$ sudo lspci -vvv
00:00.0 Host bridge: Intel Corporation 440FX – 82441FX PMC [Natoma] (rev 02)
        Subsystem: Red Hat, Inc Qemu virtual machine
        Physical Slot: 0
        Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0

00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
        Subsystem: Red Hat, Inc Qemu virtual machine
        Physical Slot: 1
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0

00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] (prog-if 80 [Master])
        Subsystem: XenSource, Inc. Device 0001
        Physical Slot: 1
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [size=8]
        Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable)
        Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable) [size=8]
        Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable)
        Region 4: I/O ports at c100 [size=16]

00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 01)
        Subsystem: Red Hat, Inc Qemu virtual machine
        Physical Slot: 1
        Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin A routed to IRQ 9

00:02.0 VGA compatible controller: Cirrus Logic GD 5446 (prog-if 00 [VGA controller])
        Subsystem: XenSource, Inc. Device 0001
        Physical Slot: 2
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Region 0: Memory at f0000000 (32-bit, prefetchable) [size=32M]
        Region 1: Memory at f3000000 (32-bit, non-prefetchable) [size=4K]
        Expansion ROM at <unassigned> [disabled]

00:03.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device (rev 01)
        Subsystem: XenSource, Inc. Xen Platform Device
        Physical Slot: 3
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin A routed to IRQ 28
        Region 0: I/O ports at c000 [size=256]
        Region 1: Memory at f2000000 (32-bit, prefetchable) [size=16M]
        Kernel driver in use: xen-platform-pci

윈도우에 nfs 를 이용해서 리눅스에 마운트

윈도우 서버의 role 에서 nfs 를 추가하고, 

공유하려는 폴더에 properties를 확인해보면 nfs 설정이 가능하다.

윈도우 서버 주소가 sungho.com 이고 폴더명이 share 라는 가정에서 리눅스 머신에서 공유 폴더를 mount 합시다.

mkdir test
mount -t nfs sungho.com:/share ./test

이렇게 하여 test 에 해당 공유 폴더를 마운트 한다.

재시작시에도 유지하고 싶다면 /etc/fstab에 

sungho.com:/share /test nfs 0 0 을 추가한다.