[RHEL6] 일반 명령어 5탄(readonly, rm, rmdir, sudo)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 일반 명령어 5탄(readonly, rm, rmdir, sudo)

by 찬찬이 아빠 2020. 3. 24.
반응형
  20. readonly(읽기 전용)

 1) 경로 : /usr/bin/readonly

 2) 요약 : 파일을 읽기 전용으로 출력

 3) 사용 방법 : readonly [옵션] [이름...]

 4) 옵션

 -f : 함수를 읽기 전용으로 출력

 -p : 모든 읽기 전용 변수 목록을 출력

 

 5) 추가 설명

readonly 명령어는 주어진 이름을 읽기 전용으로 표기하고, 대입문에 이름값이 바뀌지 않도록 합니다. --인수는 나머지 인수에 대한 점검을 하지 않습니다.

 

다음을 제외하고는 반환되는 값은 0입니다.

 § 잘못된 옵션이 있는 경우

 § 이름 중에 적합할 쉘 변수가 없는 경우

 § -f 옵션 다음에 나온 이름이 함수가 아닌 경우

 

 

 

  21. rm(파일 또는 디렉터리 삭제)

 1) 경로 : /bin/rm

 2) 요약 : 파일과 디렉터리를 삭제

 3) 사용 방법 : rm [옵션] 파일명

 4) 옵션

 -f, --force : 강제로 파일이나 디렉터리를 삭제하고, 삭제할 대상이 없을 경우 메시지를 출력하지 않음

 -i, --interactive : 매법 삭제할 때마다 사용자에게 물어봄

 -I(대문자 아이) : 셋 이상의 파일을 삭제하거나 하위의 파일이나 디렉터리가 있을 경우 사용자에게 물어봄. -i 옵션보다는 확인 절차가 적으나 대부분의 사용자 실수는 막을 수 있음

 --interactive[=WHEN] : 상호 대화형 모드로 값(WHEN)을 지정. 이 값은 once(-I(대문자 아이) 옵션과 같음)나 always(-i 옵션과 같음)가 올 수 있음. 값을 지정하지 않으면 always가 기본값

 --no-preserve-root : "/"을 특별하게 취급하지 않음

 --preserve-root : "/"을 삭제하지 않음(기본값)

 -r, -R, --recursive : 하위 디렉터리를 포함하여 모든 내용을 삭제

 -v, --verbose : 지워지는 파일의 정보를 화면에 출력

 --help : 도움말 출력

 --version : 버전 정보 출력

 

 5) 추가 설명

rm 명령어는 디렉터리나 파일을 삭제하는 명령으로 지정된 파일을 하나씩 삭제합니다. 특별한 옵션을 지정하지 않으면 디렉터리를 삭제하지는 못합니다.

# file foo.directory
foo.directory directory

# rm foo.directory
rm: cannot remove 'foo.directory': Is a directory

 

$HOME/.bashrc 파일에 alias rm='rm -i'를 설정하여, 실수를 미연에 방지하기를 권장합니다.

$ rm linux-2.6.32-/Documentation/kernel-docs.txt
rm: remove 'linux-2.6.32/Documentation/kernel-docs.txt' ?

 

삭제할 대상이 확실할 경우에는 -rf 옵션으로 디렉터리를 포함한 모든 하위 내용을 삭제 할 수 있습니다.

$ ls commands.dir
pathck.fooo		chan2	newuser.test		patch	test.fooo
chan		chan3		newuser.test2		patch.test.fooooo

$ rm -rf commands.dir

-ir 옵션은 yes/no를 선택하여 하위 디렉터리 중 원하는 파일만 삭제할 수있습니다.

# rm -ir commands.dir/
rm: descend into directory 'commands.dir/'? y
rm: remove regular file 'commands.dir/.swap'? y
rm: remove regular file 'commands.dir/.swn'? y
rm : remove regular empty file 'commands.dir/path.fooo'? y
rm : remove regular empty file 'commands.dir/chan2'? n
rm : remove regular empty file 'commands.dir/patch'? n
rm: remove regular file 'commands.dir/newuser.test'? n

 

 

 

  22. rmdir(디렉터리 삭제)

 1) 경로 : /bin/rmdir

 2) 요약 : 빈 디렉터리를 삭제

 3) 사용 방법 : rmdir [옵션] 사용자

 4) 옵션

 --ignore-fail-on-non-empty : 디렉터리가 비어 있지 않은 경우 삭제할 수 없음. 이 때 메시지를 출력하지 않음

 -p, --parents : 상위 경로도 삭제. 상위 디렉터리도 비어 있어야 함

 --verbose : 상세한 정보를 출력

 --help : 도움말 출력

 --version : 버전 정보 출력

 

 5) 추가 설명

