1. vi 편집기
1) vi 편집기 모드
2) 커서 이동 관련 키
3) 복사, 붙여넣기, 삭제 관련 키
4) 입력 관련 키
5) 확장 모드
확장 모드는 다양한 기능을 제공한다. 확장 모드로 전환하려면 명령 모드에서 :(콜론)를 실시한다.
확장 모드에서 ! 이후에 리눅스 명령을 입력하고 엔터를 실시하면 명령이 실행된다.
명령모드에 콜론을 입력해서 확장 모드로 전환하고 !date를 입력해서 명령을 실행했다.
또는 확장 모드에서 ! 이후에 bash 명령을 실행하면, bash 쉘이 새로 실행된 쉘에서 명령어를 사용할 수 있다
6) swp 파일
'swp' 파일을 알아보기 위해서 리눅스 윈도우에서 터미널을 실행한다.
1) vi 편집기로 오픈한 파일을 vi 편집기로 오픈한 경우 기존 터미널에서 'test.c' 파일을 vi 편집기로 오픈한다.
리눅스 윈도우 터미널에서 'test.c' 파일을 vi 편집기로 오픈한다. 그럼 이미 'test.c' 파일이 vi 편집기로 오픈된 상태이기 때문에 다음과 같은 내용이 출력된다.
2) 파일을 수정하다가 vi 편집기가 종료된 경우 기존 터미널에서 오픈한 'test.c' 파일에 8 번 라인에 puts("Hello Linux3"); 코드를 추가한다.
리눅스 윈도우에서 'vim' 편집기의 프로세스를 검색하여, 'kill' 명령을 이용하여 강제 종료한다
기존 터미널를 확인하면 '죽었음'이라는 문자열이 출력되고 vi 편집기가 종료된 것을 확인할 수 있다
기존 터미널에서 vi 편집기로 추가한 코드를 저장하지 않고 종료된 상태이다. 이런 경우 '.test.c.swp' 파일을 이용하여 추가한 코드를 복구할 수 있다.
기존 터미널에 vi 편집기로 'test.c' 파일을 오픈하여 복구하도록 한다.
'r'을 입력하여 복구를 짂행하면 다음과 같은 내용이 출력된다.
추가한 코드가 복구되었다면, 확장 모드에서 'wq'를 실시하여 저장하고 나간다.
복구가 완료되었다면 남아있는 swp 파일을 제거해준다.
2. 리눅스 퍼미션
1) 퍼미션
퍼미션이란 리눅스 사용자들이 디렉토리 및 파일에 대한 '읽기', '쓰기', '실행', '거부'에 관련된 권한을 의미한다.
- 읽기 권한
파일 안에 있는 내용을 확인하거나 디렉토리 안에 있는 내용을 확인하려면 읽기 권한이 필요하다. 만약, 파일의 읽기 권한이 없다면 'cat', 'more', 'less', 'head', 'tail', 'vi' 명령을 이용하여 파일 안에 내용을 확인할 수 없으며, 디렉토리에 읽기 권한이 없다면 'ls' 명령을 이용하여 디렉토리 안에 내용을 확인할 수 없다. - 쓰기 권한
파일 안에 내용을 수정하거나 디렉토리 안에 있는 파일 및 디렉토리를 수정하려면 쓰기 권한이 필요하다. 만약, 파일의 쓰기 권한이 없다면 편집기(vi, vim, gedit), 출력재지정(>, >>)을 이용하여 파일 내용을 수정할수 없으며, 디렉토리에 쓰기 권한이 없다면 디렉토리 안에 있는 파일과 디렉토리를 생성, 삭제, 이름변경, 복사를 진행할 수 없다. - 실행 권한
파일을 실행하려면 파일의 실행 권한이 필요하다. 만약, 파일의 실행 권한이 없다면, 실행할 수 없다. 그리고 스크립트 파일인 경우, 실행 권한이 없으면 쉘을 이용하여 실행해야 한다. 디렉토리로 접근하려면 디렉토리의 실행 권한이 필요하다. 만약, 디렉토리의 실행 권한이 없다면 'cd' 명령으로 해당 디렉토리로 접근할 수 없으며, 상대 경로 및 젃대 경로 지정도 불가능하다.
2) 퍼미션 표기 방식
ex) 764 => rwx rw- r--
452 => r-- r-x -w-
- chown
파일과 디렉토리의 소유자 및 그룹을 변경할 때 사용하는 명령어이다.
'-R' 옵션을 이용하면, 지정한 디렉토리와 하위 디렉토리 및 파일의 소유자, 그룹을 한번에 변경할 수 있다 - chgrp
파일과 디렉토리의 그룹을 변경할 때 사용하는 명령어이다.
'-R' 옵션을 이용하면, 지정한 디렉토리와 하위 디렉토리 및 파일의 그룹을 한번에 변경할 수 있다. - chmod
파일 및 디렉토리 권한을 변경하는 명령이며, 권한 설정 모드는 다음과 같이 심볼릭 모드와 수치 모드 2 가지 방식을 제공한다.
- 심볼릭 모드
- 수치 모드
! 읽기 또는 쓰기 권한은 디렉토리나 파일 자체를 수정하는 것이 아닌 내부의 내용을 수정할 수 있는 권한이다.
따라서 dir1/file1을 삭제하고 싶은 경우 file1의 쓰기 권한이 아닌 dir1 의 쓰기 권한이 필요한 것이다.
file1의 권한은 무관하다.
3) umask
파일과 디렉토리를 생성할때 권한 조정하는 기능을 수행한다.
- root 계정
root 계정의 umask 기본값은 0022 이다.
파일을 생성하면 파일의 권한이 666으로 설정된다. 하지만 umask 가 0022로 성정돼있기 때문에 root 계정에서 파일을 생성하면 644 즉, rw- r-- r-- 으로 생성된다.
반면 디렉토리는 권한이 777로 성정되기 때문에 umask값에 의해서 755 즉, rwx r-x r-x로 생성된다.
- umask 기본값 변경
4) SetUID/SetGID
'SetUID' 권한이 설정된 파일을 실행하면 파일의 소유자 권한을 할당해주는 특수 권한이다. 예를 들어 'A'라는 실행 파일의 소유자가 root 계정이고 'SetUID' 권한이 설정되어 있다면, user1 계정이 'A' 파일을 실행하면 root 권한을 할당받아 소유자가 root 계정인 파일에 대해서 읽기/쓰기/실행이 가능해진다.
- SetUID
root 계정은 'usermod' 파일에 대한 '실행' 권한이 있기 때문에 user1 계정의 쉘 유형을 변경할 수 있다.
변경된 user1 의 쉘 유형은 '/etc/passwd' 파일에 저장되어야 하는데, '/etc/passwd' 파일의 소유자가 root 이고 '쓰기' 권한이 있기 때문에 변경된 쉘 유형을 저장할 수 있다.
user1 계정도 'usermod' 파일에 대한 '실행' 권한이 있기 떄문에 user1 계정의 쉘 유형을 변경할 수 있다.
'usermod' 파일을 실행하여 user1 의 쉘 유형을 변경하면 '/etc/passwd' 파일에 저장되어야 하는데, '/etc/passwd' 파일의 소유자가 root 이고 root 만 '쓰기' 권한이 있고 다른 사용자는 '쓰기' 권한이 없기 때문에 변경된 쉘 유형을 저장할 수 없다.
5) SetUID/SetGID 설정
chmod 4xxx file1
소유자에 실행 권한이 없으면 대문자 S로 표시된다.
chmod 2xxx file1
그룹에 실행 권한이 없으면 대문자 S로 표시된다.
6) Sticky bit
디렉토리의 '쓰기' 권한과 'Sticky bit' 권한이 설정된 디렉토리는 모든 계정들이 파일과 디렉토리를 생성, 삭제, 수정이 가능하지만, 다른 소유자의 파일과 디렉토리를 삭제, 수정이 불가능하다. 그렇기 때문에 특정 디렉토리를 공용 디렉토리 목적으로 사용할 경우, 사용자들에 의해서 파일을 생성할 수 있으나, 파일을 수정, 삭제할 수 없도록 제한 할 경우 사용하는 특수 권한이다. 'Sticky bit'는 디렉토리 기본 퍼미션이 '777'인 경우 사용할 수 있다.
chmod 1xxx file1
다른 사용자에 실행 권한이 없으면 대문자 T로 표시된다.
init 0