2015. 7. 29. 11:30

* 파이프와 재지정


$ ls -l > lsoutput.txt


: ls 명령의 출력을 lsoutput.txt라는 파일에 저장


표준 파일 서술자

0 : 프로그램의 표준 입력

1 : 프로그램의 표준 출력

2: 프로그램의 표준 오류 출력


만일 해당 파일이 이미 존재하면 새 내용이 기존 내용을 덮어 쓰게 된다


파일 끝에 새로운 내용을 덧붙이고 싶다면 >> 연산자를 사용한다


예를 들어, 


$ ps >> lsoutput.txt


ps 명령의 출력을 해당 파일의 끝에 추가한다


표준 출력 이외의 출력을 재지정할 때는 > 연산자 앞에 해당 출력의 파일 서술자를 붙인다. 예를 들어 표준 오류 출력을 재지정하려 할 때에는 표준 오류 출력의 파일 서술자가 2이므로 2> 연산자를 사용하면 된다. 표준 오류의 재지정은 프로그램이 출력하는 오류 정보가 화면에 나타나지 않게 하고 싶을 때 유용하다


* 입력 재지정


$ more < killout.txt


killout.txt의 내용을 more에 입력한다


* 파이프

파이프 연산자( | )를 이용하면 프로세스들을 서로 연결할 수 있다. 리눅스에서는 파이프들로 연결된 프로세스들이 동시에 실행될 수 있으며, 자료가 흐름에 따라 자동으로 실행 일정이 조정된다. 간단한 예로, ps의 출력을 sort 명령으로 정렬해보자


만일 파이프를 사용하지 않으면 다음과 같이 두 단계를 거쳐야 한다


$ ps > psout.txt

$ sort psout.txt > pssort.out


그러나 파이프를 이용해서 프로세스들을 연결한다면 다음처럼 할 수 있다


$ ps | sort > pssort.out


그런데 출력 내용이 한 화면을 넘기면 보기 힘들어질 때  more를 추가하자


$ ps | sort | more


현실적으로 파이프로 연결할 수 있는 프로세스 개수는 한계가 없다


셀을 제외한 서로 다른 모든 프로세스들의 이름을 알파벳순으로 보고 싶다고 하자


$ ps -xo comm | sort | uniq | grep -v sh | more


이것은 ps의 출력을 알파벳순으로 정렬하고, 

uinq를 이용해서 중복된 항목들을 제외하고,

grep -v sh를 이용해서 sh라는 이름의 프로세스를 제외하고,

마지막으로 이상의 결과를 페이지 별로 화면에 출력한다


이처럼, 각 명령의 결과를 개별 임시 파일에 저장하는 방식보다는 이처럼 명령들을 파이프로 연결하는 방식이 우아한 해법이다.


일련의 명령들을 수행할 때 같은 파일 이름을 두 번 사용해서는 절대 안된다


$ cat mydata.txt | sort | uniq > mydata.txt


를 수행하면 그냥 빈 파일이 만들어진다. mydata.txt 파일이 cat으로 읽히기 전에 덮여 쓰이기 때문이다.








2015. 7. 28. 15:26

리눅스에서 파일 관리를 하기 위해 먼저 알아야 할 파일의 속성을 알아보고,

다중 사용자 시스템인 리눅스에서 사용자를 관리하는 방법을 살펴보자


1. 사용자 그룹

리눅스는 다중 사용자 시스템이다. 즉 1대의 리눅스에 사용자 여러 명이 동시에 접속해서 사용할 수 있는 시스템이다.

리눅스를 설치하면 기본적으로 root라는 이름을 가진 슈퍼 유저가 있다.

이 root 사용자는 시스템의 모든 작업을 실행할 수 있는 권한이 있다.

또한 시스템에 접속할 수 있는 사용자를 생성할 수 있는 권한도 있다.


그런데 모든 사용자는 혼자서 존재하는 것이 아니라 하나 이상의 그룹에 소속되어 있어야 한다.


# vi /etc/passwd


이 파일을 열면 각 행의 의미는 다음과 같다


