리눅스는 파일은 크게 3가지의 권한으로 이루어져 있다.

소유자 권한, 그룹 권한, 게스트 권한, 그리고 각각 읽기, 쓰기, 실행 권한이 있다.


이렇게 말하면 감이 안오니 직접 리눅스에서 눈으로 살펴보도록 하자.

확인하는 방법은 ls -al을 사용하면 된다.



간단하기 file1을보면

-rw-rw-r-- 1 powerprove powerprove 14 4월 ...   file1 이런식으로 되어 있을 것이다.

하나씩 살펴보면


-rw-rw-r--   : 이것이 파일 권한으로 뒤에서 자세히 다루자

                1   : 디렉토리의 링크 수를 나타낸다.

powerprove : 파일의 소유자를 나타낸다.

powerprove : 파일의 소유 그룹을 나타낸다.

                14 : 파일의 크기를 나타낸다.

4월 9 22:39  : 파일이 마지막으로 수정된 날짜를 나타낸다.

            file1  : 파일의 이름을 나타낸다.


우리는 

-rw-rw-r--을 자세히 보면된다.

이것은 크게 4가지로 쪼갤수 있다.

-     rw-       rw-     r--

첫번재는 파일이 디렉토리인지 아닌지 검사한다. 만약, 디렉토리라면 d가 적혀있다.

그리고 두번째가 소유자 권한

세번째가 그룹 권한

네번째가 게스트 권한이다.


r은 읽기권한

w은 쓰기권한

그리고 마지막인 x는 실행권한이다.


그러므로 file1은 소유자, 그룹에게 읽기권한과 쓰기권한이 있고 게스트사용자에겐 읽기권한만 있다는 것을 알 수 있다.

이것은 8진수로 나타낸다.

왜냐면 권한이 있다면 1, 없으면 0으로 나타내기 때문이다.


rwx    rw-

1 1 1    110

이런식으로 나타낼수 있다. 만약 읽기, 쓰기, 실행권한 전부다 있다면 숫자7로 나타낼수 있을 것이다.


우리는 이것을 이용하여  파일 권한을 바꿀수 있는데 chomd라는 명령어를 사용하면 된다.


사용법은

chmod [권한] [파일이름]으로 나타낸다.

권한은 각 권한들을 8진수로 나타낸 숫자를 적으면된다.

시험예시로 chmod 777을 입력해 보았다.



file1이 rwxrwxrwx로 바뀐것을 볼 수 있다. 

만약 소유자에게만 쓰기 권한을 주고 싶으면 chmod 755를 입력하면 될 것이다.


만약 파일의 소유자를 변경시키고 싶으면 어떻게 할까?

파일의 소유자를 변경시키는 명령어 또한 있다.

chown [소유자권한]:[그룹권한]  [파일이름] 이렇게하면 된다.


file1의 소유자가 root로 바뀐것을 볼 수있다.

만약 파일의 권한을 700(루트만 읽기, 쓰기, 실행)을 주면 어떻게 될까?



the -end


'system > level1' 카테고리의 다른 글

컴파일 과정(LINUX GCC)  (0) 2017.04.10
linux 정적 컴파일 동적 컴파일  (0) 2017.04.09
리눅스 기초(8086 메모리 구조)  (0) 2017.04.06
리눅스 기초(리눅스 디렉토리)  (0) 2017.04.04
리눅스 기초(리눅스 구조)  (0) 2017.04.04
블로그 이미지

powerprove

,

커널은 시스템이 부팅 될 때 커널을 메모리에 올린다.

32bit 시스템에서는 한번에 처리할수 있는 양이 32bit이다.


문제는 8086에서 세그멘테이션 기법과 페이징 기법중 무엇을 쓰냐가 헷갈렸는데

intel 8086에서는 둘다 사용한다.


세그멘테이션 기법과 페이징 기법의 가장 큰 차이는 

세그멘테이션 기법은 서로 크기가 다른 세그멘트를 분리한 후 물리 주소를 논리주소로 변환한다.

하지만 페이징 기법은 가상된 메모리를 고정된 크기로 나누어 메모리를 관리하는 것이다.


각각의 세그먼트들은 Code segment, Stack segment, Data segment로 나누어 진다. 


프로세스 메모리 구조를 자세히 보면



프로세스 메모리를 보면 kernel이 0xffffffff에서부터 0xc0000000로 메핑된다. 

code영역은 프로그램의 코드가 담겨져 있고 data영역은 rodata, bss, data로 나누어 진다.

rodata는 read only data로 읽기 권한만 가지고 있는 부분이다.

data부분은 전역변수 중 초기화 된 값을 가질 때 사용되고

bss부분은 전역변수 중 초기화 안된 값을 가질 때 사용된다.


지역변수는 stack에 들어간다. push and pop을 이용해서 데이터를 저장하고 빼낸다. stack은 위에서부터 밑으로 쓰고 heap(동적할당)부분은 밑에서부터 아래로 쓴다.

heap영역이 확장 될때는 brk라는 시스템 콜을 이용해서 확장 시킨다.

'system > level1' 카테고리의 다른 글

컴파일 과정(LINUX GCC)  (0) 2017.04.10
linux 정적 컴파일 동적 컴파일  (0) 2017.04.09
리눅스 파일 권한 설정  (0) 2017.04.09
리눅스 기초(리눅스 디렉토리)  (0) 2017.04.04
리눅스 기초(리눅스 구조)  (0) 2017.04.04
블로그 이미지

powerprove

,

힘들다

잡글 2017. 4. 6. 00:40

힘들다

'잡글' 카테고리의 다른 글

.  (0) 2017.04.28
해야할일  (0) 2017.04.13
codegate  (0) 2017.04.13
아 일단 라이트업부터 올려야겠다.  (0) 2017.01.26
[1/25] 블로그 시작!!  (0) 2017.01.25
블로그 이미지

powerprove

,