1. 명령행 인터페이스(4) - 파일 관리하기(1)

프라이마리모·2025년 12월 20일
post-thumbnail

파일 관리 명령은 빈번히 사용되므로 충분한 연습이 필요하다. 파일 관리 명령을 통해 복잡한 작업도 빠르고 효율적으로 처리할 수 있다.

명령설명
ls파일 목록 조회
chown파일 소유권 변경
chmod파일 접근 권한 변경
pwd현재 작업 중인 디렉터리 위치 표시
cd작업 디렉터리 위치 변경
mkdir, rmdir디렉터리 생성/삭제
touch빈 파일 생성
cp, mv, rm파일 복사, 이동, 삭제
cat파일 내용 화면에 표시
more, less파일 내용 스크롤
head, tail파일 내용 중 일부를 표시
find, which, whereis, grep파일 검색

리눅스에서 파일이란?

리눅스에서는 모든 것이 파일이다. 텍스트, 이미지, 영상 뿐 아니라 파일을 묶는 디렉터리, 네트워크 소켓 등 자료 흐름과 시스템 장치까지 파일로 처리한다.
리눅스에서는 파일의 대·소문자를 엄격하게 구분하여 서로 다른 파일로 간주한다. 파일 이름은 최대 256자까지 가능하며, 공백을 포함한 특수문자를 사용할 수 는 있으나 되도록 사용하지 않는 편이 좋다.

ls : 파일 목록 화면에 표시하기

ls [옵션] [파일] : 파일 목록을 화면에 표시한다. 아무 옵션 없이 명령을 실행하면 파일과 디렉터리 명만 출력한다.

  • 아무 옵션, 인자 없이 ls만 호출 : 현재 작업중인 디렉터리 표시
  • 인자로 디렉터리 경로 지정하는 경우 : 해당 디렉터리의 하위 디렉터리와 파일 목록 표시

그 외 자주 사용되는 옵션 별 기능과 예시 화면이다.

옵션설명예시
-l파일 세부 정보 표시
-lh-h : 파일 용량 단위를 MB, GB로 변환하여 표기. -l 옵션과 붙여 -lh 형식으로 사용 가능
-a숨은 파일 까지 표기. 모든 디렉터리에는 현재 디렉터리를 의미하는 .와 상위 디렉터리를 의미하는 ..이 포함되어있다. 이 외에 .으로 시작하는 파일들은 모두 숨긴 파일임을 의미한다.
-al현재 디렉터리에 있는 모든 파일의 세부 정보 표기. -a-l 옵션을 붙여 사용하는 형태

파일 정보를 조회할 때 다음과 같이 표시된다.

이 중 접근권한은 다음과 같은 기준으로 표기된다.

  • 첫번째 자리: 디렉토리(d), 일반파일(-)
  • 2~4번째 자리 : 소유자에 대한 읽기(r), 쓰기(w), 실행(x) 권한 유무
  • 5~7번째 자리 : 소유그룹에 대한 읽기(r), 쓰기(w), 실행(x) 권한 유무
  • 8~10번째 자리 : 다른 모든 사용자에 대한 읽기(r), 쓰기(w), 실행(x) 권한 유무

첫번째 자리를 제외한 각 권한은 r, w, x 순으로 표기되며, 해당 권한이 없을 경우 -로 표기된다.
위 이미지에서의 권한 부여 상태를 분석하면, 현재 조회된 음악 파일은 디렉토리 이며, 소유자는 읽기, 쓰기, 실행을 모두 할 수 있고, 소유그룹과 다른 모든 사용자는 읽기, 실행을 할 수 있다.


chown, chmod : 파일 소유권 및 접근 권한 설정

touch : 파일의 날짜와 시간 정보를 '건드려 바꾸기'

touch [옵션] [파일명] 형태로 사용하며, 파일의 날짜/시간정보를 바꿀 수 있다. 아무 옵션 없이 새로운 파일 이름을 지정하면 비어있는 파일을 생성할 수 있다.

chown : 파일 소유권 설정

기본적으로 파일 소유권은 파일을 생성한 사용자와 사용자가 속해있는 그룹에 있다. 파일의 소유권을 변경하려면 반드시 시스템관리자 권한으로 실행해야하므로 sudo 명령을 붙여야 한다.
touch 로 빈 파일을 하나 생성하여 정보를 조회하면 해당 파일의 권한을 확인할 수 있다.

권한이 rs-rs-r-- 로 소유자와 그룹에 속한 사용자가 읽고 쓸 수 있으며, 그 외 사용자는 읽기만 가능하도록 설정되어있음을 확인할 수 있다.

1) touch 명령 시 sudo -u [사용자명] 명령을 앞에 덧붙여 파일 생성부터 소유권 설정하기


