Linux 수업(3)

신동욱·2023년 10월 17일
0

리눅스

목록 보기
3/6

📚 LINUX

📍 Ubuntu 와 CentOS

CentOS

먼저 어떤 OS를 쓰는지 확인하는 방법은 cat /etc/os-release를 통해 확인할 수 있다.

  • yum 명령어를 통해 명령가능
  • 업데이트를 굳이 해줄 필요는 없다.

Ubuntu

  • 실행 시 업데이트를 해줘야함
  • apt 명령어를 통해 명령가능

📍 리눅스 배포판

  • slackWare: WindowOs와 유사
    //장:패키지안에 필요한 모든 파일을 포함
    //단:패키지 의존성을 수동으로 관리
  • redHat, Debian: MacOs와 유사
    //장:자동으로 패키지 의존성관리
    ex) 롤을 설치할때 필요한 것들을 알아서 설치해줌
    //단:파일이 흩어져있어 사용자가 파악하기 어려움

📍 VirtualBox

  • Linux : 커널
  • GNU/Linux : OS

하드웨어 < 리눅스커널(메모리, 파일시스템, 장치관리) < 쉘(명령해석, 스크립트작성, .sh)

리눅스 실행시 bash를 기본으로 실행하는 데 너무 복잡하고 어려워서 systemCtl을 주로 사용함

📌사용하기

chmod : 사용자 변경하기

su(switch user) : 현재 계정을 로그아웃하지 않고 다른계정으로 전환하는 명령어. 비밀번호 입력이 필요하다.
sudo(superuser do) : 현재계정에서 root권한을 이용하여 명령어를 실행한다. 관리자권한으로 실행

📌사용자 관리하는 법

사용자의 정보는 /etc/passwd에 파일로 다 저장되어있다. 아래의 형식으로 사용자가 저장되어 있다.

  • ubuntu:x:숫자:숫자:ubuntu,,,:/home/ubuntu:/bin/bash
    // 유저명 : (원래는)패스워드, (지금은 공백)x : UID(시스템이 인식하는 유저명) : GID(시스템이 인식하는 그룹ID) : 설명란 : 홈디렉터리(바탕화면) : 로그인쉘(명령어를 해석하는 방법)

사용자의 패스워드는 /etc/shadow에 있음

  • *은 따로 지정안함

  • ubuntu:pw(문자열):19590:0:9999:7: : :

// 유저명 : pw(해시코드) : 최종변경일 : 암호를 변경할 수 있는 최소 날짜(0이면 언제든 가능)
: 암호만료기간 : 암호만료되기 7일전에 경고해줌 : 만료후 며칠까지는 로그인가능 : 만료되는 날짜
: ?(flag)

해시코드: 암호화작업(똑같은 값을 넣으면 똑같은 결과가 나옴)
그래서 요즘에는 해킹이 되기때문에 salt값을 추가해서 다른값이 나오도록 설정한다. salt값은 시간값으로 설정됨

📌사용자계정 생성하는 법

  1. sudo useradd user1

  2. sudo nano /etc/passwd로 확인가능

  3. sudo useradd -u 5000 -m -d /home/usertest user2
    -> UID가 5000번이고 홈디렉터리를 지정해줄수있다. 이때 디렉터리가 없다면 -m으로 생성한다.

  4. (다른방법) sudo adduser user3
    : 이런저런 정보까지 설정함(비밀번호, 풀네임, 룸번호, 전화번호~~)

📌유저 패스워드 변경하기

  1. sudo passwd 유저명

  2. tail -3 /etc/shadow : 마지막 3개 출력

  3. useradd -D 기본값 출력
    확인방법: sudo nano /etc/login.defs

  4. sudoers는 1번 유저에게 root관리자 권한을 준다.

  5. sudo는 root관리자만 가능하다.
    그래서 ubuntu유저로 sudo를 쓰려고 하면 실행이 안됨

📌사용자 삭제하기

  1. sudo userdel -rf 유저명

📌사용자 수정하기

usermod 옵션 유저명
-u : 사용자 uid 변경
-g : 사용자 그룹 변경
-d : 사용자 홈 디렉토리 변경

📌그룹 관리하기

그룹정보를 가지고있는 파일 : /etc/group
그룹 패스워드 위치 : /etc/gshadow
그룹 생성하기 : sudo groupadd group1, sudo addgroup group2
-g : 그룹 gid 지정
-o : gid 중복허용

그룹이 필요한 이유: 유저 단위로 권한을 주려면 너무 복잡하고 귀찮음
그래서 그룹단위로 줘버리면 많은 유저를 한번에 권한처리가 가능하다.

(정보)
chown root aaa.txt로 파일의 소유자를 변경할 수 있다.
chgrp root aaa.txt는 파일의 그룹를 변경할 수 있다.
폴더에서 그룹의 권한을 바꿔줄 때 안에 있는 파일이나 폴더도 같이 바꿔줘야하기 때문에 sudo chgrp -R root anything를 사용한다.

📌 실습

MariaDB 실습
  1. APT 명령어로 MariaDB 패키지 설치
    apt install mariadb-server
  2. MariaDB 실행하기(systemctl)
    systemctl start mariadb
    mysql -u root
  3. 데이터베이스 생성하기
    create database st_db;
  4. 테이블 생성하기
    use st_db;
    create table st_info( ~~);
  5. 테이블 확인하기
    explain st_info;
  6. 권한주기
    grant all privileges on st_db.* to ubuntu@localhost identified by '1234';
  7. PK주기
    alter table st_info add constraint pk_stinfo primary key (ST_ID);
  8. Value 넣기
    insert into st_info values (2023, 'kim', 'programing');

📍 알아두면 좋은 지식

OS는 두가지로 나눌수있다.
GUI / CLI
Graphic User Interface / Commend Line Interface
Desktop / Server 환경

OSI 7계층

물리계층
데이터계층 - MAC Adress: 기기마다의 번호
네트워크계층 - IP Adress: 집의 주소
전송계층 - TCP UDP: 통신방법
TCP: 안전하지만 느림(양쪽에서 통신이 되면 데이터를 보냄)
UDP: 빠름(그냥 데이터를 보냄)

통신간 중요사항(CIA)

  1. 기밀성 - 암호화
  2. 무결성 - 변조되면 안됨
  3. 가용성 - 복호화가능

서버 소켓 클라이언트 소켓

서버와 클라이언트를 1대1로 매칭하고 클라이언트에서 필요한 정보를 버퍼에 담아서 서버로 보냄
서버는 받은 요청을 처리해서 버퍼에 담아 클라이언트에 보내줌(flush)

소켓에는 stateful, stateless이 있다.
stateful은 계속연결(게임, 채팅)
stateless는 한번 요청받으면 소켓을 끊어버림(홈페이지, 인터넷, 데이터베이스)

profile
일단 고

0개의 댓글