본문 바로가기
시작/TIL(Today I Learned)

2211222 Linux - 사용자 계정과 그룹, 패키지 매니저

by 백씨네 2022. 11. 22.

오늘 내가 배운 것

1. Linux User(사용자 계정)

2. 사용자 그룹

3. 파일의 접근 권한 설정하기

4. 패키지 매니저

 

1. Linux User(사용자 계정)

사용자 계정

리눅스는 멀티유저를 지원한다.
멀티유저 - 여러 사용자가 동시에 하나의 시스템에 접근 가능함.

리눅스에서 작동하는 모든 파일과 디렉토리는 사용자에서 시작이 된다.(= 모든 프로세스는 사용자로부터 시작된다.)
당연하게 사용하고 있던 부분이지만 사용자가 로그인 상태가 되어야 모든 파일과 디렉토리를 작동시킬 수 있다.
로그인을 한 상태로 파일과 디렉토리를 작동시키기 때문에 누가 어떤 파일을 만들었는지, 누가 사용하는지를 알 수 있다.

`A`와 `B` 사용자가 있다고 했을 때, `A`라고 로그인 된 상태에서 vi 명령어를 이용해 hello.txt 파일을 생성했다. 
hello.txt는 `A`라는 계정이 만들었기 때문에 hello.txt의 소유자는 `A`이고,
다른 계정이 해당 파일을 접근하지 못하게 할 수 있다. `B`계정은 `권한`만 존재한다면 파일 접근이 가능하다. 리눅스는 파일 하나하나에 디테일하게 설정할 수 있다. 또한 사용자가 많아질 경우 개개인별로 권한을 주는 것이 번거롭기 때문에 `그룹`이라는 개념이 존재한다.

만약 계정이 [0,1,2,3,4,5,6,7,8,9]라고 라고 했을 때 0이라는 계정이 만든 파일을 짝수에게만 권한을 주고 싶은 경우 [2,4,6,8]만 `그룹`으로 지정해서 권한을 줄 수 있다. 그리고 하나의 계정은 여러 개의 그룹을 가질 수 있다.

 

리눅스는 사용자 타입이 3가지 타입이 존재함.

루트 사용자 - UID  0번 (슈퍼계정, 최고 관리자)
시스템 사용자 - UIDs  1~999번 
일반 사용자 - UIds 1000~

 

사용자 조회

id 는 숫자고, 이름은 사용자명이다.

 id 

현재 사용자의 아이디와 사용자가 속한 그룹의 아이디를 포함한 아이디 관련 정보를 보여준다.

 

id [사용자이름]
- id -u root : root 사용자에 대한 아이디를 출력한다.
- id -un root : root 사용자에 대한 이름을 출력한다.
- id -u : 현재 사용자의 아이디를 출력한다.
- id -un : 현재 사용자의 이름을 출력한다.

whoami

현재 사용자의 이름을 조회한다.

users

현재 로그인되어 있는 전체 사용자의 정보를 조회한다.

 

 

사용자 계정 전환

-   sudo -i : 루트 계정으로 이동
-   su -[계정명] : 계정 간 전환(진입) 
-   exit :로그아웃

 

root

사용자 생성, 수정 관련된 명령어들은 대부분 root 계정이 필요하다.
root계정에 접속해서 만드는 방법도 있지만, 중요한 데이터를 지울 가능성이 있기 때문에 루트 계정을 직접 접속하는 것을 금지시한다.

(리눅스는 휴지통이 없다..!)

 

 

우분투 사용자 기준

root 계정으로 직접 진입이 아닌 sudo를 이용해 권한을 얻어서 작업한다.
sudo + 명령어 + 옵션 + 파일명(계정명)
ex) sudo userdel -r tmp1 

 

 

사용자 계정 생성

1. useradd 
- 홈 디렉토리 생성 안됨
    - -m : 홈 디렉토리 생성
    - -G : 그룹 아이디 지정
2. adduser 
    - 홈 디렉토리 자동 생성 : 세부사항 작성을 요청하고 생성됨

 

 

사용자 계정 수정

