Dev with GPT
5days Feed back
잊지 말자. 난, root다. #이다. 이제 관리자다.
설정을 마음대로 할 수도 있지만, 시스템을 망가뜨릴 수도 있다.
오늘 수업은 어려운 내용이 많았지만 지난 내용에 대해 찾아보면서
차분하게 천천히 해보았다.
블로그를 작성하는 것은 미래의 나를 위한 일이기도 한 것 같다는 생각이 들었다.
★ 사용자 관리 명령어 표
▶ 각각의 명령어는 리눅스에서 자주 사용하는 사용자 관리 명령어를 정리한 것으로, 사용자 계정 추가, 수정, 삭제 및 계정 비밀번호, 만료 날짜 변경과 같은 기능을 제공합니다.
명령어 | 설명 |
useradd | 사용자 계정 추가 |
userdel | 사용자 계정 삭제 |
usermod | 사용자 계정 수정 |
passwd | 사용자 계정 비밀번호 변경 |
chage | 사용자 계정 만료 날짜 설정 |
chsh | 사용자 계정 쉘 변경 |
groups | 사용자가 속한 그룹 목록 표시 |
id | 사용자 ID 및 그룹 ID 표시 |
su | 다른 사용자 계정으로 전환 |
sudo | root 권한으로 실행 |
[실습]
★ 홈 디렉토리 용량 변경 방법 명령어 표
▶ 파일 시스템 및 사용자 디스크 용량 확인, 큰 용량의 파일 생성, 파일 소유자 및 권한 변경, 파일 이동 등의 명령어입니다.
명령어 | 설명 |
df -h | 파일 시스템 용량 확인 |
quota | 사용자 디스크 용량 확인 |
fallocate -l 3.5G a2 | 더 큰 용량의 파일 생성 |
mv [파일] [이동 경로] | 파일 이동 |
du -sh ~ | 사용자 홈 디렉토리 용량 확인 |
df -h | 파일 시스템 용량 확인 |
[실습]
★ 사용자의 이름 변경 방법
▶ "k1" 사용자의 이름을 변경하고, 프로세스를 종료하고, 사용자를 삭제합니다. 마지막으로, 사용자 정보가 저장된 파일과 사용자의 로그인 정보를 확인하는 명령어입니다.
"chfn" 명령어를 사용하여 사용자 정보 변경
"ps -ef | grep k1" 명령어를 사용하여 프로세스 확인
"kill -9 [PID]" 명령어를 사용하여 프로세스 강제 종료
"userdel" 명령어를 사용하여 사용자 삭제
"/etc/passwd"와 "/etc/shadow" 파일 확인
"who -a" 명령어를 사용하여 사용자 로그인 확인
명령어 | 설명 |
chfn k1 | 사용자 정보를 변경하기 위한 편집기 실행 |
ps -ef | grep k1 | k1 사용자에 의해 실행된 모든 프로세스 확인 |
kill -9 [PID] | k1 사용자가 실행한 프로세스 중 강제 종료해야 할 프로세스 종료 (PID 찾아서 입력) |
userdel k1 | userdel -r k1 | k1 사용자 삭제 (-r 옵션을 사용하면 사용자의 홈 디렉토리도 함께 삭제) |
nl /etc/passwd | nl /etc/shadow | "k1" 사용자의 정보가 저장된 "/etc/passwd" 파일과 비밀번호가 저장된 "/etc/shadow" 파일을 확인 |
who -a | 현재 시스템에 로그인한 사용자를 확인 |
[실습]
★ 사용자 관리 및 시스템 설정 명령어
▶ 사용자 관리 및 시스템 설정에 관련된 명령어를 정리한 것으로, 로그인 설정 파일 수정부터 사용자 정보 확인, 터미널을 통한 메시지 전송까지 다양한 기능을 수행할 수 있습니다.
● vi /etc/login.defs
시스템 전반에 적용되는 로그인 설정 파일을 수정하기 위한 vi 편집기 실행
● who -a
현재 시스템에 로그인한 사용자와 관련된 정보를 확인
● echo "오늘은 금요일. 신나는 금요일" > /dev/pts/2"
k4 사용자가 로그인한 터미널 (tty)을 통해 메시지를 전송.
이 때, root 계정으로 전송해야 하며, 다른 설정 전에는 k4 사용자 계정이 root에게 전송할 수 없음.
● /etc/skel
/etc/skel 디렉토리는 새 사용자 계정을 생성할 때 해당 사용자의 홈 디렉토리에 복사되는 기본 설정 파일들이 저장되어 있습니다. 이 디렉토리의 파일들을 수정하면, 생성되는 새 사용자 계정의 기본 설정을 변경할 수 있습니다.
● 사용자 계정의 패스워드 설정
리눅스에서는 사용자 계정의 패스워드를 변경할 수 있습니다. 일반 사용자는 자신의 계정 패스워드만 변경할 수 있으며, 보안을 위해 일반적으로 긴 패스워드를 설정해야 합니다. 반면에 root 사용자는 모든 사용자의 패스워드를 변경할 수 있으며, 길이에 대한 제한이 없어 한 자리수의 패스워드도 설정할 수 있습니다.
명령어 | 설명 |
vi /etc/login.defs | 시스템 전반에 적용되는 로그인 설정 파일을 수정하기 위한 vi 편집기 실행 |
who -a | 현재 시스템에 로그인한 사용자와 관련된 정보를 확인 |
echo "메시지" > /dev/pts/번호 | 특정 사용자의 로그인한 터미널(tty)을 통해 메시지를 전송. 메시지를 전송할 때는 root 계정으로 전송해야 하며, 다른 설정 전에는 해당 사용자 계정이 root에게 전송할 수 없음 |
/etc/skel | 새 사용자 계정을 생성할 때 해당 사용자의 홈 디렉토리에 복사되는 기본 설정 파일들이 저장되어 있는 디렉토리. 이 디렉토리의 파일들을 수정하면, 생성되는 새 사용자 계정의 기본 설정을 변경할 수 있음 |
패스워드 설정 | 일반 사용자는 자신의 계정 패스워드만 변경할 수 있으며, 보안을 위해 일반적으로 긴 패스워드를 설정해야 함. root 사용자는 모든 사용자의 패스워드를 변경할 수 있으며, 길이에 대한 제한이 없어 한 자리수의 패스워드도 설정할 수 있음 |
[실습]
★ 리눅스 그룹 관리 명령어
▶ 시스템의 그룹 정보를 확인하고 새로운 그룹을 추가하는 방법을 익힐 수 있으며, 사용자를 특정 그룹에 추가하여 그룹 권한을 설정하는 명령어입니다.
명령어 | 설명 |
nl /etc/group | 시스템의 그룹 정보를 확인하기 위해 nl 명령어를 사용하여 /etc/group 파일을 출력 |
groupadd KING | "KING"이라는 그룹을 추가 |
id k4 | "k4" 사용자의 UID와 그룹 정보를 출력 |
id k3 | "k3" 사용자의 UID와 그룹 정보를 출력 |
groups k3 | "k3" 사용자가 속한 그룹 정보를 출력 |
groups k4 | "k4" 사용자가 속한 그룹 정보를 출력 |
usermod -G KING k3 | "k3" 사용자를 "KING" 그룹에 추가 |
usermod -G KING k4 | "k4" 사용자를 "KING" 그룹에 추가 |
groups k4 | "k4" 사용자가 속한 그룹 정보를 출력 |
groups k3 | "k3" 사용자가 속한 그룹 정보를 출력 |
tail -3 /etc/group | /etc/group 파일의 마지막 3개의 그룹 정보를 출력 |
nl | nl 명령어는 텍스트 파일의 각 줄에 번호를 매겨서 출력하는 명령어입니다. |
[실습]
★ 리눅스 디스크 용량 확보하기
▶ 디스크 용량을 확인하고, 그룹과 사용자에게 용량 제한을 설정하며, 큰 용량을 차지하는 파일을 찾아서 삭제하는 방법을 설명합니다. 또한, 사용자의 소프트 및 하드 제한과 유예 기간을 설정하는 명령어입니다.
명령어 | 설명 |
du | 현재 디렉토리의 디스크 사용량 확인 |
groupadd IT | "IT" 그룹 추가 |
id | 사용자 정보 출력 |
find / -size +500M -exec ls -Alh {} ; | 용량이 500M 이상인 파일 출력 |
rm -rf /home/k2/a2 | "/home/k2/a2" 디렉토리 및 하위 파일/디렉토리 삭제 |
df -h | 디스크 용량 확인 |
edquota -u it1 | "it1" 사용자의 디스크 용량 제한 설정 |
edquota -u it2 | "it2" 사용자의 디스크 용량 제한 설정 |
edquota -u it3 | "it3" 사용자의 디스크 용량 제한 설정 |
k5 ==> 20M 25M 7days | "k5" 사용자의 디스크 용량 제한 설정 (soft limit 20M, hard limit 25M, 유예 기간 7일) |
[실습]
★ 디스크 용량 제한 설정
▶ 리눅스에서 디스크 용량 제한을 위해 사용하는 "usrquota" 옵션을 "mount" 명령어로 추가하는 명령어입니다.
1. "/etc/fstab" 파일 편집 : "vi /etc/fstab" 명령어로 "/etc/fstab" 파일을 편집합니다.
2. "usrquota" 옵션 추가 : 편집한 "/etc/fstab" 파일에서 "/home" 디렉토리와 관련된 줄에서 "usrquota" 옵션을 추가합니다.
3. 변경사항 적용 : "mount -o remount /home" 명령어를 사용하여 변경된 "/etc/fstab" 설정을 적용합니다.
4. "usrquota" 옵션 확인 : "mount | grep /home" 명령어를 사용하여 "/home" 디렉토리와 관련된 설정을 확인하고, "usrquota" 옵션이 추가되었는지 확인합니다.
5. 유예 기간 확인 : "edquota -t" 명령어를 사용하여 디스크 용량 제한에 적용된 유예 기간을 확인합니다.
명령어 | 설명 |
vi /etc/fstab | "/etc/fstab" 파일을 편집합니다. |
(편집) | "/home" 디렉토리와 관련된 줄에서 "usrquota" 옵션을 추가합니다. |
mount -o remount /home | 변경된 "/etc/fstab" 설정을 적용합니다. |
mount | grep /home | "/home" 디렉토리와 관련된 설정을 확인하고, "usrquota" 옵션이 추가되었는지 확인합니다. |
edquota -t | 디스크 용량 제한에 적용된 유예 기간을 확인합니다. |
★ 리눅스파일 권한 설정
(chown,chgrp,chmod 명령어)
▶ chown, chgrp, chmod 명령어를 사용하여 파일이나 디렉토리의 권한을 설정하거나 변경할 수 있습니다.
정리
리눅스에서는 파일 및 디렉토리의 소유자, 그룹, 권한을 chown, chgrp, chmod 명령어를 통해 관리합니다. 이를 통해 시스템의 보안을 유지하고, 사용자의 접근을 제어할 수 있습니다. 또한, /etc/skel 디렉토리를 통해 새 사용자의 기본 설정을 관리하고, 사용자 패스워드 설정을 통해 계정의 보안을 강화할 수 있습니다.
명령어 | 설명 |
chown [옵션] [소유자:그룹] 파일명 | 파일 또는 디렉토리의 소유자 또는 그룹을 변경합니다. |
chgrp [옵션] 그룹명 파일명 | 파일 또는 디렉토리의 그룹을 변경합니다. |
chmod [옵션] 모드 파일명 | 파일 또는 디렉토리에 대한 권한을 변경합니다. |
● chown 명령어
▶ chown 명령어는 파일 또는 디렉토리의 소유자를 변경합니다.
사용법: chown [옵션] [소유자:그룹] 파일명
예시: chown sung:STAR a1
● chgrp 명령어
▶ chgrp 명령어는 파일 또는 디렉토리의 그룹을 변경합니다.
사용법: chgrp [옵션] 그룹명 파일명
예시: chgrp STAR d1
● chmod 명령어
▶ chmod 명령어는 파일 또는 디렉토리의 권한을 변경합니다.
사용법: chmod [옵션] 모드 파일명
예시: chmod 700 /y1
★ 리눅스파일 권한 설정
(숫자모드, 기호모드)
▶숫자모드,기호모드는 파일이나 디렉토리의 권한을 설정할 때 사용하는 방법 중 두 가지 방법입니다.
● 숫자 모드는 권한을 3자리 숫자로 표시하는 방식입니다. 각 자리는 다음과 같은 의미를 가집니다.
첫 번째 자리: 소유자 권한
두 번째 자리: 그룹 권한
세 번째 자리: 다른 사용자 권한
● 기호 모드는 권한을 기호를 사용하여 표시하는 방식입니다. 기호 모드에서는 권한의 종류를 나타내는 문자와 권한을 설정하거나 제거하는 문자를 사용합니다.
권한의 종류를 나타내는 문자: u(소유자), g(그룹), o(다른 사용자), a(모든 사용자)
권한을 설정하거나 제거하는 문자: +(추가), -(제거), =(대체)
명령어 | 설명 |
숫자 모드 | 권한을 3자리 숫자로 표시하는 방식입니다. 각 자리는 읽기, 쓰기, 실행 권한을 나타내며, 4, 2, 1을 더해서 권한을 설정합니다. |
기호 모드 | 권한을 기호를 사용하여 설정하는 방식입니다. u(소유자), g(그룹), o(다른 사용자), a(모든 사용자)에 대한 권한을 설정할 수 있으며, +, -, =를 사용하여 권한을 추가, 제거, 설정할 수 있습니다. |
숫자 | 권한 | R읽기(4) | W쓰기(2) | X실행(1) |
0 | 아무 권한도 없음 (---) | - | - | - |
1 | 실행 권한만 있음 (--x) | - | - | O |
2 | 쓰기 권한만 있음 (-w-) | - | O | - |
3 | 쓰기와 실행 권한이 모두 있음 (-wx) | - | O | O |
4 | 읽기 권한만 있음 (r--) | O | - | - |
5 | 읽기와 실행 권한이 모두 있음 (r-x) | O | - | O |
6 | 읽기와 쓰기 권한이 모두 있음 (rw-) | O | O | - |
7 | 읽기, 쓰기, 실행 권한이 모두 있음 (rwx) | O | O | O |
★ 리눅스 권한 및 환경변수 설정
▶ 파일과 디렉토리의 기본 권한과 umask 설정 방법, PS1 리눅스 환경 변수 설정 방법에 대한 간략한 설명
● 파일과 디렉토리의 기본 권한
새로운 파일이나 디렉토리를 생성할 때, 기본적으로 다음의 권한이 설정됩니다.
파일: 666 (rw-rw-rw-)
디렉토리: 777 (rwxrwxrwx)
하지만 실제 파일이나 디렉토리를 생성하면 umask 값에 따라 권한이 제한됩니다. 예를 들어, umask 값이 022인 경우, 새 파일의 권한은 644 (rw-r--r--)가 되고, 새 디렉토리의 권한은 755 (rwxr-xr-x)가 됩니다.
● umask
umask는 유닉스와 리눅스에서 파일이나 디렉토리를 생성할 때 기본적으로 적용되는 권한 설정을 제어하는 명령어입니다. umask 값을 설정하면, 새로운 파일이나 디렉토리를 생성할 때 이 값에 따라 기본 권한이 설정됩니다.
umask의 기본 값은 보통 002 또는 022입니다. 이는 사용자가 속한 그룹의 사용자들이나 다른 사용자들이 새로 생성된 파일이나 디렉토리를 수정하는 것을 방지하기 위한 것입니다.
● umask 설정 방법
umask 값을 변경하려면, umask 명령어에 원하는 값을 인자로 주면 됩니다. 예를 들어, umask 값을 002로 설정하려면 다음과 같이 명령을 내리면 됩니다.
이렇게 설정하면, 이후에 생성하는 파일의 기본 권한은 664 (rw-rw-r--)가 되고, 디렉토리의 기본 권한은 775 (rwxrwxr-x)가 됩니다.
● umask 값이 022인 이유
사용자가 생성한 파일이나 디렉토리에 대해 그룹 사용자나 다른 사용자가 쓰기 권한을 가지지 못하게 하기 위함입니다. 이렇게 하면, 사용자가 생성한 파일이나 디렉토리를 다른 사람이 변경하는 것을 방지할 수 있습니다.
● PS1 리눅스 환경변수 설정
PS1에는 변수를 지정하여 원하는 형식으로 프롬프트를 변경할 수 있습니다.
일반적으로 사용되는 PS1 변수의 기본 값은 "\u@\h:\w$"입니다.
기호 설명 \u 사용자 이름 \h 호스트 이름 \w 현재 작업 디렉토리 ! 현재 작업 중인 명령어의 번호 $ 프롬프트 종류 ($는 일반 사용자, #는 root 사용자)
예시)
PS1='\w> '
현재 작업 디렉토리만 나타내는 형식
PS1='[! \h@ HELLO \u \w]\n \$ '
현재 명령어 번호, 호스트 이름, 사용자 이름, 현재 작업 디렉토리를 나타내는 형식
PS1을 설정하기 위해서는 터미널 창에서 다음과 같이 입력합니다.
PS1='설정할 형식'
표로 정리하면 다음과 같습니다.
[실습]
★ Mysql 사용하기
[명령어]
#mysql
mysql -u root -p
mysql> use mysql
mysql> alter user root@localhost identified \
-> with mysql_native_password by 'jj';
Query OK, 0 rows affected (0.00 sec)
mysql> create user mysam@localhost identified \
-> with mysql_native_password by 'j';
Query OK, 0 rows affected (0.01 sec)
mysql> grant all privileges on samDB.* to mysam@localhost;
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.05 sec)
create database samDB;
use samDB;
show tables;
create table Man(
->name char(20),
->age(int);
insert into Man valuse("손흥민", 32);
insert into Man valuse("이강인", 23);
select * from Man;
[실습]