#1 교육 리뷰
오늘의 핵심 주제는 관리자로서 사용자, 권환(소유권, 허가권)을 관리하기를 학습하였습니다.
그리고 Ubuntu_Linux를 초기상태로 설치해서 이미지 내보내기 -> 가져오기
기본 패키지 설정 + 환경설정 후 내보내기 -> 가져오기
#2 사용자 관리
system을 사용할 수 있는 권한
시스템에서 일정공간을 할당 받아 계정이 허락하는 권한을 행사할 수 있다.
adduser k1 : k1 user 를 생성하기
passwd k1 : k1 사용자의 비밀번호 지정
ls /home : 생성된 user 보기
who : login 중인 모든 사용자 확인
whoami : 나는 누구인가?
w : login한 user가 뭐하는 중인지?
finger k3 : k3 사용자의 정보 확인 // finger 명령어가 없으면 yum -y install finger 해서 설치 후 실행
chfn k3 : k3 사용자의 정보 변경 // /etc/passwd/ 파일이 변경됨
chage -l k3 : 사용자 기타정보 확인 shadow 파일 관련
tail -5 /etc/passwd : 밑에서 5줄 사용자 목록 확인
usermod -L ace : ace user에게 LOCK을 건다
usermod -U ace : LOCK 해제
useradd -D : default 값 보기
Group)
groupadd BC : BC group 생성하기
nl /etc/group : 생성 확인
* 위와 같이 group 생성 확인을 해보면 이전에 생성했던 user도 생성시 자동으로 group이 지정됩니다.
groups k1 : k1계정이 속한 group 확인
단, BC 는 user로 생성이 아닌 group으로 생성하여 확인 불가
usermod -G BC k1 : k1계정의 그룹변경. /etc/group 파일을직접 편집해도 가능합니다.
groups k1 : 확인해보기
groupdel BC : BC group 삭제
사용자 용량제한)
버전마다 용량제한 방법이 다르므로 주의해서 아래와 같이 순서대로 진행해야 한다.
한번에 되지 않을때는 quotaon, quotaoff 를 하고 다시 시도.
quotaon
quoataoff
vi /etc/fstab // vi에 들어가서 /home 으로 찾으면 찾기 쉽습니다. defaults 뒤에 ,usrquota 입력 후 저장
mount -o remount /home
mount | grep /home
quotaoff -avug
quotacheck -avugm
repquota -a
quotaon -avug
edquota -t : 유예기간 설정하기
edquota -u ace : soft : 50M, hard : 60M로 설정 (50000, 60000)
repquota -a : 설정 확인하기
edquota -p ace j : ace를 j에 용량 복사하기 // <source-user> <target-users>..
소유권과 허가권)
보안과 관련하여 매우 중요한 부분이다.
어떻게 설정할 것인가는 신중히 생각하여 소유주를 변경하거나 소유그룹을 변경해서 권한을 바꿔 주어야 한다.
권한읽기
기호 | 숫자 | 의미 |
r | 2 ^ 2 = 4 | read only 읽기 권한. |
w | 2 ^ 1 = 2 | write 권한 생성, 삭제, 수정할 수 있는 권한 |
x | 2 ^ 0 = 1 | file execute 실행권한, directory는 진입권한 |
- | 0 | 권한 없음 |
3칸씩 끊어 읽어햐 하며, 읽어보면 .bashrc와 .profile 은 644
// .bash_history와 .mysql_history와 .viminfo는 600
// .local과 .ssh와 snap 은 700
// d5는 755
좀 더 이해가 되도록 아래 예시 표를 참고해주세요.
권한자 | owner | group | other |
d | r w x | r w x | r - x |
directory | 4+2+1=7 | 4+2+1=7 | 4+0+1=5 |
소유권 변경)
디렉토리의 x는 집어넣을 수 있는 권한
디렉토리의 r은 둘러볼 수 있는 권한
디렉토리의 w는 만들고, 수정, 삭제할 수 있는 권한
먼저 c1, c2, c3 파일을 생성하였습니다.
touch c1
cal > c2
date >> c3
c2파일의 소유주에게 실행 권한 추가
chmod u=+x c2
c1 파일의 user, group, other 에세 실행 권한 추가
chmod +x c1
c2 파일의 read 권한 해제
chmod -r c2
c3 파일의 권한을 744로 변경
chmod 744 c3
sam과 sung useradd를 하고 아래와 같이 c1의 소유권자를 sam, 그룹소유권자를 sung으로 변경
chown sam:sung c1
umask)
umask란 사용자고 파일 생성시 자동으로 권한을 조정해 주는 값을 말합니다.
umask
umask -S : 현재 umask 값 보기
umask default 값 | |
root | 0022 |
user | 0002 |
root에서 directory 를 만들 때 값 | |
전체권한 | 7 7 7 |
umask | 0 2 2 |
- | |
7 5 5 | |
root에서 file을 만들 때 | |
directory | 7 5 5 |
umaks | 1 1 1 |
- | |
6 4 4 |
umask 733 : 733으로 umask 값 변경
set uid : root는 당연히 passwd에 대한쓰기 권한을 가집니다. 또한 일반 사용자는 다른 사람의 비밀번호를 바꿀 수 없게 해야하므로 read 권한만 가져야 합니다. 하지만 이렇게 하면 일반 사용자도 자신의 비밀번호를 바꿀 수 있어야 한다는 문제가 발생합니다. 그래서 set uid 를 사용하면 잠시동안 root 아이디가 되어 자신의 passwd를 바꿀 수 있습니다.
s로 설정된 permission, 파일의 실행자와는 상관없이 원래 파일의 소유자 권한으로 동작합니다. /usr/bin/passwd 에서
-rwsr-xr-x 보면 권한이 이렇게 설정되어있습니다. 일반사용자가 자신의 password 를 변경하려고 passwd 명령을 내리면 그 순간 잠간 root의 권한으로 실행되는 것을 의미합니다.
ll /usr/bin/passwd
sticky bit : sticky bit 로 지정된 폴더에 있는 파일들은 주인과 관리자만 지울 수 있습니다.
예를 들어 /google 이라는 폴더에 snn 이라는 파일이 있습니다. google의 권한은 707이고, snn의 권한은 700 이라 하면 보통 snn을 지울 수 없다고 생각하기 쉽지만, 파일보다 폴더에 권한의 우선권이 있기 때문에 다른 사용자도 snn 파일을 지울 수 있습니다. 그런 경우를 방지하기 위하여 sticky bit를 사용합니다.
chmod 1777 c3 : 3자리 권한 앞에 1을 붙이며 이 권한은 폴더에만 가능합니다.
l
4000번 이상의소유권을 갖고 있는 파일을 보기
find / -perm -4000 -exec ls -al {} \;
파일 속성 변경)
cal > a
date > b
lsattr
chattr +i a
chattr +a b
lsattr
rm a
rm b
// error 가 발생합니다.
who >> a
// error 가 발생합니다.
who >> b
// ok
chattr -i a
chattr -a b
lsattr
// 다시 변경 완료
#3 DataBase server
root에서 mysql 관리 및 사용)
adduser ace
passwd ace
apt -y install mysql-server : mysql 설치
mysql : 접속
mysql> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2023-04-28 09:03:49 |
+---------------------+
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
use mysql
mysql> show tables;
+------------------------------------------------------+
| Tables_in_mysql |
+------------------------------------------------------+
| columns_priv |
| component |
| db |
| default_roles |
| engine_cost |
| func |
| general_log |
| global_grants |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| password_history |
| plugin |
| procs_priv |
| proxies_priv |
| replication_asynchronous_connection_failover |
| replication_asynchronous_connection_failover_managed |
| replication_group_configuration_version |
| replication_group_member_actions |
| role_edges |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+------------------------------------------------------+
mysql> select user, host from user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
mysql> alter user 'root'@'localhost' identified
-> with mysql_native_password by 'jj';
mysql> flush privileges;
mysql> create user myace@localhost identified
-> with mysql_native_password by 'jj';
mysql> grant all privileges on aceDB.* to myace@localhost;
mysql> select user, host from user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| debian-sys-maint | localhost |
| myace | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
mysql> select user, db from db;
+---------------+--------------------+
| user | db |
+---------------+--------------------+
| myace | aceDB |
| mysql.session | performance_schema |
| mysql.sys | sys |
+---------------+--------------------+
mysql> flush privileges;
사용자가 mysql 계정 사용하기)
Duplicate Session 으로 ace 사용자 실행
$ mysql -u myace -p
password : jj 입력 후 엔터
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| performance_schema |
+--------------------+
mysql> create database aceDB;
mysql> use aceDB;
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql> create table Man(
-> name char(20),
-> age int);
mysql> insert into Man values("손흥민", 32);
mysql> insert into Man values("이강인", 22);
mysql> select * from Man;
+-----------+------+
| name | age |
+-----------+------+
| 손흥민 | 32 |
| 이강인 | 22 |
+-----------+------+
#4 PS1 (프롬프트 변경하기)
vi /etc/skel/.bashrc
로 들어가서 아래와 같이 기존 PS1은 에러 방지를 위해 # 으로 묶어두고 새롭게 변경할 프롬프트 명령어 입력
작성 후 :wq (저장하고 나가기) 입력 후 터미널로 와서 아래 명령어를 입력하면 적용됩니다.
source /etc/skel/.bashrc
'[Naver Cloud Camp 7] 교육 정리' 카테고리의 다른 글
네이버 클라우드 캠프 7일차 230502 (0) | 2023.05.02 |
---|---|
네이버 클라우드 캠프 6일차 230501 (1) | 2023.05.01 |
네이버 클라우드 캠프 4일차 230427 (0) | 2023.04.27 |
네이버 클라우드 캠프 3일차 230426 (0) | 2023.04.26 |
네이버 클라우드 캠프 2일차 230425 (0) | 2023.04.25 |