본문 바로가기

Linux

2025.01.13 Linux 파일의 접근 권한 관리 및 부여, 삭제 등 사용자 환경 설정 파일 수정

복습)

 

 

■ 파일의 접근 권한 관리

 

# 권한의 종류 3가지

  1. 읽기(read) 권한

  2. 쓰기(write) 권한

  3. 실행(execute) 권한

 

권한 대표문자 file directory
읽기 r 읽고, copy 디렉터리에 ls
쓰기 w 수정 디렉터리에 파일을 생성
실행 x shell script 실행 디렉터리에 cd로 접근 가능

 

 

ex)

▶ 왼쪽부터 파일유형 파일권한, 링크수 (1), 소유자 (joel), 소유자 속한 그룹(joel), 파일크기(byte), 마지막 변경 날짜 시간, 파일이름

 

# 파일유형

  - 파일이 어떤 종류인지 나타낸다.

  - - : 일반적인 파일

  - d : 디렉터리

  - b : 블록 디바이스 (block device) 장치 : 하드디스크, 플로피디스크, CD/DVD 저장장치

  - c : 문자 디바이스(character device) 장치 : 마우스, 키보드, 프린터등의 입출력 관련된 장치

  - l : 링크(link) : 윈도우 바로가기와 비슷한 개념으로 연결된 파일, 실제 파일은 다른 곳에 존재한다.

 

# 파일 권한

ex) rw- r-- r--

       1)   2)  3)

1) : 파일의 소유자의 권한

2) : 소유자가 속한 그룹의 권한

3) : 기타 사용자 권한

 

■ chmod

  - 권한을 수정하는 명령어

  - chmod [옵션] 파일

  - u : 유저

  - g : 그룹

  - o : 기타 유저

  - a : 전체

 

  - r : 읽기

  - w : 쓰기

  - x : 실행 

 

  - + : 권한 부여

  - - : 권한 해지

 

ex) 실행권한을 수정할 경우

 

ex) 쓰기 권한을 줄 경우

 

ex) 모든 권한을 줄 경우

 

ex) 모든 권한을 해지할 경우

 

ex) 모든 유저들의 읽기 권한만 줄 경우

 

 

■ 권한을 설정하는 숫자

  - 8진수(0~7) 각 숫자는 권한 패턴

  - x : 2의 0승 = 1

  - w : 2의 1승 = 2

  - r : 2의 2승 = 4

 

# 8진수      rwx

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

      0            ---   

      1            --x   

      2            -w-  

      3            -wx

      4            r--

      5            r-x

      6            rw-

      7            rwx

 

ex) rwx rwx rwx

      421 421 421

        7     7     7

▶ 문자, 숫자 중에 본인이 편한 걸 쓰면 된다. 하지만 숫자가 입력이 편하기 때문에 엔지니어들은 숫자를 많이 사용한다.

 

# 디렉터리 안에 있는 모든 파일과 서브 디렉터리들을 동일하게 권한 부여를 수행하는 방법 (-R)

더보기

-R 옵션을 통해 서브 디렉터리까지 한 번에 수정된 걸 볼 수 있다.

 

ex) rm -rf *

   - 전부 다 삭제

   - 히든 파일들은 삭제되지 않는다.

 

 

ex) 파일 생성

▶ 권한이 자동으로 부여된 걸 볼 수 있다.

 

■ 기본 접근 권한 (Linux 시험에 꼭 나오는 문제!)

  - Linux에서 파일이나 디렉터리를 생성할 때 기본 접근 권한이 자동으로 설정된다.

 

# 확인하는 법 (umask)

기본 접근 권한 마스크 값

 

ex)  mask값을 문자로 출력 (umask -S)

▶ 디렉터리는 775로 만들어지는데 파일은 664로 만들어진다.

 

 리눅스에서는 기본적으로 파일을 생성할 때 실행(x) 권한을 갖고 생성하지 못하도록 되어있다.

▶ u=rx,g=rw-,o=r-- (664)

 

# 기본적으로 일반 파일의 최대권한

▶ rw- rw- rw-

    110 110 110 ← 2진수로 변환 (666)

    000 000 010 ← 마스크 값이 002이기 때문이다.

666- 002 = 664  rw-rw-r-- : 664로 기본 권한이 설정된 것이다.

 

# 디렉터리에 대한 최대권한

▶  rwx rwx rwx

      111 111 111  ← 2진수로 변환(777)

      000 000 010 ← 마스크 값 (002)

  777- 002 = 775 ← rwxrwxr-x : 기본 생성 권한

 

# umask 수정

 ex) 파일 및 디렉터리 생성

 

▶ 일반 파일의 최대권한

      rw- rw- rw-

      110 110 110

      000 010 010 

  666 - 022 = 644

▶ 디렉터리의 최대권한

      rwx rwx rwx

      111 111 111 →  2진수 변환(777)

      000 010 010 → 마스크 값(022)

  777 - 022 = 755

 

# 소유자, 소유자 그룹 수정하는 법 

■ chown

  - 파일이나 디렉터리의 소유자와 소유자 그룹을 변경하는 명령어

  - chown 소유자:소유자 그룹 파일(디렉터리)

  - 파일의 소유자와 소유자의 속한 그룹만 변경할 수 있다.

 

# 디렉터리 안에 있는 모든 파일과 서브 디렉터리에 대해서 변경  