usermod 
    - (ex) sudo usermod [사용자이름]
- 옵션
     1. -l : 사용자 아이디를 변경할 경우
     2. -s : shell 경로를 변경할 경우
     3. -G(대문자) : 그룹 아이디를 변경할 경우   

 

 

사용자 계정 제거

- userdel
    - /etc/passwd 에 해당하는 줄을 삭제
    - 디렉토리는 남아있음.
- userdel -r 
    - /etc/passwd 에 해당하는 줄을 삭제
    - 홈 디렉토리 안에 내용까지 삭제된다

 

 

확인하기

1. cd ~
2. sudo userdel -r tmp1 //비밀번호 입력
3. cd /home 홈 디렉터리로 이동해서 삭제 확인
4. ls -al

 

 

2. 사용자 그룹

사용자 그룹

리눅스에서 그룹을 통해서 파일에 관한 접근 권한을 제한할 수 있다.
최초에 계정을 생성하면 최소 한 가지의 그룹을 가지고 있고, 계정명과 그룹명이 같다.

 

사용자 그룹 조회

groups : 현재 로그인된 계정이 속한 그룹 리스트를 확인한다.
    - groups [계정명]

 

사용자 그룹 생성 

groupadd를 이용하여 새로운 그룹을 생성할 수 있다. 

 

사용자 그룹 수정 

groupmod를 이용하여 기존의 그룹을 수정할 수 있다.

 

사용자 그룹 제거

groupdel를 이용하여 사용자 그룹을 제거할 수 있다.

 

 

 

 

3. 파일의 접근 권한 설정하기

 

파일의 접근 권한 설정하기

디렉토리 내에서 ls -al을 이용해서 내부 파일을 실행하면

이런 식으로 목록이 뜬다. 앞에 파일 형태를 보면

drwxr-xr-x는 d / rwx / r-x / r-x 로 나뉜다.

1. 맨 앞에 d는 파일 타입에 대한 기호이다.
조회된 내용 중에 파일인지 폴더인지 구분한다.
    - : normal file 일반 파일
    d : directorry
    l : link (file 바로가기와 비슷)
    p : named pipe
    s : socket
    c : chracter device
    b : block device
2. rwx :소유자에 대한 설정 : 소유자는 읽고 쓰고, 실행할 수 있다.
3. r-x :그룹에 대한 설정 : 그룹의 사용자는 읽고 실행할 수 있다.
4. r-x :기타사용자에 대한 설정 : 기타 사용자는 읽고 실행할 수 있다. 

r: 읽기(4) , w: 쓰기(2) , x : 실행(1) (프로세스로 만들 수 있다.)

 

 

해당 파일에 대한 접근 권한 설정하기

chmod 
해당 파일에 대한 접근 권한을 바꿔준다. // chmod 형태 [파일이름]


형태는 rwx 는 4+2+1 / r-x 는 4+1 이므로 rwxr-xr-x 로 접근 권한을 주고 싶다면 
`chown 755 ./hello.txt `로 설정이 가능하다
파일 이름은 경로를 이용해서 설정 작성할 수 있다.

 

 

해당 파일에 대한 소유권 변경하기

chown
해당 파일에 대한 소유권 변경한다. // chown [소유자:그룹] [파일이름]
소유자와 그룹에 동시에 줄 수 있지만 소유자 또는 그룹 중 한 군데에만 줄 수도 있다.
그룹만 변경하려면 그룹명 앞에 `:`를 적어 주어야 한다.
`chown root:root ./hello.txt`로 변경이 가능하다.

 

 

4. 패키지 매니저

패키지 매니저

내가 만든 파일을 install 한다면
1. node.js install 파일을 인스톨
2. node.js 압축을 푼다.
3. hello.js 를 install 한다.
4. hello.js 압축을 푼다.
5. hello.js 를 실행한다.

내 코드는 node.js에 의존한다. 기존에 있던 node 패키지를 설치하게 한다.
맥에서는 homebrew를 이용하면 패키지를 손쉽게 관리할 수 있다.

 

 

댓글