728x90

특수권한

일반적인 권한과는 조금 다른 특수한 권한

종류는 다음과 같이 3가지가 있다.

SetUID

  • 나머지 사용자가 파일을 실행할 때 소유자의 권한으로 접근할 수 있게 해주는 권한
  • root admin rws rwx rwx
  • ls -l 명령어를 이용해서 확인했을 때 특수권한이 부여된 파일은 소유자의 권한 부분 중 실행 권한 부분이 x가 아닌 s로 나타난다.
  • chmod 4xxx [파일 이름] 또는 chmod u+s [파일 이름] 명령어로 설정할 수 있다.

SetGID

  • 나머지 사용자가 파일을 실행할 때 관리 그룹의 권한으로 접근할 수 있게 해주는 권한
  • ls -l 명령어를 이용해서 확인했을 때 특수권한이 부여된 파일은 관리 그룹의 권한 부분 중 실행 권한 부분이 x가 아닌 s로 나타난다.
  • chmod 2xxx [파일 이름] 또는 chmod g+s [파일 이름] 명령어로 설정할 수 있다.

StickyBit

  • 디렉터리에 부여하는 권한, 디렉터리를 마치 자유게시판처럼 사용할 수 있게 해주는 권한 일반적으로 /tmp 디렉터리에 부여
  • ls -l 명령어를 이용해서 확인했을 때 특수권한이 부여된 파일은 나머지 사용자의 권한 부분 중 실행 권한 부분이 x가 아닌 t로 나타난다.
  • chmod 1xxx [파일 이름] 또는 chmod o+t [파일 이름] 명령어로 설정할 수 있다.
  • StickyBit는 디렉터리에 부여한다.
  • 대표적인 예로 /tmp
  • StickyBit가 부여된 디렉터리 내에서는 누구나 자신의 파일을 생성하거나 수정, 삭제가 가능하다.
  • 하지만 다른 사용자의 파일을 수정하거나 삭제할 수는 없다.(관리자는 가능)
  • 해당 디렉터리는 마치 인터넷 자유게시판처럼 사용된다.

쉘이란

  • 터미널에 입력한 명령을 해석하고 관리하는 프로그램을 쉘이라고 한다.
  • 쉘은 사용자 커널 사이에 연결시켜주는 역할을 하며 사용자가 입력한 명령을 해석하여 운영체제가 해당 명령을 알아들을 수 있게 해 준다.
  • 쉘은 여러 가지 종류가 있으며 가장 많이 사용되는 쉘은 Bash쉘이다.

경로 이름 메타 문자

  • ~ : 현재 로그인 한 사용자의 홈 디렉터리 (사용자 정보를 저장하고 있는 /etc/passwd 파일의 6번째에 설정된 디렉터리)
  • - : 이전 작업 디렉터리 (CentOS의 Bash 쉘 기준 바로 이 전의 디렉터리만 기억)

