Linux : User & File

jamangstangs·2022년 5월 1일
0

Linux

목록 보기
3/3
post-thumbnail

User 관리, File 속성

User와 Group

  • 리눅스 : Multi-User System, 1대에 여러 명이 접속이 가능하다.

    • Super User : root라는 이름을 가진 유저이다.
      1. 시스템의 모든 작업을 실행할 수 있는 권한을 가지고 있다.
      2. 시스템에 접속 가능한 사용자를 생성할 수 있는 권한을 가지고 있다.

    이와 같은 환경에서, 모든 사용자를 어떻게 관리하나?

/etc/passwd

$ more /etc/passwd
nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false
root:*:0:0:System Administrator:/var/root:/bin/sh
daemon:*:1:1:System Services:/var/root:/usr/bin/false
_uucp:*:4:4:Unix to Unix Copy Protocol:/var/spool/uucp:/usr/sbin/uucico
_taskgated:*:13:13:Task Gate Daemon:/var/empty:/usr/bin/false
_networkd:*:24:24:Network Services:/var/networkd:/usr/bin/false
_installassistant:*:25:25:Install Assistant:/var/empty:/usr/bin/false
# 각 행의 의미를 알아보자. 
  • 사용자이름:비밀번호:사용자ID:사용자가 소속된 그룹ID:추가정보:홈디렉토리:기본셀
    • root -> 사용자 이름
    • 별 -> 암호가 리눅스에서는 x표시가 되어있다. 맥에서는 *로 표시네
    • 0 -> 사용자ID
    • 0 -> 사용자가 소속된 그룹 ID
    • System Administrator -> 추가 정보
    • /var/root-> 홈디렉토리, nobody의 홈디렉토리를 의미한다.
    • /bin/sh -> 기본셀, 로그인시 제공되는 shell을 의미한다.

명령어

User
  • adduser : 새로운 사용자 추가

    $ adduser jm1
    # user id 지정하면서 생성
    $ adduser -uid 2 jm2
    # group id를 지정하면서 생성
    $ adduser -gid 3 jm3
    • 그냥 추가하면, uid는 +1 올려서 저장한다.
    • 그냥 추가하면, group은 User 이름과 동일한 이름으로 하나 생성해서 거기에 넣어준다.
  • passwd : 사용자의 비밀번호를 변경한다.

    $ passwd jm1 
  • usermod : 사용자의 속성을 변경한다.

    # 기본 shell을 zsh로 변경한다. 
    $ usermod --shell /bin/zsh
    # ubuntu그룹에 jm1을 추가한다. 
    $ usermod --groups ubuntu jm1
  • userdel : 사용자 삭제

    $ userdel jm2

Group

  • groups : 사용자가 소속된 그룹을 보여준다.

    $ groups
    $ groups jm1
  • groupadd : 새로운 그룹을 생성한다.

    $ groupadd group1
    $ groupadd -gid 2 group2
  • groupdel : 그룹을 삭제한다.

    $ groupdel group2

Ownership & Permission

  • Linux -> File, Directory마다 Owenership, Permission이 있다.

Permission & Ownership 확인

  • 확인하는 방법은 아래와 같다.

    $ ls -l 
    -rwxr-xr-x    1 jm  some  49760  2 24 10:18 1
    -rw-r--r--    1 jm  some    471  3 12 20:34 1.cpp
    # 위와 같이 확인할 수 있다. 
  • 각 부분은 어떤 의미를 나타낼까?

    1. -: 여기는 어떤 종류의 파일인지 나타낸다.

      • d : 디렉토리

      • -: 일반적인 파일

      • l: 링크

      • b: 블록 디바이스 -> 하드디스크, 플로피디스크, cd/dvd

      • c: 문자 디바이스 -> 마우스, 키보드, 프린터 등의 입출력 장치

    2. rwxr-xr-x : 3개씩 끊어서 인식하면 된다. 앞에서부터 3개씩 잘라낸 각각은 다음과 같다.

      • user의 파일 접근 권한
      • group의 파일 접근 권한
      • other의 파일 접근 권한: user, group을 제외한 사용자의 파일 접근 권한
    3. 1 : 링크 수를 의미한다.

    4. jm : file 소유자의 이름

    5. some : file 소유그룹의 이름

    6. 49760 : 파일의 크기

    7. 2 24 10:18 : 2월 24일 10:18, 마지막 수정시간을 의미한다.

    8. 1 : 파일의 이름을 의미한다.

