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 하드링크
다시
심볼릭 링크는 원본 파일과 별도의 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 |