파일 이름 메타 문자

  • * : 하나 이상의 문자를 대체하는 문자, 일반적으로 전체를 의미 (특정 디렉터리 내의 모든 파일을 지정할 때 또는 특정 이름으로 시작할 때 등의 여러 가지로 활용)
  • ex) rm -rf ./* , rm -rt test*
  • ? : 하나의 문자만 대체

인용부호 메타 문자

  • `` : `` 안에 있는 문자를 명령어로 인식하여 실행되게 한다.
  • '' : 작은따옴표 안에 있는 메타 문자를 일반문자로 취급한다.
  • "" : 큰 따옴표 안에 있는 $, \\, ` 문자를 제외한 나머지 문자만 일반문자로 취급 
  • $는 리눅스 쉘에서 변수를 사용할 때 사용하는 문자

방향 재지정 메타문자

< : 표준 입력 재지정

> : 표준 출력 및 표준 에러를 재지정, 일반적으로 명령어의 출력을 파일로 저장 또는 네트워크로 전송

  • 파일에 저장할 때 : echo “test” > ./file
  • 정상적인 결과만 출력할 때 : find / -perm -4000 2 > /dev/null
  • 에러 결과만 출력할 때 : find / -perm -4000 1 > /dev/null
  • 정상적인 결과는 파일에 저장, 에러는 출력 X : find / -perm -4000 1 > ./setuid_file 2 > /dev/null
  • >를 한 번만 사용하면 파일의 내용을 덮어씀, >> 을 사용하면 기존의 파일의 내용에 이어서 씀

|: 파이프 문자, [명령어1] | [명령어 2]처럼 사용하며, 명령어 1의 결과를 명령어 2의 입력으로 사용

  • ex) ls /etc | grep rc ls 명령어의 결과에서 특정 문자를 포함한 라인만 뽑아 볼 때
  • ls /etc 결과 중에서 yum이 포함된 내용만 출력할 때
  • ls /etc | grep yum
  • ls /etc 결과가 너무 길어서 화면에 다 안 나와 끊어서 보고 싶을 때
  • ls /etc | more

사용자 초기화 파일

  • /etc/profile : 시스템 전역에 걸쳐 환경을 설정하는 파일, 모든 사용자가 적용되는 파일
  • ~/ .profile : 개별 사용자의 홈 디렉터리에 있는 파일, 해당 사용자의 설정을 변경할 때 사용
  • ~/ .bashrc : 개별 사용자의 홈 디렉터리에 있는 파일, 해당 사용자의 쉘 관련 설정을 변경할 때 사용
  • 환경 변수, 쉘 프롬프트 모양(명령어 앞에 붙는 내용), 별명 기능(alias), 쉘 옵션 정의 등 설정 가능

환경 변수

  • 시스템 환경에 대한 설정을 저장하고 있는 변수
  • HOME : 사용자의 홈 디렉터리
  • PATH : 실행파일을 찾는 경로
  • LANG : 프로그램 사용 시 기본 지원되는 언어
  • SHELL : 로그인해서 사용하는 쉘
  • EDITOR : 기본 편집기의 이름
  • PS1 : 명령 프롬프트 변수
728x90
728x90

링크

  • 특정 파일 또는 디렉터리에 접근을 쉽게 할 수 있도록 하는 방법
  • 파일 시스템이 물리적인 장치인 하드디스크 상에 저장되어있는 특정 파일의 위치를 가리키는 것

하드 링크

  • 하드 디스크의 특정 주소

심볼릭 링크

  • 윈도우의 바로가기 개념과 비슷하며 실질적인 디스크 상의 파일을 가리키는 것이 아니라 파일 시스템상의 특정 파일을 가리키는 것

링크 생성 명령어

  • ln [옵션] [원본] [링크]
  • 옵션을 지정하지 않고 링크 파일을 생성하면 하드 링크를 생성할 수 있다.
  • 옵션으로 -s를 지정하고 링크 파일을 생성하면 심볼릭 링크를 생성할 수 있다.

권한

  • 리눅스의 모든 파일과 디렉터리는 권한(퍼미션)을 가지고 있다.
  • 리눅스의 파일 시스템 상에 권한에 대한 정보를 저장하는 부분이 있다.
  • 퍼미션들은 시스템 상에 존재하는 파일들에 대한 읽기, 쓰기, 실행에 대한 접근 여부 결정
  • ls -l 명령어로 확인 가능
  • 이러한 퍼미션은 다중 사용자의 환경을 제공하는 리눅스 환경에서는 가장 기초적인 접근 통제 방법

drwxr-xr--. 3 root root 18 9월 28 22:07 .config

  • 총 10개의 문자, 첫 번째 문자는 해당 파일의 종류
  • 앞에 root는 소유자 뒤에 root는 그룹
  • 두 번째 ~ 열 번째 문자는 권한
  • 두 번째부터 열 번째 문자를 세 개씩 끊어서 읽는다.
  • rw- : 소유자 권한
  • r-x : 관리 그룹 권한
  • r-- : 나머지 권한
  • 소유자 : 일반적으로 파일이나 디렉터리를 생성한 사용자, 명령어로 변경 가능
  • 관리 그룹 : 파일이나 디렉터리를 생성한 사용자가 속한 그룹, 명령어로 변경 가능
  • 나머지 : 소유자도 아니고 관리 그룹에 속한 사용자도 아닌 경우
  • r : 읽기 권한이 있음
  • w : 쓰기 권한이 있음
  • x : 실행 권한이 있음
  • -: 권한이 없음

권한 설정 방법

  • chmod [권한] [파일 또는 디렉터리 이름]
  • [권한] : 권한을 입력할 때는 심볼릭 모드와 옥텟(8진수) 모드 2가지 방식을 이용하여 입력 가능하다.
  • [파일 또는 디렉터리 이름] : 파일, 디렉터리를 지정할 때는 절대 경로 또는 상대 경로 모두 가능하다.

심볼릭 모드

대상 권한 권한 부여 여부

소유자, u 읽기, r 권한부여, +
관리 그룹, g 쓰기, w 권한 회수, -
나머지 사용자, o 실행, x  

ex) 소유자에게 쓰기 권한을 준다.

chmod u+w file

옥텟 모드

---  --x -w- -wx r-- r-x  rw- rwx
0 1 2 3 4 5 6 7

r : 4, 읽기 권한이 있음

w : 2, 쓰기 권한이 있음

x : 1, 실행 권한이 있음

umask

파일 또는 디렉터리를 생성할 때 권한 값을 결정한다.

  기본 권한(8진수) 기본 권한(문자)
파일 644 rw-r- -r- -
디렉터리 755 rwxr-xr-x
  • 파일이나 디렉터리 생성할 때 기본적으로 권한 값은 파일의 경우 644 디렉터리의 경우 755로 설정된다.
  • 이 값은 umask 값에 의해서 결정되는 값으로 파일은 666에서 umask값을 not 연산을 수행 후 둘을 and 연산, 디렉터리는 777에서 같은 방식으로 구해진다.
  • umask 값은 umask 명령어를 이용해서 변경 가능하며 재부팅하면 초기화된다. umask의 기본값은 022이다.
  • 재부팅 후에도 적용을 시키려면 사용자 초기화 파일에 설정해야 한다.

권한에 따라 영향받는 파일 및 디렉터리 명령어

명령어 파일 디렉터리
읽기 more, cat, head, tail ls
쓰기 vi 편집기로 내용 수정 touch, mkdir, mv, cp, rm
실행 파일 이름 cd
728x90
728x90

grep 명령어

grep [옵션] [패턴] [파일 이름]

  • [옵션] : 좀 더 디테일한 조건으로 찾을 때 사용
  • [패턴] : 찾고 싶은 내용을 입력, 일치하는 내용을 출력, 정규표현식 사용 가능
  • [파일 이름] : grep 명령어로 특정 내용을 검색할 파일을 지정한다.
  • ex) grep -i root /etc/passwd

[옵션]

  • -i : 대소문자 무시
  • -n : 줄 번호 표시
  • -v : 패턴을 제외한 내용만 출력
  • -w : 단어 단위로 검색
  • -c : 매칭 되는 줄 수 표시
  • -l : 매칭되는 패턴이 있는 파일 이름 출력

[패턴]

  • 정규표현식 : 어떤 문자를 표현할 때 다양한 특수문자를 이용해 표현하는 방식
  • ^ : 줄의 시작을 지정(해당 패턴이 줄의 시작인 경우 캡처) ex) ^root로 했을 때 root is administrator 가 인식되고 guest is not root는 인식이 안된다.
  • $ : 줄의 마지막을 지정 ex) root$
  • . : 한 문자 대치 ex) r..t
  • : 여러 문자 대치 ex) r
  • [ ] : 패턴 중 한 문자 일치 ex) [rR]oot
  • [^]: 패턴 중 제외할 문자 지정 ex) [^T]oot : T를 제외한 oot 부분 출력

fgrep 명령어

fgrep [옵션] [패턴] [파일 이름]

  • 만약 문서에 특수문자가 포함된 경우 여러 특수 문자들은 정규표현식으로 인식되기 때문에 해당 정규표현식의 기능으로 검색이 될 수 있다. 이런 경우 fgrep은 여러 특수문자들(*, ₩, ‘, “ 등)을 단순한 문자로 인식해서 문서 내에서 해당 특수문자를 찾을 때 사용할 수 있다.

find 명령어

find [경로] [조건] [아규먼트] [행동] : 디렉터리 내에서 검색 명령어

  • [경로] : 어디를 기준으로 검색할 것인지 입력한다. 하위 디렉터리까지 검색
  • [조건] : 어떤 조건으로 검색할 것인지 입력한다.
  • [아규먼트] : 조건에 맞는 값을 입력해준다.
  • [행동] : 검색 결과를 어떻게 처리할 것인지 입력한다.
  • ex) find / -name file -exec rm -rf {} w특수문자;

[조건]

  • -name : 이름으로 검색
  • -type : 파일의 타입으로 검색 디렉터리는 d, 파일은 f
  • -perm : 권한으로 검색
  • -user : 소유자로 검색
  • -size : 파일 크기로 검색, + 이상, -이하, 단위는 512바이트 c, k 키로바이트, M 메가바이트, G 기가바이트
  • -atime : 파일의 마지막 접근 시간으로 검색
  • -mtime : 파일의 마지막 수정 시간으로 검색

[행동]

  • -ls : 자세한 결과 출력
  • -exec [명령어] {} w특수문자; : 검색한 파일을 특정 명령어로 실행
  • ex) -exec rm {} w특수문자; : 제거하기
728x90
728x90

파일 관련 명령어

touch : 내용에 아무것도 없는 빈 파일을 생성

rm : 파일을 제거하는 명령어

  • 일반적으로 -rf 옵션과 같이 사용 -r은 디렉터리 삭제 -f는 강제 삭제

mv : 파일 이름 변경

  • mv [현재 파일 이름] [변경할 파일 이름]

mv : 파일 이동

  • mv [원본 경로] [이동할 경로]

cp : 파일 복사

  • cp[원본 이름] [복사할 이름]

cat, head, tail, more : 파일 내용 확인

cat : 파일의 내용을 전부 확인

  • -n : 파일 내용의 줄 을 같이 출력해준다.

head : 파일의 내용을 시작부터 몇 줄만 확인, 기본적으로 10줄, 옵션으로 보고 싶은 라인 수 지정

tail : 파일의 내용을 끝에서 몇 줄만 확인, 기본적으로 10줄, 옵션으로 보고 싶은 라인 수 지정

  • -f : 실시간으로 내용의 변경사항을 확인할 수 있다.

more : 파일의 내용을 화면에 맞춰서 확인, space는 한 페이지씩 확인, enter는 한 줄 더 확인

  • 보통 head 명령어를 안쓰고 cat /etc/passwd | head 이렇게 쓴다.

vi 편집기

command 모드

가장 기본이 되는 모드, 복사, 붙여 넣기, 다른 모드로 전환, 커서 이동, 삭제 등

(1) 커서 이동

  • 방향키
  • G : 가장 마지막 줄로 이동
  • gg : 첫번째 줄로 이동
  • [n]G : n번째 줄로 이동 ex) 100번째 줄 이동 100G
  • $ : 커서가 위치한 줄의 맨 끝으로 이동
  • 숫자 0 : 커서가 위치한 줄의 맨 앞으로 이동
  • w : 커서가 한 단어씩 오른쪽으로 이동
  • b : 커서가 한 단어씩 왼쪽으로 이동
  • h : 방향키 왼쪽
  • j : 방향키 아래
  • k : 방향키 위로
  • l : 방향키 오른쪽

(2) 삭제

  • x : 한 문자 삭제, 또는 Edit모드에서 백스페이스나 delete 키로 삭제도 가능
  • dd : 커서가 위치한 한 줄 삭제 ex) 5 dd 하면 5줄 한 번에 삭제
  • d[커서이동] : 커서가 이동한만큼 삭제

(3) 수정

  • r : 커서가 위치한 부분의 문자 하나를 입력하는 문자로 대체
  • u : Ctrl + z 처럼 작업 취소

(4) 복사 및 붙여넣기

  • yy : 커서가 위치한 한 줄을 복사
  • y [커서 이동] : 커서 이동하는 만큼 복사
  • p : 커서 밑이나 커서 다음에 붙여 넣기

Last Line 모드

파일을 저장하거나, 종료하거나 저장하지 않고 그냥 종료, 검색, 바꾸기 등

(1) 편집기 상태 변경

  • :set nu : 라인 넘버 표시
  • :set nonu : 라인 넘버 표시 안 함
  • :set ic : 검색할 때 대소문자 무시
  • :set noic : 검색할 때 대소문자 적용

(2) 검색 및 변환

  • /[내용] : 검색, n 다음 검색, N 이전 검색
  • :%s/[찾을내용]/[바꿀내용]/g

(3) 저장 및 종료

  • :w : 저장
  • :q : 종료
  • :wq : 저장 및 종료
  • :w! : 강제로 저장
  • :q! : 강제로 종료
  • :wq! : 저장 및 강제 종료
728x90

'개발 > Linux' 카테고리의 다른 글

프로세스, 아카이브(tar), 압축  (0) 2022.07.29
특수권한, 쉘 명령어  (0) 2022.07.28
링크, 권한 명령어  (0) 2022.07.27
grep, fgrep, find 명령어  (0) 2022.07.26
리눅스 기초, 디렉터리 관련 명령어  (0) 2022.07.21
728x90

리눅스 기초

리눅스란?

  1. 컴퓨터 운영체제의 한 종류
  2. 윈도우와는 다르게 오픈 소스 운영체제
  3. 소스코드가 공개되어있기 때문에 다양한 리눅스 기반의 운영체제가 존재

 

특징

  1. 높은 이식성과 확장성(c언어 기반이기 때문)
  2. 안정성과 신뢰성
  3. 계층적 파일 시스템(최상의 디렉터리가 존재하고 모든 것들은 해당 디렉터리 하부에 존재)

 

프롬프트

  1. 컴퓨터가 입력을 기달리고 있음을 가리키기 위해 화면에 나타나는 표시
  2. 일반적으로 리눅스의 프롬프트는 현재 작업 디렉터리, 현재 로그인한 사용자 등에 대한 정보를 표시

 

$는 일반사용자

#은 관리자

 

man ls ls의 명령어에 대한 설명서

엔터 치면 한 줄씩, 스페이스 치면 한 페이지씩


디렉터리 관련 명령어

pwd : 현재 작업 디렉터리 확인
cd : 작업 디렉터리 변경
ls : 디렉터리 내용 확인
mkdir : 디렉터리 생성
rmdir : 디렉터리 제거
mv : 디렉터리 이름 변경
mv : 디렉터리 이동
cp : 디렉터리 복사

pwd : 현재 작업 디렉터리 확인

cd : 작업 디렉터리 변경

  • 절대 경로 : 최상의 디렉터리인 /부터 특정 파일 또는 디렉터리의 경로를 모두 입력
  • 상대 경로 : 현재 작업 디렉터리를 기준으로 특정 파일 또는 디렉터리의 경로를 입력 .은 현재 디렉터리를 의미하고, ..은 상위 디렉터리를 의미한다.

ls : 디렉터리 내용 확인

  • 일반적으로 ls는 -al 옵션과 같이 사용한다.
  • -a는 숨겨진 파일까지 모두 표시, -l 은 좀 더 자세한 결과를 출력한다.
  • -rwxr-xr-x : 파일에 대한 접근 권한
  • 1 : 하드 링크 수
  • root : 파일의 소유자 UID
  • root : 파일의 관리 그룹 GID
  • 4096 : 파일의 크기
  • .dockernev : 파일의 이름 파일 이름 앞에 . 이 붙어있으면 숨겨진 파일이다.

mkdir : 디렉터리 생성

  • -p 옵션을 사용하면 폴더 안에 폴더 안에 폴더 등 여러 폴더를 생성할 수 있다.

rmdir : 디렉터리 제거

  • rmdir은 폴더 안에 파일이 있으면 삭제가 안되고 비어 있어야 삭제가 된다.
  • 따라서 rm -r 옵션을 이용해서 파일을 삭제할 수 있다. rm은 rm -rf로 많이 사용

mv : 디렉터리 이름 변경

  • mv [현재 이름 디렉터리] [변경할 디렉터리 이름]

mv : 디렉터리 이동

  • mv [원본 경로][이동할 경로]

cp : 디렉터리 복사

  • 디렉터리를 통째로 복사할 때는 -r 옵션 사용
  • cp -r [원본 경로][이동할 경로]
728x90

'개발 > Linux' 카테고리의 다른 글

프로세스, 아카이브(tar), 압축  (0) 2022.07.29
특수권한, 쉘 명령어  (0) 2022.07.28
링크, 권한 명령어  (0) 2022.07.27
grep, fgrep, find 명령어  (0) 2022.07.26
리눅스 파일 관련 명령어, vi 명령어  (0) 2022.07.22

+ Recent posts