위처럼 /tmp 경로에 임시 파일을 생성할 때 tester라는 계정에 소유권을 부여한 후 ls -l 명령어로 해당 파일의 상세정보를 조회해 보면 소유권이 명령을 실행한 시스템 관리자인 user가 아닌 tester로 잡혀있음을 확인할 수 있다.

2) chown [옵션] [사용자 계정 및 그룹] [파일]으로 이미 생성된 파일의 소유권 변경하기

  • 파일 소유자만 변경하기
  • 파일 소유자, 그룹 정보 동시 변경하기
    사용자 계정과 그룹 사이에 . 또는 :를 넣어 소유자와 그룹을 동시에 변경할 수 있다.
  • 디렉토리 소유권 변경하기
    실습을 위해 /tmp 디렉토리에 /inventory라는 디렉토리를 생성(mkdir)여 빈 파일 phone과 picture를 생성(touch)하였다. 이 때 권한은 tester로 설정하였으며, ls -l 명령어로 조회 시 tester 계정으로 권한이 잘 설정되어있음을 확인할 수 있다.
    • chown 으로 디렉토리만 소유권 변경
      단순히 chown만 사용하면 디렉토리의 소유권만 변경되고, 하위 파일들의 소유권은 기존과 동일하게 tester로 설정되어있음을 확인할 수 있다.
    • chown -R 으로 해당 디렉토리 + 하위 디렉토리 및 파일까지 모두 소유권 변경
      재귀를 뜻하는 -R 옵션을 추가하면 해당 디렉토리와 디렉토리 하위에 있는 파일 및 디렉토리들의 소유권까지 모두 한번에 변경할 수 있다.

chmod : 파일의 접근권한 변경하기

chown과 달리 파일 소유자도 명령을 내릴 수 있다.

1) chmod [레퍼런스][연산자][접근권한] [파일] 형식

  • 레퍼런스 : 변경할 대상 소유자(user), 그룹(group), 다른 모든 사용자(other)를 뜻하며 차례로 u,g,o로 표시한다. a는 소유자와 그룹, 다른 사용자 모두를 의미한다.
  • 연산자 : 권한 부여 시 +, 권한 해제 시 -를 사용한다.
  • 접근권한 : 읽기(read), 쓰기(write), 실행(execute)을 뜻하며 각각 r,w,x로 표기한다.

예제로 아까 생성한 /tmp/tempfile 의 권한을 모든 사용자와 그룹에게 rwx권한을 전부 부여한다. 이 결과로 시스템에 존재하는 모든 사용자가 이 파일을 읽고 쓰고 실행할 수 있다.

반대로 다음처럼 o-rwx를 사용하여 다른 사용자들에게서만 권한을 해제할 수도 있다.

다른 사용자들은 파일을 읽거나 쓰거나 실행할 수 없는 상태(rwxrwx---)로 변경됨을 확인할 수 있다.

2) chmod [8진수] [파일] 형식

[레퍼런스][연산자][접근권한] 대신 8진수의 숫자 표현을 사용할 수 있다. 익숙해지면 이 방식이 훨씬 편리하다.
파일의 소유자, 그룹 사용자, 기타 사용자의 읽기, 쓰기, 실행 권한은 다음과 같이 8진수 값이 부여되어있다.

8진수 값변경 대상접근 권한
400파일 소유자읽기
200파일 소유자쓰기
100파일 소유자실행
40소유자가 속한 그룹읽기
20소유자가 속한 그룹쓰기
10소유자가 속한 그룹실행
4다른 사용자읽기
2다른 사용자쓰기
1다른 사용자실행

부여 할 접근 권한에 따라 각 값을 더한다.

모든 사용자에게 읽기 권한만 부여하고 싶다면 접근 권한을 r--r--r-- 로 변경해야 한다.
이 때, 파일 소유자 읽기권한 400 + 그룹 읽기 권한 40 + 다른 사용자 읽기 권한 4를 더하여 444로 표현할 수 있다.

접근 권한을 처음 처럼 되돌려보자. 파일 소유자 읽기(400), 쓰기(200)와 그룹 읽기(40), 쓰기(20)가 가능해야하고 다른 사용자는 읽기(4)만 가능해야 한다. 결과를 계산하면 400+200+40+20+4 = 664 이다.

이 때, 파일의 소유자가 아니라면 chmod 명령을 실행할 수 없다. chown으로 파일 소유권을 변경한 후 명령을 실행해보면 권한이 없음을 확인할 수 있다.

※ 권한번호 777은 모든 사용자에게 읽기, 쓰기, 실행 권한을 부여하는 번호이다.

반대로 권한이 없을 때, sudo 명령을 사용하여 루트 권한을 획득하면 다른 사용자 소유의 파일 접근 권한을 변경할 수 있다.

profile
개발공부 요약노트

0개의 댓글