매거진 Linux Skill

Linux Fundamental #1

Linux Basic

by Henry

인프라 관련 업무를 하면서 리눅스를 다루지 못한다는 건 말이 안 된다...

이번에 좋은 기회가 있어서, 5일간 Linux에 대해 기초적인 내용에 대해 배웠다.

배우면서 정말 많은 도움이 된 것 같고, 리눅스라는 OS 운영체제에 대해 좀 더 알게 되었다.


많은 사람들이 도움이 되었으면 해서 블로그에 내용을 정리해서 공유하고자 한다.

리눅스를 배우기 위해서 준비하는 사람들이 내 글을 보고 많은 도움이 되었으면 좋겠다.


정보는 공유할수록 그 가치가 높아진다.

sticker sticker


Linux의 경우 터미널을 통해서 대부분 모든 걸 한다. 그렇다고 터미널만 있느냐? 그건 아니다.

Window나 Mac OS처럼 화면이 존재한다.(GUI 화면 : GNOME)

그러나 대부분 Linux사용자는 GUI를 통하여 사용하지 않는다. 이유는 터미널 화면에서 모든 걸 다 할 수 있기도 하고, 일반 사용자보다는 시스템 관리자를 위한 OS여서, 좀 더 빠르고 안정적인 시스템 User에게 제공해야 하기 때문에 PC나 Server의 리소스를 많이 잡아먹는 GUI를 사용하지 않고, 그 리소스를 시스템을 관리하는 것에 투자하기 위함이다.


1. Linux Login 로그인(인증)

system <- account(계정)/password 인증 접속 login이 허용된 후 여러 가지 명령을 지원 : $으로 표시된다. $으로 표시되면 user로 로그인한 것이고 #으로 표시되면 root 권한이다.


리눅스 로그인

User Login 시 [Login user name@Server host Directory]$

Root Login 시 [Login user name@Server host Directory]#

Linux User Login

- Linux

ssh servername -------------> sshd(22)

telnet --------------------------> telnet.d(23)

- Linux system : local login

Text login : 부팅 시에 자동으로 login 프로그램 실행 -> login

GUI login: GNOME(gdm), KDE(kdm) -> Graphic login


- Remote login

Clinet ---------------------------> Server

- Windows --------------------------> linux/Unix

윈도에서 리눅스로 연결하기 위해서는 프로그램을 사용해야 하며, 보통 아래와 같은 프로그램이 있다.

Putty, SecureCRT, Netterm.. telnet.d(23)

접속 방법

server name(ip) : sshd(22)

username : XXXXX

password : XXXXXX



2. Command 실행

리눅스에는 여러 가지 커맨드들이 존재한다. 터미널 텍스트로 명령어를 입력하여 실행을 하는 방식이다.

$ command

$ command -options -options

$ command argument1 argument2... <- argument는 파일 이름/디렉터리 이름

$ command -options arg arg2...


3. 로그인 정보 얻기

$ whoami : 로그인한 유저 ID

henry

$ id -u : 로그인한 유저 넘버

1000

$ id -g : 로그인한 유저 그룹 넘버

1000


* 현재 로그인해서 작업하는 터미널 이름 확인

$ tty

/dev/tty1


4. 로그인된 유저 리스트 확인 명령어

* $ users, $ who, $ w, $ finger, $ last...


5. System 정보

* 커널 버전 : $ uname -r

* 아키텍처 : $ arch

* 메모리 : $ free -m <- MB단위

* 배포판 종류 : cat /etc/os-release


5. Network 정보

* hostname

$ hostname

$ uname -n

* IP Address

$ ip addr

$ ifconfig

- lo(localhost), eno1(lan card) - IP

* Gateway address

$ ip route

$ route

$ netstat -nr

* DNS server

$ cat /etc/resolv.conf


7. CPU 사용량

* $ uptime : 현재 시스템이 최근 1분, 5분, 15분까지의 사용량을 출력

* $ w : 사용자별로 사용한 CPU 사용량


8. 일반 유저가 root 또는 다른 계정으로 변환하는 방법(많이 사용하게 되는 방법이다.)

a. su - username(username으로 계정을 전환한다.)

user$ su -root

user$ su root

user$ su -l root

user$ su -

b. sudo

- 특정 관리용 명령어만 일반 유저에게 허용.

- 허용 설정 : /etc/sudoers


# vim /etc/sudoers

...

visitor ALL=/usr/sbin/useradd, /usr/sbin/userdel

visitor$ sudo useradd username

visitor$ sudo userdel -r username