rmdir 명령언느 현재 위치를 기준으로 하위에 파일이나 디렉터리가 비어 있을 경우에만 삭제합니다. 아래와 같이 rmdir 명령어는 디렉터리에 파일이 존재할 경우 삭제 할 수 없습니다.

$ ls commands.dir
pathck.fooo		chan2	newuser.test		patch	test.fooo
chan		chan3		newuser.test2		patch.test.fooooo

$ rmdir commands.dir/
rmdir: failed to remove 'commands.dir/': Directory not empty

 

--ignore-fail-on-non-empty 옵션은 디렉터리에 파일이 존재하더라도 경고 메시지를 출력하지 않음

$ rmdir --ignore-fail-on-non-empty commands.dir/

 

-p, --parents 옵션은 지정한 디렉터리의 상위 디렉터리까지 삭제합니다.

$ mkdir - a/b/c
$ rmdir a/b/c
$ find ./ -type d
./
./a
./a/b

 

위의 예제에서 옵션을 지정하지 않으면 가장 하위의 디렉터리를 삭제하지만 -p 옵션은 지정한 디렉터리의 전체 경로를 삭제합니다.

$ mkdir -p a/b/c
$ rmdir -p a/b/c/
$ find ./ -type d
./

 

-rf 옵션은 하위 디렉터리의 파일이나 디렉터리가 존재하더라도 강제로 삭제 합니다.

$ rmdir -rf commands.dir

 

 

  23. sudo(명령 실행)

 1) 경로 : /usr/bin/sudo

 2) 요약 : 다른 사용자로 명령을 실행

 3) 사용 방법 : sudo [옵션] [명령어]

                       sudoecit [옵션] 파일

 4) 옵션

 -b : 백그라운드로 명령을 실행 

 -e : 하나 이상의 파일을 편집 모드로 염

 -h : 사용법 출력

 -H : HOME 환경 변수를 지정

 -i : 지정한 사용자의 로그인 쉘로 실행

 -k : 타임 스탬프를 사용자히 않음. 타이머 동작을 멈춤

 -K : 사용자의 타임 스탬프 전체를 제거. -k와는 달리 패스워드를 요구하지 않음

 -l(엘) : 사용자에게 허용 혹은 금지된 명령어 목록을 출력

 -L : sudoers 파일의 기본 파라미터 목록을 출력

 -p prompt : 패스워드 프롬프트(prompt)를 지정

 -P : 사용자의 그룹을 그대로 사용

 -s : 지정한 쉘 환경 변수로 실행

 -S : 터미널 디바이스 대신 표준 입력에서 패스워드를 지정

 -u user : 실행할 사용자(user)를 지정

 -v : 사용자의 타임 스탬프 필드를 확인한 후에 타임아웃 시간을 늘림

 -V : 버전 정보 출력

 - : 명령행의 인자 읽기를 중지. 이는 -s 옵션과 같이 사용

 

 5) 추가 설명

사용자로 로그인한 후에 쉘을 변경하지 않고 슈퍼유저 권한의 명령어를 실행할 경우에 sudo 명령어를 사용합니다. su 명령어는 잠시 동안 슈퍼유저의 쉘 환경을 빌려서 쓴다고 할 수 있습니다.

 

아래와 같이 sudo 명령어는 슈퍼유저의 권힌이 필요한 apt-get과 같은 명령어를 실행할 수 있습니다.

$ apt-get update
E: 잠금 파일 /var/lib/apt/lists/lock 파일을 열 수 없습니다 - open (13: Permission denied)
E: 목록 디렉터리를 잠글 수 없습니다.

$ sudo apt-get update
 [sudo] password for user:
 기존 http://kr.archive.ubuntu.com karmic Release.gpg
--- 생략 ---

 

/etc/sudoers 파일은 sudo 명령어를 실행할 수 있는 사용자와 허용할 명령어 목록을 관리하는 설정파일 입니다. 아래는 chan 사용자에게 mounts.cifs 명령을 허용한 예제입니다.

$ vi /etc/sudoers
root	ALL=(ALLL) ALL
chan	ALL=/sbin/mount.cifs

 

위와 같이 sudoers 파일은 "user host=commands"의 구조로 되어 있습니다. user는 sudo 명령어를 실행할 수 있는 사용자를 등록하고, host는 호스트네임, 그리고 commands는 실행할 명령어들을 콤마(,)로 구분하여 나열합니다.

 

아래와 같이 특정 사용자의 권한으로 index.html 파일을 편집할 수 있습니다.

-u 옵션은 chan 사용자를 지정하고, 이 사용자의 권한으로 /home/chan/www/htdocs/index.html 파일을 편집할 수 있습니다.

$ sudo -u chan vi ~www/htdocs/index.html
반응형

댓글