사용자 이름 : 암호 : 사용자ID : 사용자가 소속된 그룹 ID : 전체 이름 : 홈 디렉토리 : 기본 셸


이번에는 /etc/group 파일을 확인해보자

# vi /etc/group


각 행의 의미는 다음과 같다


그룹 이름 : 비밀번호 : 그룹 ID : 그룹에 속한 사용자 이름



2015. 7. 28. 11:32

#으로 처리한다


# 이것은 주석입니다

2015. 7. 28. 11:13
  • CentOS7 수동 네트워크 설정         

- 네트워크 — 어댑터 1 — 네트워크 어댑터 사용하기(E) 체크 — 다음에 연결됨(N) : 브리지 어댑터 — 무작위 모드 : 가상 머신에 허용 — 케이블에 연결됨 체크

- 네트워크 — 어댑터 2 — 네트워크 어댑터 사용하기(E) 체크 — 다음에 연결됨(N) : 브리지 어댑터 — 무작위 모드 : 가상 머신에 허용 — 케이블에 연결됨 체크

 

  • 네트워크 설정 이전에 디바이스 이름 확인

# ip addr 을 입력하여 디바이스 이름을 확인한다

 

위의 그림에서는 enp0s3, enp0s8의 두 개의 디바이스 이름이 보인다

 

어댑터에 네트워크 설정을 하기 전에 디바이스 이름을 바꾸고 싶으면 다음을 참고한다


http://professorleejaeman.tistory.com/entry/%EC%9D%B4%EB%8D%94%EB%84%B7-%EB%94%94%EB%B0%94%EC%9D%B4%EC%8A%A4-%EC%9D%B4%EB%A6%84-%EB%B3%80%EA%B2%BDChanging-Ethernet-Device-Names


  • 어댑터 1에 대한 네트워크 설정

root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3(DEVICE_NAME)

- 여기서 DEVICE_NAME은 Ethernet device name

- ( 이 예제에서는 DEVICE_NAME="centos_enp0s3" 이걸 입력)

  • # vi /etc/sysconfig/network-scripts/ifcfg-DEVICE_NAME

- 여기에 다음과 같이 입력

 

- 저장 (편집 후 ESC - :wq - 엔터)

- MAC 주소는 VirtualBox - 설정 - 네트워크 - 어댑터1 - 고급(D) - MAC 주소(M) 에 있는 것으로 설정
- BOOTPROTO = static 은 고정 IP를 사용하겠다는 의미다
- IP6는 사용하지 않으므로 다 no를 한다
- IPADDR 은 IP 주소이다.
- NETMASK는 서브넷 마스크이다
- GATEWAY는 게이트웨이 IP 주소이다
- DNS1은 도메인 네임 서버 IP 주소이다
- DNS2는 서브 도메인 네임 서버 IP 주소이다
- ONBOOT=yes 는 컴퓨터가 시작될 때 on으로 하겠다는 의미다

 

 

  • 어댑터 2에 대한 네트워크 설정

root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3(DEVICE_NAME)

- 여기에 다음과 같이 입력

- 저장 (편집 후 ESC - :wq - 엔터)

- MAC 주소는 VirtualBox - 설정 - 네트워크 - 어댑터2 - 고급(D) - MAC 주소(M) 에 있는 것으로 설정


 *  참고로 DHCP 설정은 다음과 같이 한다



- 리부팅(껐다 켜기)

- IP 주소는 고정 IP로 사용(브리지 설정)

 

  • 명령어 용어 

 

  • 네트워크 통신 테스트

    - yum check-update 입력해서 업데이트를 진행하는지 확인
    - ping으로 테스트

 

  • 필수 패키지 설치

    $ yum install -y bind-utils                     // 네트워크 유틸리티
    $ yum install -y vim                             // vi 개선 버전
    $ yum install -y ntsysv                          // 서비스 관리
    $ yum install -y system-config-firewall-tui // 방화벽 관리
    $ yum install -y system-config-network-tui // 네트워크 관리
    $ yum install -y setuptool                      // 관리프로그램 설치
    $ yum install -y ntp                             // 시간 자동 설정 관리


