반응형
정리, 기록은 덜 멍청한 내가
바보가 될 미래의 나에게 보내는 메시지다.
-양주종 강사님-
사용자 관리
계정
System을 사용할 수 있는 권한.
System에서 일정공간을 할당 받아 계정이 허락하는 권한을 행사할 수 있다.
사용자 관련 파일
/etc/passwd | 사용자 계정에 대한 정보를 담고 있는 파일. 각 사용자 계정의 암호화된 비밀번호, UID, GID, shell 경로 등 종합적인 정보를 담고있음 |
||
/etc/group | 사용자 그룹 정보를 저장하는 파일. 각 그룹의 이름, 그룹 ID(GID), 해당 그룹의 멤버 리스트 등을 포함. |
||
/etc/login.defs | 시스템 로그인 시 기본적으로 적용되는 설정 파일. 계정생성에 관련된 설정 항목, 패스워드 정책, 로그인 실패 횟수 제한 등 다양한 설정 변경가능 (패스워드 최소 길이, 만료일 등) |
||
/etc/default/useradd | useradd 명령어로 새로운 사용자 계정을 생성할 때, 기본값으로 사용되는 설정을 저장하는 파 일. 이 파일을 수정하여, 새로운 사용자 계정이 생성될 때 기본값을 변경할 수 있음. |
||
/etc/shadow | 리눅스 계정의 비밀번호를 저장하는 파일. root 권한으로만 읽을 수 있음. 각 계정의 암호화된 비밀번호, 마지막 암호 변경 날짜, 유효기간, 계정 잠금 여부 등이 기록됨. |
||
alias ul='nl /etc/passwd' => /etc/passwd 파일의 내용을 출력하면서 행번호를 붙여주는 alias 설정 |
# 계정에 대한 종합정보
root@kwc:/boot# tail -5 /etc/passwd
fwupd-refresh:x:112:118:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
usbmux:x:113:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
j:x:1000:1000:j:/home/j:/bin/bash
lxd:x:999:100::/var/snap/lxd/common/lxd:/bin/false
blue:x:1001:1001:홍길동,501,111111,222222,333333:/home/blue:/bin/bash
# 사용자 그룹 정보를 저장하는 파일
root@kwc:/boot# tail -5 /etc/group
tss:x:116:
landscape:x:117:
fwupd-refresh:x:118:
j:x:1000:
blue:x:1001:
# /etc/shadow 비밀번호가 암호화 되어있다.
root@kwc:/boot# tail -5 /etc/shadow
fwupd-refresh:*:19405:0:99999:7:::
usbmux:*:19474:0:99999:7:::
j:$6$Iln22Z8eXMvaHvRb$7GK1/6vi5qcxf8bQuWn8ukCq9v2Pi9UEEN7Pd4gEONKjc58ssTTxxa.dhxUU4TafF.2oFkluQg4tGvI/dJQDq/:19474:0:99999:7:::
lxd:!:19474::::::
blue:$y$j9T$rOJG/mN/ZdDAPefyhX/Rm/$OB0GdK0xx4r1jbIQyr49kyUBhW5mSN07OGEwzTx75R.:19477:0:99999:7:::
계정 정보 각 항목의 의미
blue | x | 1001 | 1001 | 홍길동,501... | /home/blue | /bin/bash |
계정명 | 비밀번호 | UID | GID | 사용자 정보 | 계정의 홈 디렉터리 |
로그인 쉘 |
blue:x:1001:1001:홍길동,501,111111,222222,333333:/home/blue:/bin/bash
# useradd 명령어로 사용자 계정 생성하기
root@kwc:/boot# useradd red # red 라는 사용자 계정 생성
root@kwc:/boot# passwd red # pw 생성
New password:
Retype new password:
passwd: password updated successfully
# 사용자 계정에 정보 입력/변경
root@kwc:~# chfn red
Changing the user information for red
Enter the new value, or press ENTER for the default
Full Name []: 김레드
Room Number []: 501
Work Phone []: 1234
Home Phone []: 2345
Other []: 0000
# adduser 명령어로 사용자 계정 생성하기
root@kwc:/boot# adduser white #white 라는 사용자 계정 생성
Adding user `white' ...
Adding new group `white' (1004) ...
Adding new user `white' (1004) with group `white' ...
Creating home directory `/home/white' ...
Copying files from `/etc/skel' ...
# 해당 계정의 그룹, 홈디렉터리가 자동으로 생성되고 /etc/skel 디렉터리를 자동으로 복사한다.
New password:
Retype new password: # passwd 명령어를 입력하지 않아도 pw를 생성하라는 문구가 나온다.
passwd: password updated successfully
Changing the user information for white
Enter the new value, or press ENTER for the default
Full Name []: 김화이트
Room Number []: 501
Work Phone []: 1234
Home Phone []: 5678
Other []: 0000 # 해당 사용자의 정보를 입력할 수 있다.
chfn: name with non-ASCII characters: '김화이트'
Is the information correct? [Y/n] y
# 사용자 삭제 (로그인 되어있는 경우 삭제 불가)
root@kwc:~# userdel -r red
userdel: red mail spool (/var/mail/red) not found
root@kwc:~# finger red # 정상적으로 삭제됐다.
finger: red: no such user.
/etc/skel
새로운 사용자가 생성될 때, 기본적으로 해당 사용자의 홈 디렉터리에 복사되는 파일들이 저장되는 디렉터리.
/etc/skel 디렉터리에 저장된 파일들은 기본적으로 '.bashrc', '.bash_logout', '.profile', '.inputrc' 와 같은 리눅스 shell 환경과 관련된 파일들이 포함된다.
/etc/skel 디렉터리에 넣어둔 파일들은 새로운 계정이 생성될 때 자동으로 해당 계정의 홈 디렉터리에 복사됨.
사용자 관리
root@kwc:~# useradd -root
Usage: useradd [options] LOGIN
useradd -D
useradd -D [options]
Options: # root 사용자가 사용할 수 있는 useradd 옵션
--badnames do not check for bad names
-b, --base-dir BASE_DIR base directory for the home directory of the
new account
--btrfs-subvolume-home use BTRFS subvolume for home directory
-c, --comment COMMENT GECOS field of the new account
-d, --home-dir HOME_DIR home directory of the new account
-D, --defaults print or change default useradd configuration
-e, --expiredate EXPIRE_DATE expiration date of the new account
-f, --inactive INACTIVE password inactivity period of the new account
-g, --gid GROUP name or ID of the primary group of the new
account
-G, --groups GROUPS list of supplementary groups of the new
account
-h, --help display this help message and exit
-k, --skel SKEL_DIR use this alternative skeleton directory
-K, --key KEY=VALUE override /etc/login.defs defaults
-l, --no-log-init do not add the user to the lastlog and
faillog databases
-m, --create-home create the user's home directory
-M, --no-create-home do not create the user's home directory
-N, --no-user-group do not create a group with the same name as
the user
-o, --non-unique allow to create users with duplicate
(non-unique) UID
-p, --password PASSWORD encrypted password of the new account
-r, --system create a system account
-R, --root CHROOT_DIR directory to chroot into
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-s, --shell SHELL login shell of the new account
-u, --uid UID user ID of the new account
-U, --user-group create a group with the same name as the user
-Z, --selinux-user SEUSER use a specific SEUSER for the SELinux user mapping
--extrausers Use the extra users database
root@kwc:~# useradd -D # useradd 명령어의 기본값 보기
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
# vi /etc/default/useradd # 파일을 vi 편집기에서 수정하여 useradd 명령어의 기본값을 변경할 수 있다.
root@kwc:~# nl /etc/default/useradd
1 # Default values for useradd(8)
2 #
3 # The SHELL variable specifies the default login shell on your
4 # system.
5 # Similar to DSHELL in adduser. However, we use "sh" here because
6 # useradd is a low level utility and should be as general
7 # as possible
8 SHELL=/bin/bash # 원래 디폴트값은 bin/sh이다. bash로 변경.
9 #
10 # The default group for users
11 # 100=users on Debian systems
12 # Same as USERS_GID in adduser
13 # This argument is used when the -n flag is specified.
14 # The default behavior (when -n and -g are not specified) is to create a
15 # primary user group with the same name as the user being added to the
16 # system.
17 # GROUP=100
18 #
19 # The default home directory. Same as DHOME for adduser
20 # HOME=/home
21 #
22 # The number of days after a password expires until the account
23 # is permanently disabled
24 # INACTIVE=-1
25 #
26 # The default expire date
27 # EXPIRE=
28 #
29 # The SKEL variable specifies the directory containing "skeletal" user
30 # files; in other words, files such as a sample .profile that will be
31 # copied to the new user's home directory when it is created.
32 # SKEL=/etc/skel
33 #
34 # Defines whether the mail spool should be created while
35 # creating the account
36 # CREATE_MAIL_SPOOL=yes
# 아래 내용들을 넣어준다.
37 GROUP=100
38 HOME=/home
39 INACTIVE=-1
40 EXPIRE=
41 SKEL=/etc/skel
42 CREATE_MAIL_SPOOL=no
# 사용자 정보 보기
root@kwc:~# finger white
Login: white Name: ▒M-^@▒M-^YM-^T▒M-^]▒▒M-^J▒ # 한글이라 깨진다.
Directory: /home/white Shell: /bin/bash
Office: 501, x1234 Home Phone: x5678
Never logged in.
No mail.
No Plan.
# 특정 사용자 로그인 금지
root@kwc10:01:19:~# usermod -L white
root@kwc10:01:26:~# finger white
Login: white Name: ▒M-^@▒M-^YM-^T▒M-^]▒▒M-^J▒
Directory: /home/white Shell: /bin/bash
Office: 501, x1234 Home Phone: x5678
Last login Mon May 1 09:04 (KST) on pts/3 from 10.0.2.2
No mail.
No Plan.
login as: white
white@127.0.0.1's password:
Access denied
white@127.0.0.1's password:
# white 계정의 접속이 거절된다.
# 로그인 금지 시킨 계정 다시 로그인 허용
root@kwc10:01:35:~# usermod -U white
login as: white
white@127.0.0.1's password:
Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-71-generic x86_64)
# 다시 정상적으로 로그인이 된다.
사용자 용량제한
유예기간 설정 (사용자나 그룹이 할당량을 초과하더라도 엑세스가 거부되지 않는 기간)
root@kwc:~# edquota -t
용량제한
root@kwc:~# edquota -u white # white 계정에 대한 용량제한
# 사용자와 그룹의 디스크 할당량 정보를 표시하는 명령어.
root@kwc:~# repquota -a
*** Report for user quotas on device /dev/sda5
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 24 0 0 3 0 0
white -- 44 20000 25000 12 0 0 -> 설정됨
name -- 44 0 0 12 0 0
# white의 디스크 할당량이 설정된 것을 볼 수 있다.
# ---white 계정으로 새로운 터미널에 로그인---
[white@kwc ~]$ quota
Disk quotas for user white (uid 1013):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda5 44 20000 25000 12 0 0
# 디스크 용량 제한이 걸려있는 것을 볼 수 있다.
[white@kwc ~]$ cp -r /var .
cp: '/var/cache/apparmor/e10c1cf9.0'에 접근할 수 없음: 허가 거부
cp: '/var/cache/apparmor/c47eabf7.0'에 접근할 수 없음: 허가 거부
cp: './var/cache/apt/srcpkgcache.bin' 쓰는 중 오류: 디스크 할당량이 초과됨
cp: './var/cache/apt/pkgcache.bin' 쓰는 중 오류: 디스크 할당량이 초과됨
cp: './var/cache/apt/archives' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/cache/debconf' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/cache/ldconfig' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/cache/man' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/cache/pollinate' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/cache/private' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/cache/snapd' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/cache/apache2' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/cache/fontconfig' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/cache/tomcat9' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/crash' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/lib' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/local' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/log' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/mail' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/opt' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/snap' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/spool' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/tmp' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
cp: './var/www' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
[white@kwc ~]$ mkdir ddd
mkdir: `ddd' 디렉터리를 만들 수 없습니다: 디스크 할당량이 초과됨
# 디스크 할당량이 초과되어 디렉터리가 생성되지 않는다.
[white@kwc ~]$ quota
Disk quotas for user white (uid 1013):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda5 25000* 20000 25000 6days 39 0 0
# 할당된 용량이 가득 찬 것을 볼 수 있다.
용량 설정 복사
root@kwc:~# edquota -u k10 # k 10 계정의 할당 용량 확인
Disk quotas for user k10 (uid 1011):
Filesystem blocks soft hard inodes
/dev/sda5 60 0 0 12
k10 계정의 soft, hard 용량 할당량은 0으로 되어있다.
이전에 white 계정의 용량 할당량을 그대로 복사해보자.
root@kwc12:10:17:~# edquota -p white k10 # white 계정의 용량 할당량을 k10 계정으로 복사
root@kwc12:11:54:~# repquota -a # 용량 확인
*** Report for user quotas on device /dev/sda5
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 24 0 0 3 0 0
j -- 40 0 0 13 0 0
k9 -- 44 0 0 12 0 0
k10 -- 60 20000 25000 12 0 0
white +- 25000 20000 25000 6days 39 0 0
# 용량 할당량 설정이 복사된 것을 볼 수 있다.
소프트 제한 (soft limit): 사용자나 그룹이 할당된 디스크 공간의 양이 제한된 값을 초과하면 경고 메시지를 표시하지만, 엑세스는 계속 허용된다. 즉, 소프트 제한은 일종의 경고 기능으로서, 사용자나 그룹이 일시적으로 할당량을 초과할 수 있도록 허용한다.
하드 제한 (hard limit): 사용자나 그룹이 할당된 디스크 공간의 양이 제한된 값을 초과하면 엑세스가 차단된다. 하드 제한은 실제로 사용자나 그룹이 사용 가능한 디스크 공간의 최대치를 제한하는 역할을 한다.
소유권과 허가권
drwxr-xr-x 9 root root 4096 4월 28 16:00 d5/
권한 링크수 소유자 소유그룹 size 접근날짜 파일명
root@kwc:~# l # alias l='ls -AlF' 파일 및 디렉토리 목록 출력
합계 164
-rwxr-xr-x 1 root root 15960 4월 28 09:35 a* # a*파일이 현재 root의 소유로 되어있다.
-rw-r--r-- 1 root root 85 4월 28 09:35 a.c
-rw-r--r-- 1 root root 40 4월 28 11:28 a2
root@kwc:~# chown sam a* # a*파일의 소유권을 sam 계정으로 변경
root@kwc:~# l # a* : a로 시작하는 모든 파일
합계 164
-rwxr-xr-x 1 sam root 15960 4월 28 09:35 a* # 변해있는 것을 볼 수 있다.
-rw-r--r-- 1 sam root 85 4월 28 09:35 a.c
-rw-r--r-- 1 sam root 40 4월 28 11:28 a2
그룹 소유권 변경
root@kwc14:16:16:~# ll # alias ll='ls -alF'
합계 172
-rwxr-xr-x 1 sam root 15960 4월 28 09:35 a*
-rw-r--r-- 1 sam root 85 4월 28 09:35 a.c
-rw-r--r-- 1 sam root 40 4월 28 11:28 a2
-rwxr-xr-x 1 sam root 16 5월 1 11:10 a2.sh*
drwxr-xr-x 9 root root 4096 4월 28 16:00 d5/
drwxr-xr-x 2 root root 69632 5월 1 11:43 d6/ # d6의 그룹 소유권이 root로 되어있다.
root@kwc:~# chgrp STAR d6 # d6에 대한 그룹 소유권을 STAR 그룹으로 변경
root@kwc14:16:50:~# ll
합계 172
-rwxr-xr-x 1 sam root 15960 4월 28 09:35 a*
-rw-r--r-- 1 sam root 85 4월 28 09:35 a.c
-rw-r--r-- 1 sam root 40 4월 28 11:28 a2
-rwxr-xr-x 1 sam root 16 5월 1 11:10 a2.sh*
drwxr-xr-x 9 root root 4096 4월 28 16:00 d5/
drwxr-xr-x 2 root STAR 69632 5월 1 11:43 d6/ # 그룹 소유권이 STAR그룹으로 변경된 것을 볼 수 있다.
Umask
umask란 사용자가 파일 생성시 자동으로 권한을 조정해 주는 값을 말한다.
현재 umask 값 보기
umask -S
root@kwc:~# umask -S
u=rwx,g=rx,o=rx
# umask default 값
root 0022
user 0002
# root에서 directory를 만들 때
전체권한 : 7 7 7
umask : 0 2 2
-
= 7 5 5
# root 에서 file을 만들 때
directory : 7 5 5
umask : 1 1 1
-
= 6 4 4
# 권한 값 읽는 법
r = 2^2 = 4
w = 2^1 = 2
x = 2^0 = 1
# 3자리씩 끊어서 읽음
- r---wx-w- 1 root root 184 Apr 28 05:17 a1*
4 3 2
- --xrwxr-- 1 root root 32 Apr 28 05:17 a2*
1 7 4
d --x-w--wx 2 root root 4096 Apr 28 05:17 d1/
1 3 3
d rw-r-xr-- 2 root root 4096 Apr 28 05:17 d2/
6 5 4
# 처음 -는 file.
# 실행file에는 *이 붙는다. x 권한이 하나라도 붙어있으면 *이 붙는다.
# 처음 d는 directory. directory는 맨 뒤에 /가 붙음.
# 디렉토리에서의 x는 들어갈 수 있는 권한
# 디렉토리에서의 r은 읽기 권한
# 디렉토리에서의 w은 만들고, 지우고 수정하는 권한
# 앞의 3개의 권한은 owner주인을 의미함
# 그 다음 3개는 그룹을 의미
# 주인도 아니고 그룹도 아니면 other을 의미
Sticky bit
리눅스 파일 시스템에서 사용되는 파일 권한(permission) 중 하나로, 디렉토리에 대해서만 적용된다.
Sticky bit가 설정된 디렉토리에는 일반적으로 모든 사용자가 파일을 생성하고 삭제할 수 있다.
그러나 Sticky bit가 설정된 디렉토리에서 다른 사용자가 생성한 파일은 파일 소유자나 root 계정만이 삭제할 수 있다.
예를 들어, /tmp 디렉토리는 sticky bit가 설정되어 있다. 이 디렉토리에 파일을 생성하는 경우, 해당 파일은 생성한 사용자가 소유권을 가지게 된다. 그러나, 다른 사용자가 생성한 파일은 삭제할 수 없다. 이는 /tmp 디렉터리가 여러 사용자가 공유하는 디렉터리이기 때문에, 다른 사용자의 파일을 실수로 삭제하지 않기 위해서이다.
반응형
'[네이버클라우드] AIaaS 개발자 과정 > Linux' 카테고리의 다른 글
[네이버클라우드캠프] 2023.5.1 Linux(2) - 네트워크의 이해 (2) | 2023.05.01 |
---|---|
[네이버클라우드캠프] 2023.5.1 Linux(1) - log 관리, 예약작업(atd), 반복작업(crond) (4) | 2023.05.01 |
[네이버클라우드캠프] 2023.4.28 Linux(1) - Process 관리 , 리눅스 부팅과 커널의 이해 (6) | 2023.04.30 |
[네이버클라우드캠프] 2023.4.27 Linux(2) - 패키지 관리, SQLite 패키지 수동 설치 및 표만들기 실습 (0) | 2023.04.30 |
[네이버클라우드캠프] 2023.4.27 Linux(1) - UbuntuLinux 설치 및 기본설정 (0) | 2023.04.30 |