전공/리눅스

리눅스 파일 속성

vss121 2023. 1. 10. 21:55

ls -l로 속성 확인

-rw-r--r-- 1 ykkim ykkim  231 Dec 27 00:49 hosts

- 파일 종류
rw-r--r--  파일을 읽고 쓰고 실행할 수 있는 접근 권한
1 하드 링크의 개수
ykkim 파일 소유자의 로그인 ID
ykkim  파일 소유자의 그룹 이름
231 파일 크기 (바이트)
Dec 27 00:49 파일이 마지막으로 수정된 날짜, 시간
- 연도 없으면 올해 의미
hosts 파일명

 

*txt file은 실행파일이 아님

*호스트이름@컴퓨터이름

 

 

① 파일 종류

- 일반(정규) 파일
d 디렉터리 파일
l 심벌릭(소프트) 링크 파일 
b 블록 단위로 읽고 쓰는 블록 장치 파일
c 섹터 단위로 읽고 쓰는 문자(캐릭터) 장치 파일
p 파이프 파일 (프로세스 간 통신에 사용되는 특수 파일)
s 소켓 (네트워크 통신에 사용되는 특수 파일)

파일 종류 알려주는 명령어 : file

* 블록 장치 파일 vs 문자 장치 파일

더보기

https://mrrootable.tistory.com/38

- 리눅스에서는 모든 것을 파일로 관리

- 어떤 장치를 리눅스에 마운트하면 리눅스에서는 해당 장치를 표현하는 장치 파일로 장치관리가 됩니다.

이 장치파일들을 사용할 수 있게 해주는 것이 바로 장치 드라이버(Device Driver)

 

  • 블록 디바이스(Block Device)

보통 하드디스크나 CD/DVD, 플로피디스크 등의 장치를 말하며, 블록이나 섹터 등의 정해진 단위로 데이터를 전송합니다. I/O 전송속도가 높은 것이 특징입니다.

  • 캐릭터 디바이스(Character Device)

키보드, 마우스, 테이프, 모니터, 프린터 등의 장치가 있으며, byte 단위로 데이터를 전송합니다. I/O 전송속도가 다소 느릴 수도 있으나, 어플리케이션단에서 버퍼링을 제어하므로, 성능에 따라 차이가 있을 수 있습니다.

* 심볼릭 vs 하드링크

더보기

https://reakwon.tistory.com/142#:~:text=%EC%8B%AC%EB%B3%BC%EB%A6%AD%20%EB%A7%81%ED%81%AC%EA%B0%80%20%EC%9B%90%EB%B3%B8%20%ED%8C%8C%EC%9D%BC,%EB%B0%94%EB%9D%BC%EB%B3%B4%EB%8A%90%EB%83%90%EC%9D%98%20%EC%B0%A8%EC%9D%B4%EC%9E%85%EB%8B%88%EB%8B%A4.

다시

 

심볼릭 링크는 원본 파일과 별도의 inode 번호를 가짐. inode가 데이터블록을 가리키는데 거기에 원본파일? 가리킴 / 원본파일을 삭제하면 inode가 가리키는 데이터가 없음

 

 

② 접근 권한

파일의 소유자/그룹/기타 사용자

 

하드 링크의 개수 

- 하드 링크 : 하나의 파일에 대해 여러 개의 파일명을 가질 수 있도록 하는 기능

- 하드 링크와 소프트 링크의 파일 삭제 비교

ln hosts(파일명) hardlink(하드링크명) // 하드링크 생성
rm hosts // 원본 파일 제거
cat hardlink // 확인 가능
ln -s hosts(파일명) softlink(하드링크명) // 소프트링크 생성
rm hosts // 원본 파일 제거
cat softlink // 확인 불가능

 

④ 파일 소유자의 로그인 ID

- 리눅스에서 모든 파일은 소유자가 존재

- 시스템 관련 파일은 대부분 root 계정이 소유자

- 일반 파일은 그 파일을 생성한 사용자가 소유자

 

⑤ 파일 소유자의 그룹 이름

- 리눅스에서 사용자는 하나 이상의 그룹에 속함

- 해당 그룹명에 속한 사용자들에게 권한을 부여하여 파일 공유 가능

- 사용자가 속한 그룹은 시스템 관리자가 사용자를 등록할 때 결정, 사용자는 자신의 그룹을 변경x 시스템 관리자가 변경o

 

 

<그룹>

/etc/group :

- 그룹이 정의된 파일

- 시스템 관리자만 수정 가능

> 현재 로그인한 사용자가 속한 그룹을 알려줌

groups

> 지정한 사용자가 속한 그룹을 알려줌

groups 사용자

 

 

 

일반 접근 권한
권한 파일일 때 디렉토리일 때
r 파일의 읽기, 복사에 대한 권한 ls 명령 사용 가능
ls 명령의 옵션은 실행 권한 필요
w 파일의 수정, 이동, 삭제 권한
해당 디렉터리에 쓰기 권한 필요
파일의 생성 또는 삭제 가능
x 파일의 실행 권한
쉘스크립트나 실행 파일 등
cd 명령 사용 가능(해당 디렉토리로 이동 가능)
파일을 디렉터리로 이동/복사 가능

- 소유자/그룹/기타 사용자

 

chmod

- 파일/디렉토리의 접근 권한 변경

chmod [옵션] <권한모드> <파일명/디렉토리명>

- 옵션 :

  • -R : 하위 디렉토리까지 변경