2015. 7. 28. 10:45

윈도우즈 컴퓨터에 Virtual Box를 설치하고 CentOS7 리눅스를 설치했을 때 

Samba를 이용해서 공유 폴더를 설정하자


* 실습


호스트(Windows)

- Windows에 자신의 자원을 사용할 사용자를 추가한다

- Windows의 자원을 공유시킨다


게스트(CentOS7)

- samba-client, cifs-utils를 설치한다

- smbclient 명령어로 Windows가 제공하는 자원을 확인한다

- smbmount 명령어로 Windows가 제공한 공유 폴더를 마운트한다


* 호스트(Windows)에서 폴더를 공유하자


1. Window 파일 탐색기에서 C:/CentOS_Common 폴더를 만든다(폴더 이름은 아무거나 해도 상관없다)

만든 폴더를 마우스 오른쪽 버튼으로 클릭한 다음 바로가기 메뉴에서 [속성] -> [공유]를 선택한 후, <공유> 버튼을 클릭해서 [그림 15-2]와 같이 Everyone 사용자를 선택한 다음 <추가>를 클릭하자

그리고 [사용 권한 수준]의 설정을 [읽기/쓰기]를 선택해 읽기 쓰기가 가능하도록 하고 <공유>를 클릭하자. 


2. 최종적으로 '컴퓨터이름/CentOS_Common'이라는 네트워크 경로로 공유가 되었다. <닫기> 버튼을 클릭해서 공유 설정을 마친다. 공유한 폴더인 C:/CentOS_Common에 적당한 파일을 복사하자


3. 리눅스에서 접근을 허용하려면 리눅스에서 사용하려는 사용자를 추가하고 비밀번호를 지정해야 한다

명령 프롬프트를 관리자 모드(관리자 권한)로 실행한 후, 다음 명령을 입력하자


net user root 1234 /add   --> root 사용자를 만들고 암호를 1234로 지정


필요하다면 제어판의 [사용자 계정]에서 추가된 root 사용자를 확인할 수 있다


ipconfig 명령어를 입력해서 Windows의 IP 주소를 확인하자


* 리눅스에서의 설정

- Windows에서 공유한 폴더를 게스트(CentOS7)에서 사용해보자


1. samba-client와 cifs-utils를 설치하자


yum install -y samba-client

yum install -y cifs-utils


2. 다음 명령어를 입력해 Windows에서 공유한 폴더가 보이는지 확인한다


smbclient -L WindowsIP주소

Enter root's password : --> Windows에서 생성한 root 사용자의 암호(1234)


공유된 컴퓨터의 이름과 공유 폴더(CentOS_Common)을 확인할 수 있다


3. 다음 명령을 입력해 Windows에서 공유한 폴더에 마운트할 디렉토리를 만들고 마운트 시킨다


mkdir 마운트할디렉토리이름(sambaMount)

mount -t cifs //WindowsIP주소/공유폴더이름 마운트할디렉토리이름

mount -t cifs //WindowsIP주소/CentOS_Common sambaMount


이상 폴더와 디렉토리가 공유되었다



* 더 이상 마운트할 필요가 없다면

unmount /CentOS_Common을 입력해 마운트를 종료한다



* Windows에서 리눅스 폴더와 프린터 사용


리눅스에서 공유해 놓은 디렉토리를 Windows에서 사용해보자


Windows 쪽에서는 별도로 설정해줄 것이 없다


Windows에서 리눅스의 자원을 사용해보자


1. samba와 system-config-samba 패키지를 설치하자


yum -y install samba system-config-samba


2. 디렉토리를 공유하자


systemctl restart smb

systemctl enable smb

systemctl status smb


를 차례로 입력해 Samba 서버를 시작/상시 가동/상태 확인하도록 설정하자


mkdir /share를 입력해 공유할 디렉토리를 생성하고, 'chmod 707 /share' 를 입력해 디렉토리 속성을 707로 변경한다

디렉토리 속성을 707로 변경한다