코딩하는 문과생

[리눅스] 생활코딩, 다중 사용자 본문

개발 관련 지식/리눅스

[리눅스] 생활코딩, 다중 사용자

코딩하는 문과생 2019. 12. 19. 22:25

[다중 사용자]

여러 명이 하나의 운영체제를 사용하는 방법, 위험성 등을 다룰 것이다. 

  • 시스템의 복잡도가 높아진다.
  • 권한에 대한 체크가 필요해진다. 
$ id
# uid: 사용자id, gid: 그룹id

$ who
# 현재 누가 접속해있는가

 

[관리자와 일반 사용자]

super(root) user VS user

  • #: super 유저
  • $: 일반 유저
$ sudo apt-get update;
# super user권한으로 해당 명령어를 실행

# ***super user(root)가 되는 법***
$ su - root
# change user ID or become superuser
# password:

~# id
~# exit

# ***root비밀번호 접근 lock을 풀어야 할 때***
$ sudo passwd -u root
# -u: unlock
$ su - root
# password: <- 비밀번호를 입력 안해도 된다.
~# pwd
# /root :root사용자의 홈 디렉토리
~# exit

$ cd ~
$ pwd
# /home/sijune***

*** root비밀번호 접근에 다시 lock을 건다***
$ sudo passwd -l root
# -l: lock
$ su - root
# password: <- 비밀번호를 입력해야한다.
# Authentication failure

 

[사용자의 추가]

$ sudo useradd -m park
# password: 명령을 실행한 사용자의 비밀번호
$ cd /home
$ ls
# park 사용자 생성

$ sudo passwd park
# Password 설정

$ su - park
# Password: 

park@ubuntu~$ sudo pwd
# 사용 불가
# sudoers 파일에 존재하지 않기 때문에
park@ubuntu~$ exit

sijune@ubuntu~$ sudo usermod -a -G sudo park
# sudo를 사용할 수 있는 사용자가 sudo권한 부여
# -a: append, -G: 그룹화
$ su - park
# Password: 

park@ubuntu~$ sudo pwd
# OK

 

[권한]

  • 블로그 - 1개의 글(공개 vs 비공개)
  • Unix계열 - File & Directory(Read & Write & Execute)
# ***sijune area(rw-)***
$ touch perm.txt
$ ls -l perm.txt

$ echo 'hi' > perm.txt
$ cat perm.txt
# hi

$ pwd
# /home/sijune

# ***park area(r--)***
$ cd /home/sijune
$ cat perm.txt
# hi
$ echo 'hello' > perm.txt
# 소유자가 아닌 사람이 글을 작성하려 할때: Permission Denied

- 권한을 변경하는 방법(chmod)

# other가 파일을 읽지 못하도록 할 것이다.
# ***sijune area***
$ chmod o-r perm.txt
# other에서 r을 뺀다.
$ ls -l perm.txt

# ***park area***
$ cat perm.txt
# Permission Denied
#---------------------------------------
# other가 파일을 읽을 수 있도록 할 것이다.
# ***sijune area***
$ chmod o+r perm.txt
# other에서 r을 더한다.
$ ls -l perm.txt

# ***park area***
$ cat perm.txt
# hello

 

- 실행의 개념과 권한 설정

$ nano hi-machine.sh
# #!/bin/bash
# echo 'hi hi hi hi'

$ ./hi-machine.sh
# Error
# why: -rw-rw-r--

$ /bin/bash hi-machine.sh
# hi hi hi hi

$ chmod u+x hi-machine.sh
$ ls -l
# why: -rwxrw-r--

$ ./hi-machine.sh
# hi hi hi hi

-디렉토리의 권한

# ***sijune area***
$ mkdir perm;cd perm;echo 'hi' > perm.txt
$ cd ..
$ ls -l

# 읽기 권한 삭제
$ chmod o-r perm
# drwxrwx--x

# ***park area***
$ ls -l perm
$ Error


# ***sijune area***
$ chmod o+r perm
# drwxrwxr-x

# ***park area***
$ cd perm
$ touch a.txt
# Permission Denied
# drwxrwxr-x, 쓰기 권한이 없다.


# ***sijune area***
$ chmod o-x perm
# drwxrwxr--

# ***park area***
$ cd perm
# Permission Denied
# drwxrwxr--, 실행 권한이 없다.


# ***sijune area***
$ chmod -R o+w perm
# 디렉토리 내 모든 파일과 디렉토리를 재귀적으로 수정
$ chmod 111 perm.txt
# 1: --x
$ ls -al

$ chmod 222 perm.txt
# 2: -w-
$ ls -al

$ chmod 333 perm.txt
# 3: -wx
$ ls -al

$ chmod 777 perm.txt
# 7: rwx
$ ls -al

$ chmod a+w perm.txt
# a: all

$ chmod a=rwx perm.txt
# 모든 사용자에 rwx부여

[그룹]

# 3명의 사용자가 필요
# sijune, park: developer
# choi: designer

# ***sijune area***
$ cd /var
$ mkdir developer
# Error
$ ls-al
# 소유자가 root, 따라서 other권한
$ sudo mkidr developer
$ cd developer

$ echo 'hi, sijune' > sijune.txt
# Error

$ sudo groupadd developer 
$ nano /etc/group
# developer 그룹이 생성

$ sudo usermod -a -G developer sijune
$ sudo usermod -a -G developer park
$ exit
# 재접속
$ cd /var/developer

# 디렉토리에 접근할 수 있는 그룹 변경
$ sudo chown root:developer .
$ ls -al
# root root -> root developer
$ echo 'hi, sijune' > sijune.txt
# error
$ sudo chmod g+w .
$ echo 'hi, sijune' > sijune.txt

# ***park area***
$ echo 'hi, park' > park.txt
$ ls -al

# ***choi area***
$ echo 'hi, choi' > choi.txt
# error