파일 속성 관리

 

 

 

 

 

-파일의 속성 정보 변경-

 

 

 

 

1. chown CMD

# chown -R user01:user01 file1

(시험에는 많이 나오나 실무에서는 잘 안 씀)

 

 

 

 

2. chgrp CMD

: 잘 안 쓰인다

 

 

 

 

3. chmod CMD (퍼미션 변경 방법)

심벌릭 모드 (symbolic mode) 문자 모드

옥탈 모드 (Octal mode) 숫자/수치 모드

 

: 둘 중 옥탈모드가 일반적으로 많이 사용됨.

심벌릭은 기존의 퍼미션을 알아야 한다는 단점.

옥탈(숫자모드식)은 기존의 퍼미션과 무관 / 매번 새로 주는 방식

 

-rw-r--r--1 root root 0 Feb 14 11:20 file1

-rwxr--r--1 root root 0 Feb 14 11:20 file1

 

심벌릭, 옥탈 사용 예)

# chmod u+x file1

# chmod 744 file

 

 

 

 

 

 

-퍼미션 정확한 의미-

 

 

파일과 디렉터리의

'퍼미션' 의미가 다르다.

 

 

파일 : r(read), w(write), x(excute)

디렉터리 : r ( ls CMD /ls – al로 안의 목록들을 볼 수 있다), w(생성/삭제), x(cd CMD)

 

 

[중요]

디렉터리 퍼미션에는x 권한 반드시필요하다.

 

--x

-wx

r-x

rwx

 

이런 식으로

맨 마지막 x 권한이 없으면

아무것도 할 수 없다.

 

 

 

 

 

 

 

- 퍼미션 적용 순서-

 

UID를 비교하고 매칭되는 게 없으면 GID를 비교, 없으면

other permission을 비교한다.

 

 

 

 

 

1. umask CMD

파일과 폴더 생성 시 주어지는

default permission(002, 022, 027)

을 확인 및 바꿀 때 사용하는 명령어

 

 

관리자 ) /etc/bashrc : 모든 사용자에게 적용

사용자) /$HOME/.bashrc : 스스로만 적용

 

기본적으로 위 값을 뺀

디렉터리는 퍼미션 값은 755

파일은 644

가 기본값

 

 

 

 

 

 

- 특수 퍼미션 -

SetUID/SetGID/Sticky bit 의미

 

 

 

1. SetUID/SetGID

 

 

$ passwd 일반 사용자가

패스워드 명령어를 사용하여

자신의 암호를 바꿀 수 있는가? yes

 

 

내부적으로 봤을 때

etc/shadow의 암호화된 필드를 바꾸는 것,

다시 말해 해당 파일에 대해

$ ls –l /etc/shadow의 퍼미션을 보는 것.

 

 

$ ls –l /usr/bin/passwd

-rwsr-xr-x. 1 root root 28K 4월 1 12:57 /usr/bin/passwd*

passwd의 명령어는 해당 프로그램을 실행하는 동안에

root 권한으로 UID가 소유자 권한으로 임시적, 강제적으로 변경된다.

프로그램 이 끝나면 원래대로 돌아간다.

 

이처럼 일반 사용자가 자신의 권한을 넘어서

상위 권리자 권한을 사용해야 할 때가 있는데

그때 사용하는 특수 키워드들이 있다.

 

 

$ which su

$ ls –l /usr/bin/su

 

$ which sudo

$ ls –l /usr/bin/sudo

 

 

 

 

 

[참고]

# ls -ld /tmp

drwxrwxrwt. 78 root root 8.0K 8월 28 10:11 /tmp/

t로 끝나는 폴더는 게시판 성질의 파일,

rwx의 경우 모든 권한을 사용할 수 있는 반면

t로 끝나면 제한적으로 사용 가능

 

* 보통 악성/공격 파일 등을 tmp 폴더 안에 생성을 해 둔다.

 

 

 

 

2. SetUID/SetGID/Sticly bit 설정

Sticky는 디렉터리에만 적용 가능,

다른 사람 것 볼 수는 있지만 지울 수는 없음

# chmod 4755 file1

# chmod 2755 file1

# chmod 1777 file1

 

 

 

 

3. SetUID/SetGID/Sticly bit 관리

* 검색 (setuid 나 setgid 검색 명령어)

# find / \( -perm -4000 -o -perm -2000 \) -type f

 

 

* 목록화 카운터

# find / \( -perm -4000 -o -perm -2000 \) -type f > setuid.list

# find / \( -perm -4000 -o -perm -2000 \) -type f | wc -ㅣ > setuid.list

 

 

*관리

# chmod 755 /usr/bin/passwd

 

[참고] 0 day attack(당일), 1day attack(어제)

: 버그가 생성된 시점부터 패치가 나온 날까지 사이의 시점을 뜻한다.

: 패치가 안된 곳을 노려서 해킹

 

 

찾아 지우는 법

# find /home -perm -4000 -type f -exec rm { } \;

: 스케줄러에 등록해 두면 누군가 생성하는 순간 지워버리는 명령을 수행함!

 

 

 

 

[참고] 공격 구문 (C 언어) 기본 모델 형태

# vi attack.c

---------------------------------

main( ) {

setuid(0); setreuid(0, 0);

setgid(0); setregid(0, 0);

system("/bin/bash");

}

-------------------------------

# gcc -o attack attack.c

# chmod 4755 attack

 

 

 

 

 


 

 

 

 

Visual Editor

 

 

 

1. VI 편집기 환경 설정 ($HOME/.vimrc, $HOME/.exrc)

 