1) 기호 모드 : 사용자 카테고리 문자 + 연산자 기호 + 접근 권한 문자

사용자 카테고리 문자 u (파일 소유자)
g (소유자가 속한 그룹)
o (소유자와 그룹 이외의 기타 사용자)
a (전체 사용자)
연산자 기호 + (권한 추가)
- (권한 제거)
= (권한 설정)
접근 권한 문자 r
w
x

chmod u -x test.txt

chmod g+x test.txt

chmod o+w test.txt

chmod g-rwx test.txt

chmod go-x test.txt 

chmod a+x test.txt 

chmod u+w,g-w test.txt  // 공백 제거

- 디렉토리 접근 권한 변경하기

chmod u-x dir

2) 숫자 모드 

3자리의 2진수를 8진수로 변환하여 표현

권한있음=1, 권한없음=0

ex) rw-는 110이고, 6으로 표시

chmod 444 test.txt // r--r--r--

chmod 777 test.txt // rwxrwxrwx

 

 

- 기본 접근 권한

일반파일 : rw-rw-r--

디렉토리 : rwxrwxr-x

- 최대 접근 권한

일반파일 : 666

디렉토리/실행파일 : 777

∵ default 마스크값이 002이기 때문에 

 

 

umask

- 기본 접근 권한 변경 / 출력

umask [옵션] [마스크값]

- 옵션 :

  • -S : 마스크 값을 문자로 보여줌
opensw@tux:~/ex$ umask 
0002
opensw@tux:~/ex$ umask -S // 마스크값임!!!!!!!
u=rwx,g=rwx,o=rx

 

* 마스크는 전반적으로 접근 권한을 수정한다고 생각하자. 지정x

 

> 마스크 값 : 생성 시 부여하지 않을 권한 지정

opensw@tux:~/ex$ umask 077 
opensw@tux:~/ex$ umask 
0077
opensw@tux:~/ex$ touch linux.txt // 일반 파일
opensw@tux:~/ex$ ls -l
-rw------- 1 opensw opensw   0 Sep 22 13:33 linux.txt

일반 파일의 최대권한은 666인데

110 110 110 (최대권한)

000 111 111 (마스크 값 077)

마스킹 결과는 110 000 000 (600)

 

 

 

특수 접근 권한

- umask 값 출력시 맨 앞자리 숫자

0 : 일반 접근 권한

1,2,4 : 특수 접근 권한

 

1. SetUID : 4

- 기본적으로 실행 권한이 있어야

- SetUID가 설정된 파일을 실행하면 (파일 실행한 사용자의 권한(others...)이 아닌) 파일 소유자의 권한이 적용

opensw@tux:~/ex$ chmod 4755 set
opensw@tux:~/ex$ ls -l 
total 0
-rwsr-xr-x 1 opensw opensw 0 Sep 22 14:28 set

소유자의  실행  권한에  's' 표시: 이 파일을 실행하면 항상 opensw 사용자의 권한으로 실행됨을 의미

 

Ex)

opensw@tux:~/ex$ which passwd // passwd 명령어의 위치
/usr/bin/passwd
opensw@tux:~/ex$ 
opensw@tux:~/ex$ ls -l /usr/bin/passwd 
-rwsr-xr-x 1 root root 68208 May 28 15:37 /usr/bin/passwd

/etc/shadow 파일(계정의 암호 저장)은 root 계정으로만 수정 가능

passwd (사용자 계정의 암호 변경) -> 본인의 권한이 아닌 root 권한으로 실행됨

 

 

2. SetGID : 2

- 기본적으로 실행 권한이 있어야

- SetUID가 설정된 파일을 실행하면 일시적으로 소유 그룹의 권한을 얻어 실행

opensw@tux:~/ex$ chmod 2755 set
opensw@tux:~/ex$ ls -l 
total 0
-rwxr-sr-x 1 opensw opensw 0 Sep 22 14:48 set 
opensw@tux:~/ex$

3. sticky bit : 1, 디렉토리

- sticky bit가 설정된 디렉토리에는 누구나 파일 생성이 가능

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

- 예시 /tmp/

- 사용자 other에 실행권한 있어야, t

opensw@tux:~/ex$ ls -ld /tmp/
drwxrwxrwt 16 root root 4096 Sep 22 13:17 /tmp/
opensw@tux:~/ex$


opensw@tux:~/ex$ mkdir temp
opensw@tux:~/ex$ chmod 1755 temp/
opensw@tux:~/ex$ ls -ld temp/
drwxr-xr-t 2 opensw opensw 4096 Sep 22 15:00 temp/

 

 

특수  권한  접근  설정  오류

- 특수  권한을  설정하는  파일이나  디렉터리는  모두  실행  권한이  있어야  함

- S, T

 


ls -ld ex/
디렉토리 속성 보이기

 

 

ls -l dir/ 할 경우 dir 안에 있는 파일들의 속성 확인함.


???

 cp etc/hosts . 와  cp /etc/hosts .   cp /etc/hosts/ 의 차이

다 다름

- 절대 경로 얘기

- hosts는 파일인 얘기

/etc/hosts: Not a directory

 

'전공 > 리눅스' 카테고리의 다른 글

리눅스 git  (0) 2023.01.12
리눅스 명령어  (0) 2023.01.11
리눅스 개요  (0) 2023.01.09
리눅스 프로그래밍 개발 환경  (0) 2023.01.09
CentOS + Linux Services  (0) 2023.01.06