0부터 시작하는 Linux 공부 - 편집기

Jaehong Lee·2022년 7월 20일
0
post-thumbnail

1. 파일 내용 수정하기

  • gedit는 run level 5 에서 동작하는 애플리케이션 이다. 따라서, 그래픽 환경이 없다면 동작하지 않는다. 따라서 run level 3인 cli 환경에서는 동작하지 않는다
  • gedit는 편집 기능이 부족하다

편집기

  • 행 단위 편집기 : 프롬프트 상에서 파일을 편집하고, 해당 내용을 파일로 전송하는 형태 ( sed - 스트림 편집기로, 일반 편집기와 달리 지시된 명령에 따라 파일의 내용을 일괄적으로 바꿔서 출력해 준다. 쉘 스크립트를 작성할 때 파일을 읽어 들여 편집하는 기능을 수행하는데 많이 사용된다)
  • 화면 단위 편집기 : 직접 파일을 화면에 모두 열어두고, 편집하는 형태 ( emacs - 전문가용 , vi(m) - 일반적으로 널리 사용되는 편집기 )

sed 써보기

  • s는 source로 s/root/hello/g 는 root로 시작하는 단어를 hello로 바꿀 것인데 g ( global )을 통해 모든 라인에서 입력과 일치하는 패턴에 대해 모두 바꿀 것이라는 의미다
    • g가 없으면 파일 위에서 부터 검색하여 만나게 되는 첫번째 문자열만 변경
  • -i 옵션은 inplace로 교체해주는 옵션이다
  • hello로 잘 바뀌었다
  • 변수로도 변경할 수 있다. 이때 ' 이 아니라 "를 사용해야한다

  • httpd port 번호를 확인하고, sed 편집기를 이용해 port 번호를 바꿔보자
  • 허나 httpd를 재실행해서 변경 사항을 적용할려면 error 가 발생한다

2. 리눅스에서의 보안 - sed 사용

  • firewalld ( 방화벽 ) : 외부로 내보내는 것 originated, 외부에서 통과하는 것 transit ( forwarded , 리눅스 서버에 인터페이스가 다수 있을때, 내부에 접속하는 것이 아닌 한 인터페이스에서 다른 인터페이스를 통해 통과하는 것 ) , 접속을 허가하지 않는 terminated 을 제어한다
  • SELinux : 내부 자원으로의 접근 ( /etc/selinux/config를 확인하면 enforcing 이라고 되있다. SELinux를 사용한다는 뜻이다 )

  • 다음과 같이 enforcing 되서 SELinux가 활성화되면 port 번호를 바꿀 수 없다
  • sed로 disabled로 바꿔준다. 이는 프로그램이 재실행되도 해당 설정파일을 보고 disabled 이므로 비활성화 하게 해준다. disabled 모드는 아예 selinux를 꺼버리는 것 이다
  • setenforce 0를 통해 바로 permissive 모드로 전환 해준다. 해당 모드에서는 정책에 어긋나는 동작은 감사 로그를 남기고 허용해준다
    • 이는 현재 실행중인 프로그램에만 영향을 끼친다. 따라서 위에 처럼 설정 파일을 바꿔주거나, 재실행 후 다시 setenforce 0 를 쳐줘야한다
  • getenforce는 현재 SELinux 상태를 확인할 수 있다
  • httpd를 재실행 시키면 잘 실행된다
  • 잘 접속된다

3. 화면 단위 편집기 - vim

Vi(m) 이란?

  • vi 편집기는 모든 유닉스/리눅스 시스템에서 기본적으로 포함되어 있으며 CentOS 에 포함된 vi 편집기는 사실 vi 편집기의 기능을 향상 시킨 vim(Vi Improved) 이다. vi 명령어는 입력해도 동일하게 vim 에서 실행 되므로 편의상 vi 편집기 또는 vi 에디터로 명명한다
    • vi(m) 는 내부적으로 sed 가 내장되어 있다
    • 다른 배포판 리눅스에서는 vim 이 설치되어 있지 않은 경우가 있다. 이 경우이네느 vim 을 설치하고 .bashrc 에서 alias vi = 'vim' 으로 설정해 두는 것이 좋다

  • vi 명령어를 통해 vim 편집기로 다음 파일을 연다