# vi ~/.vimrc

-------------------------------

set number (set nu)

set autoindent (set ai)

set tapstop=4 (set ts=4)

--------------------------------

 

 

 


 

 

 

사용자와 통신할 때 사용하는 명령어

 

 

 

 

1. 메일 보내기

mail/mailx CMD

 

# mail -s "[ ok ] linux211" admin@example.com < report.txt

 

 

 

 

 

2. wall

 

공지 뿌릴 때 씀.

# wall < /etc/MESS/work.txt

 

 

*스케줄러 등록하는 법

# crontab -e

분 시 일 월 요일 CMD

20 10-18 * * 1-5 wall< /etc/MESS/CoffeeTime.txt

 

10:20

11:20

12:20

13:20

14:20

15:20

16:20

17:20

18:20

 

 

 

 


 

 

 

 

관리자가 알아두면 유용한 명령어

 

 

 

 

1. cmp/diff CMD

두 개 파일을 비교할 때 쓰는 명령어

 

 

[실무예] 백업 설정 파일과 현재 설정 파일 비교

# diff httpd.conf httpd.conf.old

 

 

[실무예] Migration 이관작업

# /was1/* -> /was2/*

 

이관작업 후 확인 커맨드

# find /was1 | wc -l

# find /was2 | wc -l

 

# diff --recursive /was1 /was2

 

 

 

 

 

 

2. sort CMD

# 명령어의 출력 결과를 정렬하여 보는 방식

# CMD | sort -k 3

# CMD | sort -k 3 -r

 

[실무예]

# df -k 남아있는 용량을 보여줌

# du -sk /var

# cd /var ; du -sk * | sort -nr | more 용량 큰 순서대로 보고 싶을 때

 

 

 

 

 

3. file CMD

파일의 타입을 결정할 때 쓰는 커맨드

# file *

 

분석할 때 많이 사용된다.

 

 

 

[실무]

이 기종(리눅스 -윈도우)간

파일이 오가면 확장자가 사라지는 문제가 생긴다.

 

이때 file이라는 명령어로 확인을 해 준다.

 

 

 

[실습] 확장자가 변경되는 예 실습

# cd /test

# rm -rf /test/*

 

# cp -p /etc/passwd file1

# cp -p file1 file2

# cp -p file1 file3

# ls -lh

 

# zip file.zip file1 file2 file3

# ls -lh

 

# unzip -l file.zip

# rm -f file?

 

(인터넷) file.zip---- 다운로드 ---->file(?)

 

# mv file.zip file

 

 

(파일 받기(다운로드) - 파일 사용자)

# mv file.zip file

 

# file file

# mv file file.zip

# unzip file.zip (안에 내용을 확인할 때)

# ls -lh

 

 

 

 

 


 

 

 

 

 

검색 명령어

 

 

 

 

1. grep CMD

파일의 타입을 결정할 때 쓰는 커맨드

# grep OPTIONS PATTERN file1

OPTIONS : -l -r -n -v -i -w --color

PATTERN : * . ^root root$ [abc]

 

# CMD | grep sshd

# cat /etq/passwd | grep user01

# rpm -qa | grep httpd

# systemctl list-unit-files | grep ssh

# netstat -an | grep :22

 

# systemctl restart sshd

 

 

 

 

-실 사용 예-

 

# cat /etc/passwd | grep root

사용자의 정보를 확인하거나

사용자가 있는지 유무를 확인할 때

 

 

# grep root /etc/passwd (# cat /etc/passwd | grep root)

 

# CMD | grep root

# cat /etc/passwd | grep root

# rpm -qa | grep talk 전체 패키지 리스트

# ps -ef | grep rsyslogd 프로세서의 리스트 중 해당 파일이 있는지

# systemctl list-unit-files | grep ssh

# netstat -an | grep :22

 

 

 

-옵션 사용법-

 

"# grep OPTIONSPATTERN file1"

# grep -lroot /etc/hosts /etc/passwd /etc/group /* 여러 파일 중 검색 문자열 존재 파일 출력 */

root가 들어있는 list file을 찾아달라는 뜻이며 – l은 list file을 뜻한다 (파일의 이름만 보여줌)

# grep –r ens33 /etc/* (해당 폴더 아래 있는 원하는 검색어를 다 찾는다 /

파일의 이름과 내용을 모두 보여줌)

 

# grep -n root /etc/group /* -n: number line, 파일에서 root 문자열을 검색하고 라인 번호도 같이 출력 */

# grep -vroot /etc/passwd /* -v: inverse, except, 파일에서 검색 문자열을 제외하고 나머지 출력 */

# grep -iroot /etc/passwd /* -i: ignore case, 파일에서 검색 문자열의 대소문자를 구분하지 않음 */

# grep -wroot file1 /* -w: word */

# grep --colorroot /etc/passwd ( # alias grep / # alias egrep / centOS 7버전은 자동 세팅, 6이하는 직접

세팅해 줘야 한다)

 

 

다 외워야 함

 

 

 

 

-패턴 사용법-

 

* # grep 'ro*t' /etc/passwd 모든 내용

. # grep 'no...y' /etc/passwd 한 글자의 모든 의미

^root # grep '^root' /etc/passwd 라인의 처음

root$ # grep 'root$' /etc/group 뒤에 써야 하고 어떤 라인의 끝부분

[abc] # grep 'user0[123]' /etc/passwd

 

 

 

[참고] pcre (perl compatable regular expression) 변형 => grep RE

뭘 찾을 때 쓰는 규칙

 

728x90

+ Recent posts