UNIX - [제5강] 기본 운영02
● 파일/디렉터리 조작 명령
UNIX 용어정리
- 파일의 접근 권한과 속성
- 리눅스 ext 계열의 파일 시스템을 사용할 때, 파일이나 디렉터리에 접근 권한 외에 추가 속성을 설정할 수 있다. chattr 명령을 이용하여 ‘읽기 전용(root만 가능)’, ‘추가 전용(root만 가능)’, ‘No dump’, ‘No buffer’ 등의 속성을 설정할 수 있다.
- 가상 마신 소프트웨어
- 실제 컴퓨터를 모방하여 가상으로 구현해 주는 소프트웨어이다. 가상머신에 운영체제나 응용 프로그램을 설치할 수 있다.
- 하드링크와 심볼릭링크
- 하드 링크를 이용하면 하나의 파일을 다른 이름으로도 사용할 수 있으며, 심볼릭 링크는 원본 파일을 가리키는 ‘바로가기’ 파일이다. 하드 링크를 생성하면 원본 파일의 링크 카운트가 1 증가하며, 심볼릭 링크는 원본 파일이 삭제되거나 이동되면 의미가 없어진다.
- find 명령
- find 명령은, 파일의 속성을 이용하여, 조건을 만족하는 파일을 검색하기 위한 명령어이다. 검색된 파일의 이름이 한 줄에 하나씩 출력되는데, –exec 옵션을 사용하면 지정된 명령을 이용하여 한 파일씩 처리를 할 수 있다.
요점정리
- 파일의 권한을 변경하는 명령어의 사용법을 자세히 설명하시오.
- chmod [옵션] 권한 파일명...
- -R : 파일명이 디렉터리일 경우 디렉터리 아래에 있는 모든 파일과 디렉터리에 권한이 재귀적으로 적용됨을 의미한다.
- 읽기 (r) : 파일 및 디렉터리 내용 보기
쓰기 (w) : 파일의 쓰기 및 디렉터리 안에 파일 생성 및 삭제
실행 (x) : 파일 실행 및 디렉터리 접근 - 사용자 권한 : 첫 번째 열 (예: rwx)
그룹 권한 : 두 번째 열 (예: r-x)
다른 사용자들 권한 : 세 번째 열 (예: r-x) - 기호모드 [ugoa][+-=][rwx]
ugoa는 각각 user, group, other, all을 의미, 생략하면 all(user, group, other 모두 포함)의 의미이다.
+, -, =는 각각 권한 추가, 권한 삭제, 권한 지정을 의미한다.
여러 기호모드를 나열하여야 할 경우 , 로 연결하고 ‘ ’로 기호모드를 감싸서 표현한다. (예 : chmod 'u=rw,g=r,o=' test.txt)
- 파일의 속성을 변경하는 명령어의 필요성과 사용법을 자세히 설명하시오.
- root 계정 뿐만 아니라 파일의 소유자일지라도 파일을 읽기전용으로만 사용하거나 삭제를 할 수 없게 지정하여 파일을 실수로 삭제하는 것을 막기 위하여 사용된다. root 계정만 속성을 변경할 수 있다.
- chattr [옵션] [+-=속성] 파일명...
- -R : 파일명이 디렉터리일 경우 디렉터리 아래에 있는 모든 파일과 디렉터리에 속성이 재귀적으로 적용됨을 의미한다.
- 속성 지정은 다음과 같다.
- +, -, = 는 각각 속성 추가, 속성 삭제, 속성 지정을 의미
- i : 읽기 전용 모드
- a : 추가 전용 모드
- lsattr 명령은 ls 명령과 비슷하나 파일과 디렉터리의 속성을 확인할 수 있다.
- 리눅스 명령어의 설명서를 보는 명령은 무엇이며 사용법을 구체적인 예를 들어 기술하시오.
- man 명령
man find (find 명령에 대한 설명 표시, <space>로 페이지 이동, /로 단어 검색) - 한글 설명서(번역 과정에서 생략된 내용이 있음) 대신 영문 설명서는 보려면 쉘에서 unset LANG 명령을 수행한 후 man 명령을 수행하면 그 이후부터는 영문 설명서가 표시된다.
- man 명령
- 파일을 복사, 삭제, 이동하는 명령의 사용법을 구체적인 예를 들어 기술하시오.
- 복사 명령 cp
cp src_file dst_file (src_file을 dst_file이라는 이름으로 복사)
cp src_file dst_dir (src_file을 dst_dir에 복사)
cp -r src_dir dst_dir (src_dir의 내용을 dst_dir로 복사) - 삭제 명령 rm
rm del_file (del_file을 삭제)
rm -r del_dir (del_dir과 내용을 모두 삭제) - 이동 명령 mv
mv src_file dst_file (src_file을 dst_file이라는 이름으로 변경)
mv src_file dst_dir (src_file을 dst_dir로 이동)
mv src_dir dst_dir (src_dir을 dst_dir로 이동)
- 복사 명령 cp
- 파일의 링크를 생성하는 명령의 사용법을 구체적인 예를 들어 기술하시오.
- 하드 링크의 생성 ln : 하나의 파일(디렉터리 제외)에 여러 이름을 부여
ln filename nickname (filename 파일에 nickname이라는 별명을 부여)
vi nickname (filename 파일을 nickname으로 접근할 수도 있음)
rm filename (filename을 삭제해도 nickname이라는 이름으로 파일이 남아있음)
rm nickname (nickname까지 삭제해야 파일이 실제로 삭제됨) - 심볼릭 링크의 생성 ln -s : 파일(디렉터리 포함)에 연결을 생성
ln -s src_dir/src_file my_link (src_dir에 있는 src_file에 대한 연결을 현재 디렉터리에 생성)
cat my_link (src_dir에 있는 src_file을 my_link로 접근할 수 있음)
rm src_dir/src_file (연결의 원본이 삭제되면 my_link는 사용할 수 없음)
- 하드 링크의 생성 ln : 하나의 파일(디렉터리 제외)에 여러 이름을 부여
- 조건에 맞는 파일을 검색하는 명령의 사용법을 구체적인 예를 들어 기술하시오.
- 파일 검색 명령 find
find ~ -type d -perm 700 -name 'pr*' -print
(홈 디렉터리 아래에서 접근 권한이 700이고 이름이 pr로 시작하는 디렉터리를 찾아서 이름을 출력)
find . -name '*.txt' -print -exec cat {} \;
(현재 디렉터리 아래에서 이름이 .txt로 끝나는 것을 찾아서 이름을 출력하고 그 내용을 출력)
find /etc -type f -name passwd -print -exec grep root {} \;
(/etc 디렉터리 아래에서 이름이 passwd인 파일을 찾아서 파일의 이름을 출력하고 그 파일 안에서 root라는 단어가 있는 줄을 출력, grep은 파일 안에 주어진 문자열 패턴이 있는 줄을 출력하는 명령임)
- 파일 검색 명령 find
연습문제
- ‘test’ 파일의 접근 권한을 소유자는 읽기와 쓰기 권한, 그룹은 읽기 권한, 다른 사용자는 아무 권한이 없도록 설정하는 명령어는?
- 정답 :
-
②
- 해설 : ①과 ③은 test 파일의 기존 권한에 소유자의 실행 권한, 그룹의 쓰기와 실행 권한이 있었다면 그 권한이 그대로 유지되므로 문제에서 요구하는 권한으로 설정되지 않을 수도 있다. ④는 rwxr-xr-x 권한이고 ②가 rw-r----- 권한이므로 ②가 정답이다.
- 디렉터리를 복사하려면 어떤 명령과 옵션을 사용해야 하는가?
- 정답 :
-
④
- 해설 : cp -r 이 디렉터리를 복사할 수 있는 명령이다.
- 파일이나 디렉터리의 이름을 바꾸는 명령은?
- 정답 :
-
③
- 해설 : 파일의 이름을 바꾸는 명령은 mv이다. cp는 복사본을 만들 수 있고 ln은 별명을 만들 수 있지만 파일의 이름을 바꾸는 것은 아니다. rm은 삭제 명령이다.
- 파일이나 디렉터리의 이름을 바꾸는 명령은?
- 정답 :
-
③
- 해설 : 파일의 이름을 바꾸는 명령은 mv이다. cp는 복사본을 만들 수 있고 ln은 별명을 만들 수 있지만 파일의 이름을 바꾸는 것은 아니다. rm은 삭제 명령이다.
- 원본 파일 a에 대한 심볼릭 파일 b를 만들 때, 올바른 설명은?
- 정답 :
-
④
- 해설 : 디렉터리에 대한 링크를 만들 때, 하드 링크는 불가하며 심볼릭 링크는 가능하다. a와 b는 별도로 존재하는 파일이며, a가 이동 또는 삭제되면 b의 의미는 사라진다.
5강. 기본 운영(2)
파일 및 디렉터리의 권한 변경 명령(change mode)
사용법 : chmod [옵션] 권한 파일명...
∘ -R : 하위 경로에 있는 파일들과 디렉터리까지 권한을 변경
∘ 권한
-읽기 (r) : 파일 및 디렉터리 내용 보기
-쓰기 (w) : 파일의 쓰기 및 디렉터리 안에 파일 생성 및 삭제
-실행 (x) : 파일 실행 및 디렉터리 접근
파일 및 디렉터리의 권한 표시
-사용자 권한(u) : 첫 번째 열 (예: rwx)
-그룹 권한(g) : 두 번째 열 (예: r-x)
-다른 사용자들 권한(o) : 세 번째 열 (예: r-x)
chmod 명령에서 권한 지정 방법(8진수 모드)
ugo 각각에 rwx 권한을 지정함
예 : chmod 755 test
허가는 1, 불허는 0으로 하여 2진수로 표시한 후 8진수 모드로 권한 지정
u에 rwx, g와 o에 rx를 권한을 지정한다면, rwxr-xr-x -> 111101101 -> 755
chmod 명령에서 권한 지정 방법(기호 모드)
형식 : [ugoa][+-=][rwx]
∘ ugoa : 각각 user, group, other, all을 의미, 생략하면 all
∘ +-= : 각각 권한 추가, 권한 삭제, 권한 지정을 의미
∘ rwx : 각각 read, write, execute를 의미, = 뒤에서 생략되면 아무 권한도 없음을 의미
∘ 예 : chmod go-rx test (그룹과 다른 사용자의 기존 권한에서 r과 x를 제거)
∘ 예 : chmod u=rwx,g=rx,o= java (사용자에게 rwx, 그룹에게 rx 권한을 부여)
리눅스에서 파일 속성 변경(change attributes)
사용법 : chattr [옵션] [+-=속성] 파일명...
∘ -R : 하위 경로에 있는 파일들과 디렉터리까지 속성 변경
∘ +-= : 각각 속성 추가, 속성 삭제, 속성 지정을 의미
∘ i : 읽기 전용 모드, root 만 속성 변경 가능
∘ a : 추가 전용 모드. root 만 속성 변경 가능
∘ 예 : chattr +i test (읽기 전용 파일로 변경)
용도
-파일의 소유자도 읽기 전용(또는 추가 전용)으로만 파일을 열 수 있음
-root도 설정을 해제하지 않으면 파일을 지울 수 없게 지정
-lsattr 명령으로 속성 확인 가능
파일 복사 명령(copy)
사용법 : cp [옵션] 복사할파일명 대상파일명
사용법 : cp [옵션] 복사할파일명... 대상디렉터리명
사용법 : cp -r [옵션] 복사할디렉터리명 대상디렉터리명
옵션
∘ -a : 파일의 속성, 링크 정보들을 유지하면서 복사
∘ -b : 파일이 존재하면 백업을 만들고 복사
∘ -f : 기존의 파일을 강제로 삭제하고 복사
∘ -i : 파일이 존재하면 덮어쓰기 여부를 확인
∘ -r 또는 -R : 디렉터리를 복사
사용 예
∘ cp test1.txt test2.txt (현재 디렉터리의 test1.txt 파일을 test2.txt로 복사)
∘ cp /home/nipark/test.txt (/home/nipark 디렉터리의 test.txt 파일을 현재 디렉터리로
복사)
∘ cp -r * backup (현재 디렉터리의 숨김 파일을 제외한 모든 파일과 디렉터리를 backup
디렉터리로 복사)
파일 삭제 명령(remove)
사용법 : rm [옵션] 파일명...
∘ -i : 파일 삭제 여부를 확인
∘ -f : 파일을 강제로 삭제
∘ -r : 디렉터리인 경우 하위 경로에 있는 파일들과 디렉터리까지 삭제
사용 예
∘ rm –r 디렉터리명 (디렉터리를 하위 디렉터리 및 파일과 함께 삭제하는 방법)
∘ rm –f *.tmp (현재 디렉터리의 .tmp로 끝나는 파일을 모두 강제로 삭제)
파일의 이름을 변경하거나 다른 디렉토리로 파일을 이동시키는 명령(move)
사용법 : mv [옵션] 복사할파일명 대상파일명 (현재의 디렉토리 안에서 파일 이름 변경)
사용법 : mv [옵션] 복사할파일명... 대상디렉터리명 (파일(들)을 지정한 디렉터리로 이동)
옵션
∘ -i : 같은 이름이 존재할 경우 덮어쓰기 여부를 확인
∘ -f : 강제로 이동
사용 예
∘ mv test1.txt test2.txt (현재 디렉터리의 test1.txt 파일을 test2.txt로 이름 변경)
∘ mv /home/nipark/test.txt /home/nipark/Sub (/home/nipark 디렉터리의 test.txt 파
일을 /home/nipark/Sub 디렉터리로 이동)
파일을 다른 이름으로 연결하는 명령 (link)
ln 원본파일명 대상파일명
-하드 링크(hard link)를 만드는 것
-하나의 파일에 여러 개의 이름을 부여
-다른 파일 시스템 간에는 링크할 수 없음
ln -s 원본파일명 대상파일명
-심볼릭 링크(symbolic link)를 만드는 것
-다른 파일을 가리키는 역할로 윈도우의 '바로 가기'와 같음
-다른 파일 시스템에 링크를 만들 수 있음
사용 예
∘ ln test mytest; ls –l (현재 디렉터리의 test 파일에 myhard라는 하드 링크를 생성 후
확인)
∘ ln -s test mysymbolic; ls –l (현재 디렉터리의 test 파일에 mysymbolic이라는 심볼릭
링크를 생성 후 확인)
조건에 맞는 파일 및 디렉터리를 찾는 명령(find)
사용법 : find [옵션1] [경로] [옵션2] [표현식]
옵션
∘ 경로 : 검색할 위치, 하위 디렉터리도 검색
∘ -L : 옵션1, 심볼릭 링크된 디렉터리도 검색
∘ -maxdepth n : 옵션2, 검색할 디렉터리 깊이, 1이면 하위 디렉터리를 검색하지 않음
∘ -mount : 옵션2, 경로가 위치한 곳과 다른 파일 시스템은 검색하지 않음
표현식은 다음 요소로 구성됨
∘ test : 파일을 찾는 조건
∘ action : 조건에 일치하는 파일에 대해 수행할 작업
∘ operator : 조건을 연산자로 조합
표현식의 요소 : test
∘ -name : 파일 이름으로 찾음.
∘ -perm : 파일의 접근 권한으로 찾음
∘ -user : 파일의 소유자로 찾음
∘ -group : 파일의 그룹으로 찾음
∘ -type : 파일의 유형, 파일(f), 디렉터리(d), 링크(l) 등
∘ -mtime +n|-n : 변경된 날짜
∘ -mmin +n|-n : 변경된 시간(분)
표현식의 요소 : action
∘ -print : 파일 이름을 화면에 출력
∘ -fprint file : 파일 이름을 파일에 출력
∘ -exec : 파일에 특정 명령을 수행, 주로 -exec command { } \; 형식
표현식의 요소 : operator
∘ ! 표현식 : NOT인 경우
∘ 표현식1 표현식2 : AND인 경우
∘ 표현식1 -o 표현식2 : OR인 경우
사용 예
∘ find / -name passwd –print (/ 이하에서 이름이 passwd인 파일을 찾아 화면 출력)
∘ find /etc -name passwd -exec cat { } \; (/etc 이하에서 이름이 passwd인 파일을 찾
아 각각의 내용을 화면 출력)
∘ find /sbin -type l –print (/sbin 이하에서 심볼릭 링크를 찾아 화면 출력)
∘ find /var -user nipark -mtime –2 –print (/var 이하에서 소유자가 nipark이고 수정
시간이 2일이 안된 파일을 찾아 화면 출력)
∘ find /home -name '*.bak' -exec rm -f { } \; (/home 이하에서 이름이 .bak로 끝나
는 파일을 찾아 강제로 삭제함)
∘ find ~ -size 0 -ok rm { } \; (홈디렉터리 이하에서 파일 사이즈가 0인 것을 찾아 삭제)
다음 문제에 대한 정답을 서술하시오.
17. 링크를 부여하는 방법으로는 하드 링크와 심볼릭 링크가 있다. 각각의 링크 방법에 대하
여 설명하여 보자.
① 하드 링크 (Hard Link)
하드 링크는 하나의 파일에 여러 개의 이름을 부여하는 것이다. 다시 말해, 같은 파일을 이름
만 다르게 하여 부른다는 뜻이다. 그 파일을 없애려면 링크로 생성된 링크 파일을 모두 지워
야 한다. 또한, 같은 i-node 번호를 가지기 때문에 다른 파일 시스템 간에는 링크할 수 없다.
② 심볼릭 링크 (Symbolic Links)
심볼릭 링크는 윈도즈 운영체제의 ‘바로 가기’와 유사하다. 링크로 생성된 파일의 내용은 존재
하지 않으며, 각각의 i-node를 가진 또 다른 파일이 어디를 가리키고 있는지 알려주는 역할
을 한다. 심볼릭 링크를 만들 경우 하드 링크와는 다르게 링크를 다른 곳으로 이동시키면 링
크가 깨져서 사용할 수 없다. 또한, 다른 파일 시스템 간에 생성할 수 있어 다른 파티션에 링
크 파일을 만들 수 있다.
'컴퓨터과학[3-2] > U.N.I.X' 카테고리의 다른 글
UNIX - [제7강] 기본 명령 (0) | 2016.07.19 |
---|---|
UNIX - [제6강] vi 편집기 (0) | 2016.07.19 |
UNIX - [제4강] 기본 운영01 (0) | 2016.07.19 |
UNIX - [제3강] 리눅스 시작 (1) | 2016.07.19 |
UNIX - [제2강] 리눅스 설치 (1) | 2016.07.19 |
댓글