먼저 어떤 OS를 쓰는지 확인하는 방법은 cat /etc/os-release를 통해 확인할 수 있다.
하드웨어 < 리눅스커널(메모리, 파일시스템, 장치관리) < 쉘(명령해석, 스크립트작성, .sh)
리눅스 실행시 bash를 기본으로 실행하는 데 너무 복잡하고 어려워서 systemCtl을 주로 사용함
chmod : 사용자 변경하기
su(switch user) : 현재 계정을 로그아웃하지 않고 다른계정으로 전환하는 명령어. 비밀번호 입력이 필요하다.
sudo(superuser do) : 현재계정에서 root권한을 이용하여 명령어를 실행한다. 관리자권한으로 실행
사용자의 정보는 /etc/passwd에 파일로 다 저장되어있다. 아래의 형식으로 사용자가 저장되어 있다.
사용자의 패스워드는 /etc/shadow에 있음
*은 따로 지정안함
ubuntu:pw(문자열):19590:0:9999:7: : :
// 유저명 : pw(해시코드) : 최종변경일 : 암호를 변경할 수 있는 최소 날짜(0이면 언제든 가능)
: 암호만료기간 : 암호만료되기 7일전에 경고해줌 : 만료후 며칠까지는 로그인가능 : 만료되는 날짜
: ?(flag)
해시코드: 암호화작업(똑같은 값을 넣으면 똑같은 결과가 나옴)
그래서 요즘에는 해킹이 되기때문에 salt값을 추가해서 다른값이 나오도록 설정한다. salt값은 시간값으로 설정됨
sudo useradd user1
sudo nano /etc/passwd로 확인가능
sudo useradd -u 5000 -m -d /home/usertest user2
-> UID가 5000번이고 홈디렉터리를 지정해줄수있다. 이때 디렉터리가 없다면 -m으로 생성한다.
(다른방법) sudo adduser user3
: 이런저런 정보까지 설정함(비밀번호, 풀네임, 룸번호, 전화번호~~)
sudo passwd 유저명
tail -3 /etc/shadow : 마지막 3개 출력
useradd -D 기본값 출력
확인방법: sudo nano /etc/login.defs
sudoers는 1번 유저에게 root관리자 권한을 준다.
sudo는 root관리자만 가능하다.
그래서 ubuntu유저로 sudo를 쓰려고 하면 실행이 안됨
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를 사용한다.
OS는 두가지로 나눌수있다.
GUI / CLI
Graphic User Interface / Commend Line Interface
Desktop / Server 환경
물리계층
데이터계층 - MAC Adress: 기기마다의 번호
네트워크계층 - IP Adress: 집의 주소
전송계층 - TCP UDP: 통신방법
TCP: 안전하지만 느림(양쪽에서 통신이 되면 데이터를 보냄)
UDP: 빠름(그냥 데이터를 보냄)
- 기밀성 - 암호화
- 무결성 - 변조되면 안됨
- 가용성 - 복호화가능
서버와 클라이언트를 1대1로 매칭하고 클라이언트에서 필요한 정보를 버퍼에 담아서 서버로 보냄
서버는 받은 요청을 처리해서 버퍼에 담아 클라이언트에 보내줌(flush)
소켓에는 stateful, stateless이 있다.
stateful은 계속연결(게임, 채팅)
stateless는 한번 요청받으면 소켓을 끊어버림(홈페이지, 인터넷, 데이터베이스)