카테고리 없음

Linux 파일관련 명령및 권한 명령

멋진꿈 2012. 10. 3. 22:25

*파일 관리 명령어

~리눅스에서 파일의 확장자는 무의미하며 소유권과 허가권을 갖고 대소문자를 구분한다.


1.파일과 디렉토리 목록 보기 : ls

해당 디렉토리의 내용을 보기 위해서는 'ls'를 사용한다. 윈도우에서의 'dir' 과 같고 최근엔 리눅스에서도 'dir'을 사용한다.

옵션

-a        :   --all, 숨겨진 파일까지 모두 보여준다.
-l         :   --format=long, 파일에 대한 자세한 정보를 보여준다
-R        :   서부디렉토리의 내용까지 보여준다.(Recursive)
-S        :   파일 크기 순서로 정렬한다.
-t         :  수정된 날짜 순서로 정렬한다.
-u        :  최근에 사용한 순서로 정렬한다.
--color :  파일 종류에 따라 색상 표시
--help  :  도움말

예)
#ls         : 파일 이름 및 디렉토리 이름만 출력
#ls -l      : 파일 및 디렉토리에 대한 자세한 정보까지 출력(파일의 모드,소유권,파일 크기,최종 변경 일자 및 시간)

#ls -F    : 파일 이름 뒤에 붙는 기호를 통해 파일의 종류를 구별할 수 있다.
이름 뒤의 /는 디렉토리를 나타내며 파란색 파일은 실행 파일을 의미

#ls *.txt  : 확장자가 .txt인 모든 파일 출력
#ls -l /usr/bin/a*  : /usr/bin/a 로 시작하는 모든 파일의 내용을 자세히 출력
#ls -al   : 숨은 내용까지 자세한 내용을 출력. 가장 많이 사용하는 방법
즉, 파일의 접근 구너한과 관련된 내용들도 알 수 있다.

-rwxrwxrwx   1    root   root   1449  5  26  13:17   anaconda-ks.cfg 
    (1)          (2)    (3)    (4)    (5)            (6)               (7)

(1)파일/디렉토리 허가권
-> d rwx(파일의 작성자의 권한) rwx(작성자가 속한 그룹의 권한) rwx(그 외의 기타 사용자의권한) 10개의 기호로 사용권한을 알 수 있다.(r:읽기,w:쓰기,x:실행)
맨처음의 d는 디렉토리를 의미, 파일일 경우는(-)로 표시된다.
*만약 맨앞에 d 또는 '-' 대신 소문자 L 이 있다면 그것은 심볼릭 링크를 의미하며 맨 뒤에 파일이름뒤에 링크를 가리키는 원본파일이 보인다.

(2)심볼릭 링크수 : 값이 1인 경우에는 자기자신을 나타냄
(3)파일/디렉토리 소유자 : 해당파일을 생성한 계정, 파일 생성자나 관리자가 바꿀 수 있다.
(4)파일/디렉토리 소유 그룹 : 해당 파일을 생성한 계정이 속한 그룹, 파일 생성자나 관리자가 바꿀수 있다.
(5)파일/디렉토리 크기
(6)최종 변경일
(7)파일/디렉토리 이름

*파일/디렉토리 권한 변경 : chmod
파일이나 디렉토리를 새로운 권한으로 변경하는 명령이다.
파일의 소유자나 관리자만이 chmod를 사용할수 있으며 파일의 소유자, 파일의 그룹, 다른 사용자로 나누어 설정할 수 있다.

형식)
chmod [mode] [files]
사용자 기호
u  =>  user  : 파일/디렉토리의 소유자
g  =>  group : 파일/디렉토리의 그륩
o  =>  other  : 다른 사용자
a  =>  all     : 소유자, 그룹, 다른 사용자 모두 (아무 표시 안할 경우 기본적으로 설정됨) 

설정 기호
+   => 퍼미션 허가 : 지정한 퍼미선을 허가
-   => 퍼미션 금지 : 지정된 퍼미션을 금지시킨다.
=   => 퍼미션 지정 : 지정한 퍼미션만 허가하고 나머지는 금지 시킨다.

예)
#chmod ugo+rwx test.txt  => chmod a+rwx test.txt
이것은 모든 test.txt파일을 모든사용자에대해서 rwx권한을 적용시킨다는 뜻이다.


**수치모드의 활용
8진수의 숫자 표현법으로 사용하는 방법이다.
파일의 소유자, 그룹 사용자, 기타 사용자에 대해 각각 아무것도 설정하지 않는 값은 0 읽기 권한은 4, 쓰기 권한은 2, 실행권한은 1로 하여 원하는 모드를 합하여 표현한다.

파일 소유자 권한 (rwx) : 400 = 읽기 권한, 200 = 쓰기 권한 , 100 = 실행 권한
그룹 사용자 권한 (rwx) : 40 = 읽기 권한, 20 = 쓰기 권한 , 10 = 실행 권한
기타 사용자 권한 (rwx) : 4 = 읽기 권한, 2 = 쓰기 권한 , 1 = 실행 권한

+참고+
SetUID = 4000 : 일시적으로 파일/디렉토리의 소유자와 동등한 자격을 갖는다.
SetGID = 2000 : 일시적으로 파일/디렉토리의 그룹권한과 동등한 자격을 갖는다.
sticky bit = 1000 : 모든 사용자가 쓰고 읽을 수 있는 디렉토리에 적용하는데 사용
                         리눅스에서는 /tmp 디렉토리가 이 비트로 설정 되어 있다.
                         파일에 주어지는 권한이 아니라 디렉토리에 주어지는 권한이다.
                         접근 권한과는 상관없이 파일 소유자와 관리자만이 파일을 삭제 할수 있다.

(주의 : SetUID,SetGID는 관리를 잘해야한다.대부분의 파일들은 이 권한이 필요없으며 아무 파일에나 이 권한을 주어서는 안된다.그이유는 이파일을 이용하여 관리자 이외의 다른 사용자들이 root권한을 얻을수도 있기때문에 잘 관리를 해야한다.)

예) 4755 권한의 파일인 경우에는'rws r-x r-x' 이다. 이경우 s자리에 x가 있는것과 마찬가지이고
rwx r-x r-x 여기에 's' 가 추가되어 's' : 4  rwx : 7  r-x  : 5   r-x : 5
그래서 4755가 된다

-7777의 권한인 경우는 'rws rws rwt'가 된다.마지막의 't'는 시티키 비트와 관련이 없는 Others에 대한 실행비트인 'x'대신 't'문자를 사용한다.

사용 예)
#chmod a+rw * => 모든 사용자에게 현재 디렉토리의 모든파일에 대하여 읽기 와 쓰기 권한을 부여
                             = chmod 666 * 과 같다

* 파일 / 디렉토리 소유자 변경 : chown
형식: chown [옵션...] 소유자:[그룹]파일.. 예) #chown Fedora:Fedora index.html
        chown [옵션...] , 그룹파일...

소유자만 변경하는 경우
#chown root index.html

그룹만 변경하는 경우
#chown .root index.html
참고) 하위 디렉토리/파일 까지 모두 소유권을 변경하는 경우엔 -R 옵션을 주면 된다.


SetUID 파일 검사

find 명령을 이용하여 시스템에 대한 SetUID와 SetGID가 부여된 파일을 검사한다.
'-perm 4775'와 같은 옵션을 주고 시스템을 검사하여 찾는다.
#find /home -perm 4775
SetUID가 부여된 모든 파일을 검색 할 때는 '+4000' 권한으로 검색하여 찾는다.
# find / -perm + 4000