[생활코딩] Linux 기초 정리 (3) - permission부터 네트워크, 서버까지
본 글은 “생활 코딩 - Linux” 강의 내용을 요약 및 정리한 글입니다.
리눅스의 기초를 잡기 위해 개인공부 목적으로 정리했으며, 자세한 사항은 생활코딩 - Linux로 참고하시길 바랍니다.
사용자
다중사용자
id
: identify의 줄임말uid
: user의 idgid
: group의 id
who
: 누가 접속했는지 알려줌
관리자와 일반 관리자
sudo
: substitute user do의 약자로 다른 사용자의 권한으로 명령을 이행하라의 뜻- super(root) user VS user의 차이점
- 슈퍼유저는 root란 이름이 나온다.
$
는 일반 유저를 뜻한다.#
는 슈퍼 유저를 뜻한다.su
: change user ID or become superusersu [options] [username]
su - root
: 슈퍼 유저로 변환- 우분투에서는 root를 잠가놨다
sudo passwd -u root
로 lock을 풀어준다. (u = unlock)-u
는 unlock을 뜻함- 초기 비밀번호 설정은
sudo passwd
를 입력하면 됨
sudo passwd -l root
를 하면 root를 다시 lock 건다는 의미 (l = lock)
~
: 현재 사용자의 홈 디렉토리
사용자의 추가
sudo useradd -m [사용자]
: 사용자 생성
su - duru
하면 안 들어가진다. 처음에 비밀번호를 생성해 줘야 한다.
- 이제 이 duru 사용자도 sudo 권한을 주려고 한다.
exit
: 빠져나오기sudo usermod -a -G sudo duru
: duru에게 sudo 권한 주기
권한 (permission)
권한을 지정하다
: 사용자가 파일과 디렉토리에 대해서 어떤 일을 할 수 있게 하거나 할 수 없게 하는 것- Read & Write & Excute 에 대해
echo
: 뒤에 오는 문자를 표준 출력해줌. 화면에 print 한다.
echo 'hi' > perm.txt
: hi라는 명령어를 redirection해서 perm.txt에 추가하여 저장한다.
- 파일 유형 종류
d
: 디렉토리-
: 파일l
: 링크 파일b
: 블록파일
- 권한
r
: 읽기w
: 쓰기x
: 실행
chmod
- change mode의 줄임말
chmod [options] [mode] [file_name]
레퍼런스 | 클래스 | 설명 |
---|---|---|
u | 사용자 | 파일의 소유자 |
g | 그룹 | 그 파일의 그룹 멤버인 사용자 |
o | 다른 사람들 | 그 파일의 소유자나 혹은 그 그룹의 멤버가 아닌 사용자 |
a | 모든 사람 | 위의 셋 모두, “ugo”와 같다 |
연산자 | 설명 |
---|---|
+ | 지정된 모드들은 지정된 클래스들에 더한다 |
- | 지정된 클래스들로부터 지정된 모드들은 지운다 |
= | 지정된 클래스들을 위해서 지정된 모드들이 정확한 모드들로 만들어지게 된다 |
모드 | 이름 | 설명 |
---|---|---|
r | 읽기 (read) | 파일을 읽거나 디렉터리 안 내용물의 리스트를 보여준다 |
w | 쓰기 (write) | 파일이나 디렉터리에 쓴다 |
x | 실행하기 (excute) | 파일을 실행하거나 디렉터리 트리로 되돌아간다 |
# | Sum | rwx | Permission |
---|---|---|---|
7 | 4(r) + 2(w) + 1(x) | rwx | read, write and execute |
6 | 4(r) + 2(w) | rw- | read and write |
5 | 4(r) + 1(x) | r-x | read and execute |
4 | 4(r) | r– | read only |
3 | 2(w) + 1(x) | -wx | write and execute |
2 | 2(w) | -w- | write only |
1 | 1(x) | –x | execute only |
0 | 0 | — | none |
chmod o-r perm.txt
: others의 read 권한을 빼주겠다.(-)
chmod o+w perm.txt
: others의 write 권한을 주겠다.(+)
chmod u-r perm.txt
: user의 read 권한을 빼겠다.(-)
chmod a=rwx perm.txt
를 하면 모든 권한자에게 rwx를 부여한다.
excute
chmod u+x hi-machine.sh
: user에게 실행 권한(x)를 준다.#!/bin/bash
이 코드가 있다면 운영체제는./hi-machine.sh
를 실행시켰을 때 제일 먼저hi.achine.sh
이 현재 사용자에게 실행가능한지 본다.- others에게도 실행 권한을 주기 위해선
chmod o+x hi-machine.sh
를 한다.
그룹 (group)
- group : 파일과 디렉토리를 여러 사용자들이 공동으로 관리할 수 있는 방법
인터넷
- request한 나의 컴퓨터가 client이고, request를 받아서 response 해주는 컴퓨터가 server이다.
- cleint는 server에게 요청을 한다. server는 client에게 응답한다.
DNS
는 이 세상의 모든 domain이 각각 어떤 ip인지 아는 거대한 서버이다.ip addr
를 치면 현재 자신의 ip를 알려준다. (이 컴퓨터의 실제 부여된 ip)
curl ipinfo.io/ip
를 치면 ip를 알려준다. (온라인 입장에서 결과적인 ip가 뭔지 알려준다.)
apache
- client로 사용하기 위해서는 web browser가 있어야한다.
- 주소란에 google.com/index.html 을 입력하면
google.com에 request를 보낸다. 이때 웹 서버는 요청이 들어오면 요청을 분석한다.
- 웹 브라우저에 해당하는 제품 : firefox, ie, chrome 등
- 웹 서버에 속하는 제품 : Apache, nginx, IIS 등
- apache 설치
sudo apt-get update
sudo apt-get apache2
sudo service apache2 start
를 통해 웹 서버를 켜 준다.
elinks
는 쉘에서 웹브라우징을 할 수 있게 도와주는 프로그램- elinks 설치 :
sudo apt-get install elinks
- elinks 설치 :
- unix 계열에서의 설정에 대한 것은 /etc에 저장되어 있다.
cd /etc/apache2
로 경로 변경 (여기에 아파치에 대한 설정 파일이 있다.)
- 그 중 apache2.conf를 확인하면
IncludeOptional sites-enabled/\*.conf
가 있는데sites-enabled
라는 디렉토리 안의 모든 .conf 파일을 읽고 사용한다는 것이다. /var/www/html
을 사용하는 이유는/etc/apache2/sites-enabled/000-default.conf
에 설정이/var/www/html
로 되어있기 때문이다.- 어떤 서버를 설치하건 /etc 밑에 설정 파일이 있고 그 곳의 설정 파일을 바꾸면 동작하는 방식이 달라진다.
/etc/apache2/sites-enabled/000-default.conf
를 확인하면
ErrorLog ${APACHE\_LOG\_DIR}/error.log
CustomLog ${APACHE\_LOG\_DIR}/access.log combined
${APACHE\_LOG\_DIR}
는 아파치 웹 서버가 동작할 때 로그를 확인하기 위해 특정 디렉토리 아래의 error.log 파일과 access.log 파일에 기록하겠다 라는 것이다.${APACHE\_LOG\_DIR}
는 /var/log/apache2/ 이다. 해당 디렉토리를 보면 access.log와 error.log가 존재한다.- 누군가 웹 서버에 접속할 때 마다 끝에 접속한 사람의 정보가 추가가 된다.
- 실시간으로 확인하기 위해서는 tail을 사용한다.
tail -f /var/log/apache2/access.log
: 실시간으로 이 파일의 끝에 있는 정보가 나타난다.
- elinks를 통해 들어가면 위의 tail이 작동해 access 로그가 찍힌다. curl 역시 마찬가지로 접속해도 새로운 access 로그가 찍힌다. (200)
- 없는 파일에 접속하면 접속은 확인이 되지만 상태(404)도 같이 나타난다. 이것이 로그를 찾는 것이다. 대부분의 서버 프로그램이 가지는 동작이다. 서버의 로그가 어디에 있을까에 대해 알아야한다.
SSH
- 원격제어는 원격에 있는 컴퓨터를 내 앞에 있는 것처럼 다룰 수 있다.
sudo apt-get install openssh-server
: 다른 컴퓨터가 내 컴퓨터에 접속할 때 사용sudo aptget install openssh-client
: 다른 컴퓨터로 원격 접속 할 때 사용ssh poeun@172.29.229.202
: 원격 접속할 시- 다른 컴퓨터임에도 불구하고 원격으로 다른 컴퓨터에 접속할 수 있다. 이 컴퓨터로 명령을 내리면 ssh로 접속한 컴퓨터를 대상으로 실행되게 된다.
댓글남기기