본문 바로가기

공개

Linux::필수개념과 명령어-파일의 허가권 및 소유권,링크

먼저 

touch file.txt

파일 생성 후 cd 에서 

ls -l 

-rw-r--r-- 1 root root     0   5월   26  19:11 file.txt

- :파일의 유형 - 는 파일 d디렉터리를 말함

rw-r--r--: 파일 허가권 (rwx)

1: 링크 수 이 파일이 몇가지의 링크에 연결되어 있는지를 보여줌

root:파일 소유자 이름

root: 파일 소유그룹 이름

0:파일 크기 (아직 빈파일이기 때문에 당연히 크기는 0)

5월 26 19:11:생성 날짜

file.txt: 이름

 

파일 허가권'

rw-r--r--을 3개씩 끊어서 읽음

소유자 / 그룹 / 그 외 사용자

rw-     / r--    /  r--

r = read

w= write

x = execute(실행)

 

2진수를 활용하여 

rw-     / r--     / r--

420       400     400 

6          4         4

(최대 7)

 

파일과 디렉터리의 소유와 허가권

 

chmod 명령

-파일 허가권 변경 명령어

-chmod777sample.txt (모든 사용자에게 모든 허가권을 줌)

 

chown/chgrp 명령

-파일의 소유권을 바꾸는 명령어

-chown centos(소유자).centos(그룹) sample.txt(파일 이름) 

또는 

 chown centos sample.txt 및 chgrp centos sample.txt(사용자 이름 그룹 이름만 써도 된다)

 

실습)

touch test 

파일 만들고 

안에 내용과 어떤 경로를 불러와라

ls -l test 로 속성 확인 

-rw-r--r-- 1 root root 52  5월 26 19:36 test

whoami

자기 자신이 지금 무엇인지 말해줌

 

 

 

root를 알려줌 whoami는

그다음 실행을 시킨다 test를 

실행 시키는 방법은 ./test

하지만 허가권에 실행이 없다

즉 허가가 거부 된다 

그러면 

chmod 755 test로 사용자 : rwx, 그룹: r-x, 그외:r-x

로 실행 부분이 다 허가가 되었다 

다시 ./text를 해보면 

아까 불렀던 경로에 파일들과 써놨던 글씨들이 보일 것이다.

 

이번에는 chmod 숫자를 사용하지 않고 허가권을 줘 보겠다

chmod u+x test2 // test2에 user부분에 실행권을 준다. user+execute로 

ls -l를 해보면 사용자 부분에 rwx로 되어있다.

user = u 

group = g

other = o(0아님) 오 

한번에 전부다 더할 수도 있음 

chmod ugo + x test2 // user,group,other에 실행 권한을 준다 

chmod ugo - x test2 //  user,group,other에 실행 권한을 빼준다

 

소유권

 

소유자를 바꾸는 방법 chown 

소유자 구룹을 바꾸는 방법 chgrp

 

실습 

ls -l test2 

소유권을 확인 

소유자 root 소유자 구룹 root

chown centos test2  소유자를 root->centos로 바꾼다

chgrp centos test2 소유  그룹을 root -> centos로 바꾼다

 

그렇다면 이제 centos로 소유자가 바뀌었으니까 centos로 가서 확인을 해보자 

가는 방법은 터미널에 su - centos 라고 치면 된다 만약 본인의 현재 위치가 root라면 로그인 없이도 바로 centos에 들어갈 수 있다

 

whoami로 본인이 무엇인지 알아봄 

centos라는 결과가 나온다

그 다음

ls -l  /root(/root란 centos 소유권을 가진 파일이 root 아래 있기 때문에 /root아래의 있는 centos 소유권을 가진파일의 속성을 검색하려고 ls -l를 한 것이다 즉 우리가 알아보려고 하는 것은 root에 있는 /root 아래있는 centos소유권을 가진 파일을 centos에서 불러오겠다는 이야기다)

ls -ld 디렉토리의 내용을 보는 명령어

허가권에 소유자와 그룹 소유자는 x로 실행이 가능하겠지만 other은 실행이 불가능하다.

root 사용자가 워낙 중요하다 보니까 다른 것들이 접근하지 못하게 해놨다

그냥 그다음으로 

 

링크 

-파일 링크에는 하드 링크와 심볼릭 링크 두 가지가 있다.

심볼릭 링크는 바로가기 와 비슷하여 설명하기 쉬운데 하드 링크는 윈도우즈에는 없는 개념이라 어려울 수 있다.

 

-하드 링크르 생성하면 "하드링크파일"만 하나 생성되며 같은 inode1을 사용
 (명령: #ln링크대상파일이름 링크파일이름)

 

-심볼릭 링크를 생성하면 새로운 inode2를 만들고, 데이터는 원본 파일을 연결하는 효과

  (명령: #ln -s 맃크대상파일이름 링크파일이름)

 

 

하드링큰는 원본파일과 같은 inode1를 가르키고 심볼릭은 inode2를 가르키고 다시 원본파일을 가르킨다 

예제)

mkdir linktest //디렉터리 생성 

cd linktest / (linktest디렉터리에 들어감)

ls //아무것도 없는 것을 확인함

vi basefile // vi 로 안에 원본 파일입니다 라고 적은 후에 :wq로 종류함

ls -il //inode까지 보여주는 ls -il

그다음에 

(L)ln basefile hardlink// hardlink 을 만들어줌 ln은 하드링크를 만듬 basefile과 같은 위치를 가르키는 hardlink 를 만듬

ln -s basefile sotflink // softflink 를 만들어줌 

ln -s 와  ln으로 하드 링크와 심볼릭 링크를 만들었다 그렇다면 만약 원본파일을 다른 곳으로 움직이면 어떻게  될까(삭제와도 같은 의미를 가지고 있다)

하들 링크는 그대로 있지만 

심볼릭 링크는 깨진다 

그 이유는 심볼릭 링크는 원본파일을 가르켜야 심볼링크인데 더 이상 가르킬 원본파일이 없기 때문이다

 

참고자료