본문 바로가기
리눅스

리눅스 수업 5차시

by 뭔가해보겠습니다 2024. 3. 9.

 

 

파일의 종류
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