구름 9일차

박경현·2022년 8월 11일
0

호랑이는 토끼를 잡을때에도 죽을 힘 다해서 잡는다
-> 내가 아는 내용이라도 죽을 힘을 다하지 않으면 안된다!!!

오늘 강사님이 해주신 동기부여 말씀이었다 -> 전공자였지만 언제나 열정 잃지 말고 노력하자!!

파일 속성

파일 접근 권한 변경

파일은 읽기 쓰기 실행에 대한 파일 접근 권한이 부여된다(가지는 권한의 크기는 다르다!!!)
파일 접근 권한은 파일 소유자,파일 소유자 그룹, 기타 사용자에 대하여 각각의 파일 접근 권한 부여

파일 접근 권한 표기 방법

문자 표기 방법 및 숫자 표기 방법
	r w x [읽기 권한 부여, 쓰기 권한 부여, 실행권한 부여]
	권한 미 부여 시에는 - 로 표시!
	2진수 3자리는 8진수 1자리로 펴현 가능
	000 - 0  - - - 
	001 - 1  - - x
	010 - 2 - w -
	011 - 3 - w x
	위에는 잘 안나옴 (읽게는 해줌!)
	100 - 4 r - -
	101 - 5 r - x
	110 - 6 r w -
	111 - 7 r w x

리눅스 shell에서 파일 생성시 기본 접근 권한

텍스트 파일
touch로 만든 파일의 기본 권한은 6 6 4 이다 (r w - r w - r - -)

디렉토리파일
mkdir로 만든 디렉토리 파일의 기본 권한은 7 7 5 이다 (r w x r w x r - x )

파일 접근 권한은 필요에 따라 바꿀 수 있다

chmod명령 - 파일 접근 권한 변경

chmod [옵션] <파일 접근 권한><파일명>
 -R: 하위 디렉토리도 권한을 변경 시켜버림
 

파일 접근권한을 표기하는 방법 ->파일 만들고 난 후 바꾸는 방법

    문자 표기(기호 모드)  
    <카테고리 문자> <연산자 기호> <접근 권한 문자>
		카테고리  - u(사용자) , g(group), o(기타 사용자), a(모두)
		문자 연산자 기호 - +(권한 부여) -(권한 미 부여)
		접근 권한 문자 - r, w, x
		ex) chmod u+rwx sample.txt
		chmod u+rw, go+rx sample.txt
        

	숫자 표기 (숫자 모드)  -> 이걸 주로 사용! 확실히 편하다
		소유자/소유자 그룹/기타 사용자에 대한 권한을 8진수 3자리로 표현
		chmod 644 sample.txt
						

파일 기본 권한 제한 -> 파일 생성 전에 권한 설정 해버리기!

Linux shell 상에서 생성되는 파일은 기본 권한이 설정되어서 생성된다.
필요 시 파일에 부여 되는 기본 권한을 제한해서 생성할 수 있도록 설정할 때가 있다

umask - 파일 생성시 기본 권한 제한 설정

	umask [옵션] [<mask값>]
		-S옵션: mask 값 문자 출력
		umask 또는 umask -S 입력시 현재 설정된 mask값 출력

		umask 
			-> 0002 (특수번호, 유저, 그룹, 기타사용자) 순서임, 
            파일생성시 제한하고 싶은 권한을 표기한 값
            즉 2면 w를 의미하니까 기타사용자의 w권한이 없다는것이다!!
            
		umask -S
			-> u=rwx, g=rwx, o=rx
			
        umask 022 이렇게 적으면-> 그 다음부터 생성하는 파일 부터는 이게 기본으로 적용이 된다

(기타 사용자에게 x가 주어져도 자신의 권한 범위내에서만 사용가능)

그래서 그 권한의 범위를 늘릴 수 있는 ->특수 접근 권한!

가장 처음 자리수가 특수 접근 권한을 의미 -> 방금 umask 했을때 나왔던 0002 에서 맨 처음 0을 의미!

  • 1,2,4를 부여할 수 있다
    sticky bit - 맨 앞자리가 1
    SetGID - 맨 앞자리가 2
    SetUID - 맨 앞자리가 4

SetUID

  • 해당 파일이 실행되는 동안(이게 중요!)에는 실행한 사용자(소유자, 소유자 그룹, 기타 사용자)의 권한이 아니라 파일 소유자 권한으로 실행

    chmod 4755 sample -> 이라고 하면 맨 앞에 4가 SetUID를 의미!

    ls -l 을 했을때 -rwsr-xr-x 라고 해서 s가 소유자의 실행 부분에 적힌다!

SetGID

  • 해당 파일이 실행되는 동안에 실행한 소유자에게 그룹 권한으로 파일 실행

    chmod 2755 sample -> 이라고 하면 맨 앞에 2가 SetGID를 의미!

    ls -l 했을때 -rwxr-sr-x 라고 해서 s가 group권한의 실행에 적힌다

Sticky bit -> 제일 특이함

  • 디렉토리에 부여 , 디렉토리에 sticky bit가 설정되면 이 디렉토리에는 누구나 파일 생성이 가능

    파일은 파일을 생성한 계정으로 소유자가 설정 되며, 다른 사용자가 생성한 파일은 삭제 불가능하다.

    drawerwxrwt -> t가 마지막으로 나옴!

tmp라는 파일은 임시 파일을 생성할 수 있게 해주는 애여서 소유자가 root이지만
sticky를 이미 설정해놨어서 누구나 파일을 만들 수가 있다

sticky bit가 설정된 대표적 디렉토리 - /tmp 


  • 디렉토리 권한

    r- 디렉토리 내용 읽기 가능
    x - 디렉토리에 마지막에 x가 부여 되어있으면 그 디렉토리에 진입할 수 있다!
    w - w가 없으면 이 디렉토리 안에 파일을 생성할 수가 없다!