Permission

  • 각각 r, w, x는 무엇을 나타낼까?

    • r : read, 파일 읽기
    • w : write, 파일 수정
    • x : execute, 실행 권한

    r,w,x 순서대로 표기되며, 각각 이진수로 표현이 가능하다.

    • ex1) 6 : 110 : rw-
    • ex2) 4 : 100 : rw-

    해당 r,w,x가 User, Group, Other 순서로 들어가며, 각각 r,w,x 권한이 있는지 없는지를 나타낸다.

  • 디렉토리에게 있어서 x?

    • 사용자가 디렉토리로 이동하고 싶으면, x권한이 꼭 필요하다.
  • Permission을 어떻게 바꿀까? -> chmod

    1. chmod -> root 사용자, 해당 파일의 소유자만이 실행시킬 수 있다.

    2. 예시를 들어보자.

      ex1) chmod 777 : rwxrwxrwx -> 모든 user(소유자), group, other에게 읽기, 쓰기, 실행 권한을 준다.

      ex2) chmod700 : rwx------ -> user에게만 Permission을 부여한다.

    3. Symbolic method로 실행해보자

      ex1) chmod u+x : user에게 x권한을 준다.

      ex2) chmod u-x : user에게 x권한을 제거한다.

Ownership

  • 파일의 소유권을 바꾸는 명령어 : chown
  • 파일의 그룹을 바꾸는 명령어 : chgrp
  • 파일의 소유권을 바꾸는 예시를 보자 .
    • ex1) chown ubuntu test.txt : test.txt 파일의 user를 ubuntu 사용자로 바꾼다.
    • ex2) chown ubuntu.hey test.txt : text.txt 파일의 user를 ubuntu 사용자로 바꾸고, 그룹을 hey로 바꾼다.
    • ex3) chgrp hey test.txt : test.txt 파일의 group을 hey로 바꾼다.


출처 : https://koromoon.blogspot.com/2018/05/inode-symbolic-link-hard-link.html

  • 링크 :
    • Hard Link : 원본 파일의 inode에 대한 직접적인 Pointer, 원본 파일과 비교하면 차이가 없다.
    • Symbolic Link(Softlink): 원본파일의 inode를 가리키는 정보가 있는 파일, Windows의 바로가기 아이콘 개념.


출처 : https://hoyoung2.tistory.com/51

  • inode : UNIX계통 File System에서 사용하는 자료구조, File, Directory, File System에 관한 정보를 가지고 있다.
    • File, Directory -> 고유한 inode를 가지고 있다.
    • 이들은, inode 번호를 통해 구분이 가능하다.
    • inode에 포함된 정보는 File inode안에 있는 정보와 같다. inode에 실제 데이터가 저장된 블록의 정보를 담고 있다.

실습

# 아무 파일이나 만들어보자. 
$ vi file

# ln 명령어와 옵션을 사용하여 링크를 만들어보자 .
## 하드링크
$ ln file hardlink
## 맨 앞은, inode 번호인데, hardlink에서는 같다. 
$ ls -il
660308 -rw-r--r-- 2 root root 10  518 01:19 file
660308 -rw-r--r-- 2 root root 10  518 01:19 hardlink

## 심볼릭 링크, -s 로 softlink를 만들어준다. 
$ ln -s file softlink
## 맨 앞은, inode 번호인데, Softlink에서는 다르다. 또한, 원본파일을 지정한다는 의미로 
$ ls -il
660308 -rw-r--r-- 2 root root 10  518 01:19 file
660308 -rw-r--r-- 2 root root 10  518 01:19 hardlink
660307 lrwxrwxrwx 1 root root  8  518 01:24 softlink -> file
  • Hardlink vs Softlink
    1. 하드링크에서는 원본 파일과 inode 번호가 간다. 심볼릭 링크에서는 원본 파일과 inode 번호가 다르다.
    2. 파일의 크기고 다르다. 하드링크는 원본 데이터와 같은 크기인 10바이트, 하지만, 심볼릭 링크 파일은 원본파일 포인터를 가지고 있기 때문에 8바이트를 가진다.
    3. 소프트링크는 원본 파일을 지정한다는 의미로 화살표가 붙어있다.
    4. 원본 파일을 옮기면, 하드링크는 그대로지만 심볼릭 링크는 원본 파일이 없어지면 연결이 끊어진다.
profile
자망스탕스

0개의 댓글