Linux
: 대다수의 웹 서버는 리눅스를 기반으로 동작한다. CLI 기반의 높은 성능과 안정성을 제공하며, 개발과 배포가 용이하다는 장점이 있다.
- 리눅스는 오픈 소스로 시스템의 부족한 부분과 보안 취약성이 지속적인 업데이트와 유지보수로 인해 개선되어 보안성이 높은 특성을 지닌다.
- Apache : 웹 서버 소프트웨어 중 하나로, 리눅스에서 주로 사용된다. 서버 측 스크립트를 지원하며 웹 애플리케이션 서버로서의 역할도 수행 할 수 있다.
- Nginx : 웹 서버 소프트웨어 중 하나로, 리눅스에서 주로 사용된다. 높은 동시 연결 처리 능력을 가진다.
- Tomcat : 웹 애플리케이션 서버 중 하나로, Java 웹 애플리케이션을 실행한다.
명령어
: 배포판마다의 차이와 소프트웨어간의 차이가 존재한다.
-
명령어 구조
- ex) ping 8.8.8.8 -c 3
- 명령어 : ping
- 전달 인자(Argument) : 8.8.8.8 명령어에 전달해주는 데이터.
- 옵션 : -c 3 명령어 뒤 아무데나 위치해도 되며, 여러 옵션 조합해서 순서상관없이 붙여써도 된다.(’ls -la’ = ‘ls -al’ = ‘ls -a -l’ = ‘ls -l -a’)
- 명령어를 내릴 때 현재 위치한 디텍토리에서 실행된다.
-
경로
- 절대 경로 : 최상위 디렉토리부터 모두 표현 (/etc/passwd)
- 상대 경로 : 현재 위치한 곳(pwd)에서부터 표현
. or ./ : 현재 경로
.. or ../ : 현재 경로에서 한단계 위 경로
| 명령어 | 설명 |
|---|
| (root㉿kali)-[/] | 계정명 / 가상머신명 / 현재경로 (/ : 최상위 디렉토리, ~ : 홈 디텍토리) |
| sudo su root | root 권한 빌림. 로그아웃 없이 현재 사용자의 계정전환 / 권한상승 |
| ls | 디렉토리 내용 및 권한 나열 -l(엘) |
| pwd | 작업 디렉토리 위치 |
| cd | 디렉토리 이동 |
| mkdir | 디렉토리 생성 |
| cat | 파일의 내용 표준 출력 |
| more | 한 페이지 단위 출력 |
| file | 파일의 타입 출력 |
| cp 파일이름(위치) 위치 | 위치에 새로운 파일 이름을 지정해주면 다른이름으로 저장. 디렉토리를 복사하려면 옵션 -r |
| rm 파일이름(위치) | 디렉토리를 삭제하려면 옵션 -r, 강제 삭제 -f |
| mv 파일이름(위치) 위치 | 현재 위치로 이동시키면서 파일이름 변경 가능 |
| find 위치 -조건 “내용” | 조건에 name, 내용에 파일명 쓰면 위치에서 해당 파일 검색 |
| grep 찾을패턴 수색할위치 | 수색할 위치에서 찾을 패턴이 있는 줄을 모두 출력 |
| vi | 텍스트 파일 생성 |
|---|
| vi 파일이름 | 파일 열기 |
| INSERT 모드 | i 눌러서 진입, esc 눌러서 탈출 |
| :w | 저장 |
| :q | 종료 |
| :wq | 저장 후 닫기 |
| /찾을 단어 enter | 찾을 단어 맨 앞으로 커서 이동. n 누르면 다음 해당 단어로 커서 이동 |
| :3 | 3번째 줄로 커서 이동 |
| dd | 커서 위치한 줄 지우기 |
권한
: 리눅스에서 파일과 디렉토리의 권한을 읽기(r), 쓰기(w), 실행(x) 권한으로 나뉘며, 권한의 세가지 그룹 소유자(u), 그룹 멤버(g), 기타 사용자(o)에 대해 설정 가능하다.
- 권한 표기 문자열 첫 문자 - : 일반 파일, d : 디렉토리
- 8진수 표기법 : r, w, x → 4, 2, 1 이를 합산하여 권한을 표기
-
chmod 사용자종류+-권한종류 파일명
ex) chmod o+w permission_test : 기타 사용자에 쓰기 권한 추가
-
cnmod 권한(문자열) 파일명
ex) chmod u=rwx, g=rw, o=r permission_test : 그룹 소유자에 모든 권한, 그룹 사용자에 읽기&쓰기 권한, 기타 사용자에 읽기 권한 설정
-
cnmod 권한(8진수) 파일명
ex) chmod 764 permission_test : u 사용자에 모든 권한, g 사용자에 읽기&쓰기 권한, o 사용자에 읽기 권한 설정
- setuid : 해당 파일을 실행할 때, 해당 파일의 소유주의 권한으로 실행한다.
- rws : 실행 권한 있으면서 setuid가 걸려 있음
- rwS : 실행 권한 없으면서 setuid가 걸려 있음
- setgid : 해당 파일을 실행할 때, 해당 파일의 그룹의 권한으로 실행한다.
- rwsr-sr-x : 실행 권한 있으면서 setgid가 걸려 있음
- rwsr-Sr-x : 실행 권한 없으면서 setgid가 걸려 있음
- sticky bit : (x자리를 t로 대체해서 표기한다.) 디렉토리에 설정되는 권한으로, 해당 디렉토리에 누구나 파일 생성 가능, 해당 파일의 생성자만 삭제 가능 (ex) /tmp. 공유 디렉토리 설정할때 사용한다.)
- 권한 설정 할 때 x를 추가하거나 t를 빼거나 숫자 763 등으로 새로 지정해주면 t를 없앨 수 있다.
- drwxr--r-t : 실행 권한 있으면서 sticky bit가 걸려 있음
- drwxr--r-T : 실행 권한 있으면서 sticky bit가 걸려 있음
Data Stream
: 리눅스에서는 모든 데이터, 장치, 명령을 파일로 읽고 쓰는 방식으로 관리한다. 이때 입력되고 출력되는 데이터를 연속적인 데이터 스트림의 형태로 이동한다.
- 표준 입력(stdin) : 0(식별자. id) 프로세스로 입력되는 데이터 스트림으로, 별도의 리다이렉션 없이 프로세스가 실행된 경우 표준 입력 스트림은 키보드로부터 받아온다.
- 표준 출력(stdout) : 1 프로세스의 출력 데이터를 기록하는 스트림으로, 리다이렉션 없이 프로세스가 실행된 경우 표준 출력은 텍스트 터미널이 된다.
- 표준 에러(stderr) : 2. 프로세스의 오류 데이터를 기록하는 출력 스트림이다.
Redirection
- 터미널에 명령을 입력 후 실행한 결과를 모니터에 출력하는 것이 아니라 파일형태로 저장한다.
- 명령 > 파일명 : 파일명에 화면에 출력되었어야 했던 명령의 결과를 저장한다.(계속 덮어씀) >직전에 디폴드값으로 1이 생략된 형태.
- 명령 >> 파일명 : 파일의 다음 줄에 결과를 추가한다. >직전에 1이 생략된 형태
- 명령 2> 파일명 : 명령의 결과 중 에러메세지는 모두 파일명으로 가고 결과는 화면에 출력한다. (/dev/null 로 경로 지정하면 파일이 사라진다.)
PIPE
- PIPE(|) : 프로세스의 출력을 받아서 다른 프로세스의 표준 입력으로 넣어 준다.
- | 왼쪽 명령의 결과를 | 오른쪽으로 옮겨서 명령 처리한다.
- 왼쪽 명령어 결과에서 특정 단어를 찾을 때 주로 쓴다.
- ex) ps -ef | grep java : 현재 실행 중인 프로세스 정보 출력(ps), 모든 프로세스(-e) 전체 형식(f), java라는 문자열이 포함된 라인 출력(grep java) → 현재 실행중인 모든 프로세스 중에서 java라는 문자열이 포함된 프로세스의 정보를 출력한다.
출처
https://dev-bucks.tistory.com/entry/Linux-%EC%9E%85%EB%AC%B8-%EC%9B%B9%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EB%A6%AC%EB%88%85%EC%8A%A4%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0