shell 특수문자

쉘 환경에서 사용자가 명령 입력시 편리한 입력을 도와주는 특수 문자 제공

특수 문자 별 기능

와일드 카드 문자
-> 임의의 문자열 의미. 모든 것 의미 -> ls -l sample*
디렉토리도 나옴!

? - 임의의 문자 의미, 한 문자를 의미, 무조건 한문자 적혀있어야함!

rm sample?? -> sample11, sample22같은 두자리 뒤에있는 파일들 다 삭제됨
삭제 할때 주의해서 써라!!!**

명령 연속 실행 방법

; - 명령을 연결해서 실행, pwd; ls -l; date -> 앞에가 잘못되도 뒤에 실행가능!

&& -> &&왼쪽 명렁어의 실행이 정상적으로 실행 되었을때(에러가 없다) 오른쪽 명령어가 실행

  • pipe - | (수직 바)
    특정명렁에 대한 수행결과를 기반으로 2차 가공 동작을 수행
    프로그램 실행 결과를 전달 받는 목적으로 사용 -> 프로세스 통신이라고 한다

    명령 1 | 명령 2 -> 명령 1의 실행결과를 | 를 통해 명령 2에 입력한다.

    cat /etc/services | less -> 파일내용 전체(cat)를 |(pipe)를 통해 명령을 전달하여 less동작

redirection - 출력 또는 입력 방향을 변경하는 목적으로 사용 -> 방향 전환용

표준 입출력 장치
	표준 입력장치 - stdin(키보드), 정수 0으로 식별
	표준 출력장치 - stdout(모니터), 정수1로 식별
	표준 에러장치 - stderr(모니터가 해당), 정수2로 식별 , 에러를 보여줌	

Linux shell은 표준 입력장치 (stdin,0)로 부터 입력받고 표준출력장치(stdout,1) 출력하며 에러는 stderr로 (stderr,2)로 보여줌!
			
			> : 왼쪽명령의 결과를 오른쪽 방향의 장치나 파일로 출력 방향 변경
				cat sample > result  ==> cat result 하면 파일로 결과값이 들어감!
				오른쪽에 파일명을 지정하면 항상 해당 파일을 새로 생성한다 (create)

			>> : 왼쪽 명령의 결과를  >> 오른쪽 방향의 장치나 파일로 출력 방향 변경 
				만약 같은 이름의 파일이 있다면 추가로 적는다 (append)
			
			장치 번호 >
				해당 장치로 출력될 내용에 대한 방향 전환
				명령 1 > 파일 - 표준 출력장치를 사용하는 출력결과에 대한 방향 전환 -> cat /etc/host 1 > result
				명령 2.> 파일 - 표준 에러 표시 장치를 사용하는 출력 결과에 대한 방향 전환 -> cat /etc/host 2 > result

			ex) ls > ls.out 2> ls.err => ls작동이 정상이면 ls.out 이고 오류면 ls.err에 저장
				cat ls.out으로 보면 정상작동 결과 들어있다1!
				cat ls.err는 오류 안났으면 안에 아무것도 안들어있다

				ls > ls.out 2> /dev/null =>. /dev/null - null장치를 의미하고 이 장치로 전달하면 그 내용은 그냥 소멸
				(화면에 에러메시지 출력도 안나오고 파일에 저장도 하기 싫을때, 정상 종료 됨) 
				cat sample 2> /dev/null
				cat sample > result 2>&1 는 명령전체 출력 결과 (에러든 정상 둘다 result에 저장)
				
				cat > 파일
					표준 입력 장치로 부터 입력받은 결과를 파일에 저장
					간단하게 파일 생성하는 방법
					입력 종료는 ctrl + D
				cat >> 파일
					이건 적으면 원래 있던 데이터 아래 붙여서 적어짐!

			장치 번호  <

			< : 오른쪽 내용을 왼쪽 방향으로 전환!!!!
			ex) cat < /etc/hosts  -> 저파일을 cat명령어로 실행해라!

			

프로세스 관리

프로그램 실행
	1. 실행할 프로그램 파일(바이너리 파일)을 메모리에 로드(load) -> I/O Device에서 Memory를 동작
    
	2. 로드된 프로그램 코드 중 프로그램 시작 점을 찾아서 동작 Memory -> CPU에 의한 동작
    
	3. 프로그램 동작 -> CPU <-> Memory 사이에서 계속 읽기 쓰기가 일어남! 
		3-1. 프로그램 코드 - 동작 절차
		3-2. 데이터 - 동작 절차 상 필요한 값, 처리 결과
        
	4. 프로그램이 종료점을 만나면 프로그램 종료 
		-> Memory에 있던 프로그램 코드는 삭제(사용을 안한다는 뜻)!

(Linux shell 명령을 입력 한다는 것은 프로그램 실행과 같은 의미를 갖는다!~)

Linux는 여러 프로그램을 동시에 실행 할 수 있다. Multi tasking(Multi Processing)

Linux 에서는 실행중인 프로그램을 프로세스(process)라고 하고 kernel 의 작업관리자에 의해서 관리되고 있다.

프로그램(program) - 보조 기억 장치에 저장된 실행 가능한 파일
프로세스(process) - 메모리상에서 동작 중인 프로그램

which ls 해서 보면 /usr/bin/ls 나오는데 ls라는 파일이 있는 곳임! 
ls 하고 작동 안 시키면 메모리에 올라가지 않는다!

하나의 cpu만 있어도 커널로 여러 프로그램 동시에 돌릴수가 있다
하나의 프로그램을 여러 cpu가 나누어서 하는것도 있음 -> 이거 개 빠름

셀프 피드백

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글