- chown -R 소유자:소유자 그룹 파일(디렉터리)

▶ root에서 생성했기 때문에 root로 되어있지만 -R 명령어를 통해 서브 디렉터리까지 joel로 수정한 것이다.

 

# 소유자만 수정하고 싶은 경우

  - root 유저는 모든 소유자의 수정 변경을 할 수 있다.

 

# 소유자 그룹도 수정해야 할 경우

 

# 소유자와 소유자 그룹 변경

 

■ chgrp

  - 파일이나 디렉터리의 소유 그룹을 변경하는 명령어

chgrp -R


■ MobaXterm설치 (PUTTY 대신 사용 가능)

   - 윈도우에서만 지원하고, Mac OS에서는 지원하지 않는다.

패스워드 입력후 X누르기

 

# 윈도우 서버에서 리녹스 서버로 접속

▶ SFTP란 SSH의 파일 전송 버전을 뜻하고, 네트워크 프로토콜 중 하나이다.

 

▶ 왼쪽은 윈도우 환경이고, 오른쪽은 리눅스 환경이다. 

 

▶ 왼쪽에 있는 jdk 압축파일을 마우스로 오른쪽으로 드래그하면 파일이 전송된다.

 

# PUTTY에서 확인

▶전송이 제대로 된 것을 볼 수 있다.

 

■ tar

  - 파일을 압축하고 압축해제하는 명령어

  - -c : compress, 여러 개의 파일을 하나로 만든다. 

  - -v : view, 압축되는 과정을 화면 출력

  - -f : file, 생성될 파일명을 지정

  - -x : extract, 묶여있는 파일을 해제

  - -C : 압축이 풀릴 위치 지정

  - -z : gzip 압축 적용 옵션

 

# 압축할 때

- tar cvf 압축파일명 압축대상파일

 

# 압축해제

- tar xvf 압축파일명 압축해제할 위치

- 현재 위치에 압축해제 하고 싶다고 . 입력하면 에러 발생

   ex)

에러발생
. 빼고 입력
현재 위치에 압축해제하고 싶을 경우 -C . 쓰기

ex) 다른 위치에 압축해제 할 경우

상대경로로 압축해제 ~/

 

ex)

▶ tar에서 xvfzz는 압축해제 파일 이름 끝에 gz이기 때문에 전용 옵션인 z를 쓴 거다.

j입력하고 tab키 누르면 j로 시작하는 게 하나밖에 없기 때문에 바로 자동완성이 된다.

▶ 다른 쪽에 압축해제 할 거기 때문에 -C 옵션을 써서 /usr/java 라는 이름을 만들어서 거기에 압축을 해제한 것이다.

압축해제 출력은 위에 거임

 

▶ java파일로 접속해서 파일을 확인해 보면 압축한 파일이 있는 걸 볼 수 있다.

 

■ 시스템 환경설정

  - 시스템을 사용하는 전체 사용자의 공통 환경을 설정하는 파일로 모든 사용자가 로그인할 때 무조건 실행한다.

  - 시스템 환경 설정 파일 :  /etc/bashrc, /etc/profile

 

■ 사용자 환경 설정

  - 각 사용자의 홈 디렉터리에 숨김 파일로 있으며 사용자가 내용을 수정하고 관리한다.

  - 사용자가 로그인하면 제일 먼저 시스템 환경 설정 파일이 실행되어 시스템 공통환경을 만들고 이후 사용자 환경 설정 파일을 순서대로 실행하여 사용자별 환경을 설정한다.

 

# 사용자 환경 설정 파일

 - .bashrc : 가장 먼저 실행

 - .bash_profile : 그 다음 실행, 중간에 변경 작업 시 재적용 작업을 해야한다. (source)

 - .bash_logout

 

#  export 환경변수=값

 

- export JAVA_HOME=/usr/java/jdk1.8.0_131

- $JAVA_HOME/bin

 

# 환경설정 파일을 수정하고 싶을 경우 (source 사용)

.bash_profile은 처음 로그인할 때만 보이기 때문에 결과가 나오지 않아서 재적용 작업을 해줘야 한다.

ex)

 

# open jdk(무료) → oracle jdk(유료) 수정

  1) 기본 jdk 변경

java의 위치를 찾고 싶을 때 which
등록

▶ 어느 버전에서든 쓸 수 있기 때문에 이렇게 작성한 것이다.

"usr/bin/java" : which java해서 나온 위치를 지정해주면 된다.

▶ 1 : priority→ 우선순위를 결정, 숫자가 높은 순으로 자동 선택 (지금은 하나밖에 없기때문에 1로 한 거다.)

 

  2) 등록된 걸 확인

구성확인하면서 변경하는 작업

 

 3) 자바 버전 확인

 

 

ex) 삭제하고 싶을 경우

▶ root 유저 상태에서만 권한이 있기때문에 삭제 가능하다.

▶ 숫자 입력할 때 그냥 Enter키 누르면 된다.

▶ Openjdk로 변경된 걸 볼 수 있다.

 

 # 다른 유저에서 설정하는 법

   - ex) joel 유저로 로그인 후 vi .bash_profile 편집기 들어가기

재적용 작업 시 source 명령어 사용

▶ source .bash_profile 작업을 꼭 해줘야한다.

▶ 버전을 확인해보면 JAVA 제대로 적용된 걸 볼 수 있다. 

▶ 안 될 경우에 이렇게 설정하면 된다.