9. 도움말 확인 방법

- $ command --help

- $ info "keyword"

- $ man "keyword"


h : more 명령어상태에서 사용할 수 있는 키 도움말 확인


1. Filesystem

* 디스크에 파일을 어떻게 저장하고 어떻게 읽어줄지 정의.

* 종류: msdos ntfs ext2 ext3 ext4 xfs btfs ufs....


2. Filesystem Hierarchy Standard

리눅스 시스템의 디렉토리 구조는 전체적으로 역 트리(tree) 구조를 하고 있습니다. 그리고 명령어의 종류와 성격, 사용권한등에 따라 각각의 디렉토리들로 구분됩니다. 리눅스 배포판들은 '리눅스 파일시스템 표준' 인 FSSTND(LINUX FILE System Standard) 라는 표준을 준수하므로 대부분의 리눅스 배포판들은 그 기본 골격이 같습니다.

/(루트)

최상의 디렉토리인 루트 디렉토리를 의미하며, 리눅스의 모든 디렉토리들의 시작점이다. 즉, 모든 디렉토리들을 절대경로로 표기할 때에 이 디렉토리로부터 시작해야 한다.


/boot

부팅에 관련된 프로그램/파일이 저장


/bin

기본적인 명령어가 저장된 디렉토리. 즉, 리눅스 시스템사용에 있어 가장 기본적이라고 할 수 있는 mv, cp, rm 등과 같은 명령어들이 이 디렉토리에 존재하며 root 사용자와 일반사용자가 함께 사용할 수 있는 명령어 디렉토리이다.


/sbin

system binary. 시스템 관리자들이 사용하는 리눅스 명령어들(halt, shutdown 등)이 모여있는 디렉토리.

/sbin(바로가기) --> /usr/sbin


/lib

커널모듈파일과 라이브러리파일 즉, 커널이 필요로하는 커널모듈파일들과 프로그램(C, C++ 등)에 필요한 각종 라이브러리 파일들이 존재하는 디렉토리.


/root

root 사용자의 홈디렉토리


/home/username

계정사용자들이 홈디렉토리


/run

동작중인 어플리케이션 프로그램들이 참조하는 디렉토리. 시스템종료시 /run 디렉토리의 내용은 모두 제거됨.


/media

USB, CDROM 등과 같이 탈부착이 가능한 장치들의 마운트포인트로 사용되는 디렉토리.

/media/cdrom : /dev/cdrom

/media/usb-disk : Usbdisk


/dev

시스템 디바이스(device)파일을 저장하고 있는 디렉토리. 하드디스크 /dev/sda, CDROM /dev/cdrom 등과 같은 장치파일이 이곳에 존재한다.


/usr

시스템이 아닌 일반 사용자들이 주로 사용하는 디렉토리.


/usr/bin

일반 사용자들이 사용 가능한 명령어 파일들이 존재하는 디렉토리.

/usr/sbin

/bin에 제외된 명령어와 네트워크 관련 명령어들이 들어있는 디렉토리.


/usr/local/bin

추가로 설치된 프로그램 명령어


/usr/lib

/lib 에 들어가지 않은 라이브러리 디렉토리.


/usr/share

공유데이터


/usr/tmp

임시로 파일을 저장


/tmp

시스템 모든 사용자들이 공동으로 사용하는 디렉토리. 일반 사용자 또는 각종 프로세서에서 사용되는 파일들이 생성되는 곳이다.


/var

자주 변하는 파일들


/var/log

모든 시스템 로그파일은 /var/log에 저장


/var/spool/mail

메일 사서함.


3. Navigating the Filesystem


1) cd

디렉토리 이동 명령어


Absolute(절대경로) vs. Relative(상대경로)

항상 /에서 시작 현재디렉토리에 시작


.

현재 작업중인 디렉토리

~

홈 디렉토리의 경로를 의미

..

현재 작업중인 디렉토리의 바로 상위 디렉토리

$ cd ..

상위 디렉토리로 이동.

스크린샷 2017-09-03 오후 6.28.26.png


2) pwd

현재 디텍로리 위치 확인

스크린샷 2017-09-03 오후 6.33.19.png


3) ls

파일이다 디렉토리의 목록과 정보를 출력할때 사용하는 명령어

* 사용법 : $ ls [option] [file|dir]....

스크린샷 2017-09-03 오후 6.37.45.png

ls 에서 자주 사용하는 명령어

$ ls -a

숨겨진파일을 포함해서 모든 내용을 출력


$ ls -l

자세한 내용을 표시


$ ls -R

