파일의 종류
d디렉터리, -일반파일, l심볼릭링크, b블럭장치파일(하드디스크, usb 등), c문자장치파일(character device, 키보드, 프린터기 등), p파이프파일, s소켓파일, ?접근권한이 없을때
brw-rw----. 1 root disk 8, 0 3월 9 09:28 /dev/sda => 블럭장치b ( 첫 번째 SCSI 드라이브 )
crw-rw-rw-. 1 root tty 5, 0 3월 9 09:28 /dev/tty => 터미널c
srw-rw-rw-. 1 root root 0 3월 9 09:28 /dev/log => 소켓s
ls의 -F 옵션 : 파일에 따라 문자열이 붙는다.
-rwxr-xr-x. 1 root root 117608 8월 20 2019 /bin/ls* => 일반파일이면서 실행파일일때 뒤에 *가 붙는다.
drwxrwxr-x. 2 linuxadmin linuxadmin 21 3월 9 09:38 a/ => 디렉터리는 / 가 붙음
prw-------. 1 root root 0 3월 9 09:28 /run/systemd/initctl/fifo| => 파이프 |
srw-rw-rw-. 1 root root 0 3월 9 09:28 /dev/log= => 소켓파일 =
s1.txt@ => 심볼릭링크 @ (단, ls -lF에선 안나오고 ls -F에서만 나옴)
find
검색할 때 쓰는 명령어 (default path는 현재 위치)
옵션없이 find만 쓰면 현재 디렉터리 밑으로 모든 파일을 출력함
옵션
-type (find path... ) 파일타입으로 찾기
: ex find /etc -type f -ls => /etc 디렉터리에서 정규파일f만 검색한다
(그 외 d디렉터리, l심볼릭, c문자장치, b블럭장치, s소켓장치, p파이프파일 ...)
-user (유저 id로 찾기)
: ex find / -user user1 -ls 2> /dev/null ( 2> /dev/null 에러가 날 경우 출력하지 않는다. 쓰레기통에 넣는다.)
-inum (i-node number로 찾기)
: ex find /usr/sbin/ -inum 432055 -ls
-perm (퍼미션으로 찾기)
: ex find / -perm 700 -ls
ex find / -perm -4000 -type f -ls (퍼미션이 4000이상으로 설정된 정규파일 찾기)
복합사용
: ex find / -perm 700 -type d -ls (-ls는 제일 마지막에 넣는다)
-user, -uid, -nouser, -nouid
: ex find / -uid 1001 -type f -ls
find / -user user1 -type f -ls
-group
: ex find /dev -group disk -ls (/dev 디렉터리 내에서 group이 disk로 잡힌 파일 검색)
-size (1M, 1k, 1G ... )
: ex find / -size 10M -type f -ls 2> /dev/null (10M 크기)
find / -size -10M -type f -ls 2> /dev/null (10M 보다 작은 파일)
find / -size +10M -type f -ls 2> /dev/null (10M 보다 큰 파일)
find / -size +10M -exec ls -lh {} \; => find / -size +10M의 결과를 ls -lh 적용하여 {}에 넣어 출력
(exec : 외부명령어. 조건을 가지고 찾은 파일들을 대상으로 다음 명령어를 실행.
형식 : -exec 명령어 [옵션] {} \;
+ ls -lh 에서 -h 옵션을 크기를 표시해주는 옵션이다. 128MB 처럼.)
-mtime
: ex find -mtime 0 => 경로(디폴트는 현재위치)에서 오늘 수정된 파일들 출력
ex find -mtime 7 => 경로(디폴트는 현재위치)에서 최근 7일동안 수정된 파일들 출력
ex find -mtime -7 => 경로(디폴트는 현재위치)에서 7일 이전에 수정된 파일들 출력
-atime, -ctime (위의 mtime과 같음)
-name
: ex find -name hosts
find의 옵션들
33574991 -rwxrwxrwx. 1 root root 1427 2월 24 11:07 test.txt
inum |type | |user |group |size |mtime |name
|perm |uid |gid |atime
|nouser |nogroup |ctime
|nogid |mmin, amin, cmin
/etc/passwd 사용자 정보가 저장된 파일에서 user명uid gid를 확인할 수 있다.
user1:x:1001:1001::/home/user1:/bin/bash
| | |
user uid gid
짤막실습
1. root 계정에서 user1 계정을 userdel로 삭제한다
2. find / -nouser -type f -ls 실행
3. 삭제된 user1로 작성된 파일들이 검색된다
짤막지식
mke2fs : 포맷 명령어
파일시스템 종류
ext -> ext2 -> ext3 (centos 5) -> ext4 (centos 6) -> xfs(centos 7)
----버전이 낮아 쓸일없음-----|
블록크기 확인
1. root 계정에서 useradd user1 (이후 passwd 비밀번호 변경)
2. user1 계정에서 dd if=/dev/zero of=testfile.dd bs=4097 count=1 명령어 실행 (dd는 블록단위로 파일을 복사하거나 생성할 수 있는 명령어. /dev/zero 파일을 4097크기의 파일로 1개 만큼 만듦 = 출력결과가 testfile.dd )
3. ll -ls 하면 (-s 블록크기 표시)
8 -rw-r--r--. 1 root root 4097 3월 9 10:16 testfile.dd
8부분이 블록에 해당하며, 1블록이 4096이므로 2블록(8)로 표기되는 것을 확인
허가권(퍼미션) : 파일, 디렉터리마다의 접근 권한
-rw-r--r--. 1 root root 948 3월 9 11:08 /etc/passwd
| | └소유자 └ 그룹
| └ ACL 확장 퍼미션 setfacl(권한부여), getfacl(권한조회)
└ 퍼미션 chomd
umask 명령어로 현재 기본 퍼미션에서 제거할 권한을 확인할 수 있다.
-rwxrwxrwx. 1 root root
1. 파일유형
2. user 소유자 권한
3. group 그룹 권한
4. other 소유자와 그룹이 아닌 다른 모든 사용자 권한
5. 특수권한 (setuid, setgid, stickybiT) . 일 경우 설정이 되어있지 않다는 뜻
*setuid가 설정될 경우, user 권한이 --x가 아니라 --s로 표기된다. 8진수 4000 ex rwxrwxrwx는 777인데, rwsrwxrwx일경우 4777이 됨 find 로 찾을 경우 find 경로 -perm 4777 -ls 등으로 활용할 수 있다.
*setgid가 설정될 경우, group 권한이 --x가 아니라 --s로 표기된다. 8진수 2000
*stickybiT가 설정될 경우, user 권한이 --x가 아니라 --t로 표기된다. 8진수 1000
짤막지식
스크립트 : x권한이 없어도 실행가능
바이너리 : x권한이 있어야 실행가능
chmod
파일, 디렉터리의 권한을 변경 할 수 있는 명령어
1. 심볼릭 모드 : 문자 augorwxst,=-+ 를 사용하여 설정
* r:4 w:2 x:1
root권한으로 chmod o-rx /usr/bin/cat 실행
=> cat 명령어에 대한 others 권한에서 읽기, 쓰기 권한을 빼버림
=> 일반사용자 user2는 cat 명령어에 대해 execute(x) 권한이 없으므로 허가 거부됨
r(4) | w(2) | x(1) | |
파일 | 파일 내용 조회 | 내용을 수정 | 파일 실행 |
디렉터리 | 파일 목록 조회 | 디렉터리내 파일을 생성/삭제 | 디렉터리 탐색(이동) |
2. octal 8진수 모드 : 숫자를 이용해서 변경 (0~7)
ex chmod 666 a.txt
[user2@localhost ~]$ ls -ld /root
dr-xr-x---. 4 root root 228 3월 9 12:50 /root
[user2@localhost ~]$ ls /root
ls: cannot open directory /root: 허가 거부
=> 허가거부의 이유 : user2 사용자가 /root 에 대해 x 권한을 가지고 있지 않기 때문
=> 디렉터리에 파일을 생성/삭제하려면 반드시 wx가 있어야 한다 둘 중 하나라도 없으면 생성/삭제불가
** root(관리자) 계정의 경우, 파일의 실행권한(x)에는 영향을 받지만 그 외의 권한에는 영향을 받지 않는다.
umask 022 (일반사용자)
=>2진수 000 010 010
=> 비트 NOT 111 101 101
=> 파일최고권한666 110 110 110 둘을 & 연산
기본권한 : 110 100 100 => 644
=> 디렉토리최고권한777 111 111 111 둘을 & 연산
기본권한 : 111 101 101 => 755
특수권한
파일 | 디렉터리 | |
Set-UID | 실행 중에 소유자의 권한으로 실행 | X |
Set-GID | 실행 중에 그룹의 권한으로 실행 | 파일 생성시 그룹 권한으로 생성 |
Sticky-Bit | X | 공용 디렉터리에서 사용하는 권한으로 w 권한이 있을 때 파일을 생성할 수 있다. 단, 삭제는 자신이 생성한 파일만 가능. |
* -rwSr--r--. 1 root root 9 3월 9 13:20 test.sh
=> x권한이 없으면 대문자S로 표기, 있으면 소문자s로 표기됨
=> 이 때는 소유자인 root여도 실행할 수 없다. x권한이 있어야 한다.
* 일반유저 user1은 암호화된 비밀번호가 있는 /etc/shadow에 접근할 권한이 없다
그러나 passwd를 이용해 패스워드를 변경할 수 있다.
사유
ll /usr/bin/passwd => -rwsr-xr-x. 1 root root 27856 4월 1 2020 /usr/bin/passwd
Set-UID권한과 others의 x권한이 들어가 있다. 일반 사용자는 /usr/bin/passwd의 root권한으로 우회하여 변경하게 된다.
'리눅스' 카테고리의 다른 글
리눅스 수업 7차시 (0) | 2024.03.16 |
---|---|
리눅스 수업 6차시 (셀프실습) (0) | 2024.03.14 |
리눅스 수업 4차시 (0) | 2024.03.03 |
리눅스 수업 3차시 (0) | 2024.03.02 |
리눅스 centos7 실습 (0) | 2024.02.28 |