* 파이프와 재지정
$ 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으로 읽히기 전에 덮여 쓰이기 때문이다.
리눅스에서 파일 관리를 하기 위해 먼저 알아야 할 파일의 속성을 알아보고,
다중 사용자 시스템인 리눅스에서 사용자를 관리하는 방법을 살펴보자
1. 사용자 그룹
리눅스는 다중 사용자 시스템이다. 즉 1대의 리눅스에 사용자 여러 명이 동시에 접속해서 사용할 수 있는 시스템이다.
리눅스를 설치하면 기본적으로 root라는 이름을 가진 슈퍼 유저가 있다.
이 root 사용자는 시스템의 모든 작업을 실행할 수 있는 권한이 있다.
또한 시스템에 접속할 수 있는 사용자를 생성할 수 있는 권한도 있다.
그런데 모든 사용자는 혼자서 존재하는 것이 아니라 하나 이상의 그룹에 소속되어 있어야 한다.
# vi /etc/passwd
이 파일을 열면 각 행의 의미는 다음과 같다
사용자 이름 : 암호 : 사용자ID : 사용자가 소속된 그룹 ID : 전체 이름 : 홈 디렉토리 : 기본 셸
이번에는 /etc/group 파일을 확인해보자
# vi /etc/group
각 행의 의미는 다음과 같다
그룹 이름 : 비밀번호 : 그룹 ID : 그룹에 속한 사용자 이름
CentOS7 수동 네트워크 설정
- 네트워크 — 어댑터 1 — 네트워크 어댑터 사용하기(E) 체크 — 다음에 연결됨(N) : 브리지 어댑터 — 무작위 모드 : 가상 머신에 허용 — 케이블에 연결됨 체크
- 네트워크 — 어댑터 2 — 네트워크 어댑터 사용하기(E) 체크 — 다음에 연결됨(N) : 브리지 어댑터 — 무작위 모드 : 가상 머신에 허용 — 케이블에 연결됨 체크
네트워크 설정 이전에 디바이스 이름 확인
# ip addr 을 입력하여 디바이스 이름을 확인한다
위의 그림에서는 enp0s3, enp0s8의 두 개의 디바이스 이름이 보인다
어댑터에 네트워크 설정을 하기 전에 디바이스 이름을 바꾸고 싶으면 다음을 참고한다
어댑터 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 - 엔터)
어댑터 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 // 시간 자동 설정 관리
윈도우즈 컴퓨터에 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로 변경한다