본문 바로가기
Linux

[Linux]파일 시스템 접근 권한

by oncerun 2020. 9. 10.
반응형

일반 사용자 계정으로 리눅스 시스템을 이용하면 Permission denied라는 메시지를 받을 수 있다.

이것은 대상 파일 혹은 디렉터리에 대한 접근 이 허용되지 않아서 발생하는 오류 메시지이다.

리눅스에서 사용자는 자신의 파일 또는 디렉터리 중에서 다른 사용자가 어느 수준으로 접근이 가능하게 할 것인지를 정하여야 한다.

 

ls명령어를 통해 rwxrwx 같은 9개의 비트를 본 적이 있을 것이다.

 

여기서 처음 3개의 비트에서 r은 소유자의 읽기, w는 소유자의 쓰기, x는 소유자의 실행 권한이 있다는 의미이다.

그다음 3개의 비트는 그룹의 구성원에게 주는 건한이며

마지막의 3개의 비트는 그 외 모두에게 주는 권한이다.

권한을 주지 않는 경우는 -로 표시된다.

 

읽기 쓰기는 알겠지만 실행 권한에 대해서 궁금할 수 있어 따로 설명한다.

여기서 실행 권한은 파일과 디렉터리로 나누어지는데

파일 경우 파일을 실행하는 경우이고

디렉터리 경우 디렉터리 또는 서브 디렉터리로 cd명령을 사용해 이용할 수 있고 디렉터리에서 프로그램을 실행시킬 수 있다. 또 파일의 메타데이터에 접근할 수 있다.

 

 

접근 권한 변경 : chmod

 

파일의 소유자는 파일의 접근권한을 변경하기 위하여 chmod 명령을 사용할 수 있다.

 

chmod [options] mode files 

 

mode는 접근권한을 표시하는 것인데 세 자리의 8진수를 사용하여 지정하는 8진수 모드 방법이 있다.

 

권한을 부여할 때 읽기는 4 쓰기는 2 실행은 1로 하여 각 부류별로 8진수를 지정하는 방법이다.

예를 들어 chmod 755 file이라면

소유자는 3개의 권한

그룹 참여자는 읽기, 실행 권한

그 외 모든 사용자도 읽기, 실행 권한을 가지고 있다는 것이다.

 

재귀적으로 해당 디렉터리의 서브 디렉터리와 파일에 똑같이 적용하기 위해선 -R옵션을 사용한다.

 

초기 접근권한의 설정 : umask

 

umask 명령은 파일이나 디렉터리에 지정되는 접근권한의 기본값을 정하는 명령이다.

 

 

단순히 umask명령을 이용하면 현재 지정되어 있는 접근권한의 기본값을 알 수 있다.

umask 값으로부터 현재 지정되어 있는 접근권한의 기본값을 계산하는 방법은 다음과 같다

파일의 경우 666에서 에서 현재 umask값을 빼면 된다.

디렉터리의 경우 777에서 현자 umask값을 빼면 된다.

 

예를 들어 umask의 값이 0002라면 

umask 값을 022로 변경하고 파일과 디렉터리를 만든다면

 파일의 권한은 666-022 = 644 ->  rw-r--r--

 디렉터리의 권한은 777-022 =755 -> rwx-r-x-r-x

 

 

파일의 소유자 변경 : chown

 

일반 사용자는 할 수 없지만 root사용자는 파일이나 디렉터리의 소유자를 다른 계정으로 바꿀 수 있다.

 

chown [options] newowner files

 

newowner 같은 경우는 UID,/etc/passwd 파일에 나오는 사용자 계정이 되어야 한다.

이 부분은 소유자:그룹 또는 소유자. 그룹 형태로 작성할 수 있는데 소유자가 생략되면 소유자의 변경이 없는 것이며 그룹이 생략되면 소유주와 같은 그룹으로 정해진다.

 

파일의 링크 만들기 : ln

 

ln은 파일을 다른 이름으로 사용할 수 있게 링크를 만드는 명령이다.

 

-하드 링크는 하나의 파일에 다름 이름을 부여하는 것이다. 

-심벌릭 링크는 독립적인 파일이며 윈도의 바로가기와 같이 다른 파일을 가리키는 역할을 하는 파일이다.

-디렉터리의 경우 하드 링크를 만들 수 없고 심벌릭 링크만 생성 가능하다.

 

ln options sourcename [destname]

ln options sourcenames destdirectory

 

ls -li로 inode의 수를 알 수 있다

 옵션 -s를 붙이면 심벌릭 링크가 만들어진다.

 

반응형

'Linux' 카테고리의 다른 글

셸 변수  (0) 2020.11.16
명령의 연결과 확장  (0) 2020.11.16
리눅스 표준 디렉터리  (0) 2020.11.12
[Linux]파일의 내용 확인  (0) 2020.09.10
[Linux]파일 시스템 탐색  (0) 2020.09.10

댓글