모드 종류

  • 명령 모드 : 입력한 내용의 명령어로 해석
  • 입력 모드 : 입력한 내용이 버퍼로 옮겨져 추가, 수정됨
  • 마지막 행 모드 : 검색, 저장, 바꾸기, 줄 이동등 가능
    • 두 모드는 명령 모드에 연결되있으며, 입력 모드에서 마지막 행 모드로 Direct 이동은 불가능 하다

명령 모드에서 이동하기

  • 방향키로 이동 가능
  • $ : 한 행에서 제일 마지막으로 이동
  • ^ : 한 행에서 제일 처음으로 이동
  • gg : 제일 위로 이동
  • G : 제일 끝으로 이동
  • 10G : 10번째 줄로 이동

명령 모드 에서 조작

  • dd : 현재 커서가 위치한 행 하나를 삭제
    • 2dd : 현재 커서를 기준으로 2 행 삭제
  • u : 직전 상태로 돌아간다
  • yy : 한 줄 복사
    • 2yy : 현재 커서를 기준으로 2 행 복제
  • p : 현재 커서 기준으로 밑에 붙여넣는다

입력 모드 에서 조작

  • i : 입력 모드로 이동. 휘발성 메모리인 버퍼로 이동한다. 만약, 이 버퍼에서 작업한 내용을 저장하지 않으면, 작업한 내용은 삭제된다

    • 다음과 같이 i 키를 입력하면 insert라고 뜬다
    • 입력후 저장할려면, 명령 모드로 돌아가서 마지막 행 모드로 가야한다
    • esc 를 입력하면 명령 모드로 돌아온다
  • o : 현재 커서의 밑에 줄이 생기며 입력 모드로 이동한다

마지막 행 모드 에서 조작

  • : 을 통해 마지막 행 모드에 이동한다

    • w를 통해 저장하고, q를 통해 나간다

  • 마지막 행 모드에서 set nu 를 통해 줄 번호를 출력할 수 있다
  • / ' 검색할 단어 ' 를 통해 검색이 가능하다
    • n을 누르면 검색된 다음 결과로 이동한다
    • N은 직전 결과로 이동한다

강제 나가기

  • 작업 후 저장하지 않고 :q 를 누르면, 다음과 같이 작업한 내용이 버퍼에 남아있어서 해당 내용을 처리한 뒤 나가야 한다고 경고가 뜬다
  • :q! 를 통해 뒤에 !를 붙이면 경고 없이 강제로 나갈 수 있게 한다
  • 간혹 퍼미션 문제로 wq 를 하더라도 종료가 되지 않는 경우가 있다. 이 경우에는 :wq!를 해서 강제로 빠져 나가야 한다

4. vim 실습

  • 다음과 같이 새 파일을 하나 만들면, 현재 저장을 안했으므로 가상 메모리에 저장되있는 것 ( swp ) 을 확인할 수 있다
  • 내용을 입력하고, 저장하고 빠져나가자
    • ~ 는 해당 행을 사용하고 있지 않은 것 이다

  • 저장했으므로 swp 파일은 사라지고, 본 저장한 파일을 확인할 수 있다

5. 편집기를 이용해서 웹 서버 설정 변경

  • 구성 파일을 vim 편집기로 열자
  • 줄 번호 표시해보자
  • 8888 문자열을 찾아서 이동
  • N 을 입력해보면, 다른 검색 결과는 없다고 뜬다
  • 80으로 바꾸자
  • index.html 검색 후 이동
  • 접속했을때 index.jsp 를 출력해주게 설정한다. 만약 없으면 index.html 을 출력하고, 이것도 없으면 main.html 을 출력하게 설정한다
  • 다음과 같이 검색하면, 맨 앞의 var만 검색된다
  • 웹 서비스 접속시 제공해주는 html 파일들이 저장된 폴더다
  • 저장하고 나오자 ( :wq )
  • mv 로 index.html의 이름을 바꿔주고, httpd를 재실행 해준다
  • 잘 접속된다
  • curl로 확인해보면 index.html 이 없다고 뜬다
  • main.index 는 잘 확인된다
  • 다음과 같이 확인 가능 하다
profile
멋진 엔지니어가 될 때까지

0개의 댓글