지정한 디렉토리이하에 있는 하부디렉토리와 파일들을 모두 포함한다.(Recursive)


$ ls -S

파일 크기가 가장 큰 것부터 나열


$ ls -h

파일크기를 용량단위(KB, MB, GB)를 붙여서 출력


ls 혼합 명령어

$ ls -lh

파일들을 자세히 나열하면서 파일사이즈를 붙여서 출력

스크린샷 2017-09-03 오후 6.56.14.png

$ ls -lS

파일들은 자세히 나열하면서 파일사이즈가 가장 큰 것 부터 순서대로 출력

스크린샷 2017-09-03 오후 6.55.59.png


4) df

파일시스템 사용량을 알려주는 리눅스 명령어.


$ df -h

-h 옵션(human-readable)을 주면 읽기 쉬운 단위로 표현됨

$ df -i

파일(inode) 사용량 : df -i

스크린샷 2017-09-03 오후 7.01.29.png


5) du

디렉토리/파일별로 사용량을 확인


$ du -hs 폴더

해당 폴더 용량 확인


$ du -hs *

현재폴더에 있는 폴더 및 파일 용량 확인

스크린샷 2017-09-03 오후 7.04.53.png


4. File Ownership(소유권)


chown 명령어

파일/디렉토리의 소유권, 소유그룹을 변경

$ chown [옵션] [소유자:소유그룹] [파일]

$ chown [옵션] [소유자.소유그룹] [파일]
◦ 옵션

-c: 변경된 파일만 자세하게 보여준다.

-f: 변경되지 않은 파일에 대해서 오류 메시지를 보여주지 않는다.

-v: 작업상태를 자세히 보여준다.

-R: 경로와 그 하위 파일들을 모두 변경한다.

◦ 소유권 변경 : chown -R user file

- chown user.group file

- Only root 계정에서 가능하다.


◦ 소유그룹을 변경 : chgrp -R group file


◦ 속한 다른 그룹을 기본그룹으로 설정 : newgrp group_name(속한 다른 그룹)

$ newgrp project

$ touch file2

$ ls -l file2


5. File Permission(권한)


ls -l

Permission 확인 명령어.


스크린샷 2017-09-03 오후 7.30.11.png
스크린샷 2017-09-03 오후 7.29.05.png

◦ Symbolic : r w x

◦ Numeric : 0 ~ 7

0 ---

1 --x

2 -w-

3 -wx

4 r--

5 r-x

6 rw-

7 rwx


umask

default Permission 확인/설정

- 기본으로 가지는 퍼미션

- 확인 : umask or umask -S

- 변경 : umask 007

스크린샷 2017-09-03 오후 7.35.52.png


chmod [ugoa][+-=][rwx] file/dir

Permission 변경 명령어

u=user, g=group, o=other, a=all

+=추가, -=빼기, =전체 빼기 또는 설정에 따라 추가가능

$ chmod u+x,g-w,o-r file1 rwx r-- ---

$ chmod ug=rw,o= file1 rw- rw- ---

$ chmod 640 file1 rw- r-- ---

$ chmod 000 file1 --- --- ---

$ chmod a= file1 --- --- ---


◦ Special permission

* Set UID(SUID)

일반적으로는 파일을 실행시키면, 실행시킨 사용자의 권한으로 실행이 되지만, SetUID가 설정된 파일을 실행하면 파일의 소유자 권한으로 실행이됨.

rws r-x r-x root root prog

-rwxr-xr-x root root /usr/bin/passwd

# chmod u-s /usr/bin/passwd

# chmod u+s /usr/bin/passwd chmod 4755 /usr/bin/passwd


* Set GID(SGID)

일반적으로는 파일을 실행시키면, 실행시킨 소유그룹의 권한을 가지게 되지만, SetGID가 설정된 파일을 실행하면 파일의 소유그룹권한을 가지게됨.

rwx r-s r-x root root prog

# chmod g-s /usr/bin/passwd

# chmod g+s /usr/bin/passwd chmod 2755 /usr/bin/passwd

- 디렉토리에 SGID를 설정해 공유디렉토리 운영

rwxrwsr-x user project dir1

rw-rw-r-- user project file2

rw-rw-r-- visitor project file3


◦ Sticky Bit

공유디렉토리의 의미임. Stick Bit이 설정된 디렉토리에 파일을 생성하면생성한 사람의 소유로 생성됨. 삭제 또한 생성한 사람과 root만이 가능함. 한마디로 공유디렉토리로 사용하기 위한 용도임.


keyword