리눅스는 다중 사용자용 운영체제로 여러 사용자가 한 대의 컴퓨터에 접속해 잡업하다보면 다른 사용자의 비밀스런 자료를 열람할 수 있고 또는 수정이나 삭제할 수 있기 때문에 이런 문제를 해결하기 위해서 퍼미션(Permission, 권한) 이라는 기능을 사용한다.

퍼미션은 "소유자/그룹/기타 사용자"로 구분해 관리하며 각각의 파일이나 디렉터리는 소유할 사용자와 그 사용자가 속한 그룹을 지정해 관리한다. 그러므로 사용자는 자신에게 읽기 권한이 부여된 파일만 읽을 수 있고 쓰기 권한이 부여된 파일만 쓰기와 수정이 가능하며 실행 권한이 부여된 파일만 실행할 수이 다. 또한 디렉터리는 실행 권한이 부여된 사용자만 그 디렉터리 안으로 들어갈 수있다.

퍼미션을 부여하거나 변경하는 며령은 chmod(change mode)이며 권한을 적용할 때 8진수 (absolute mode)를 사용하는 방법과 기호(bymboilc mode)를 사용하는 방법이 있다. 우리는 8진수를 사용하는 방법에 대해 알아 볼 것이다. 퍼미션은 "소유자/그룹/기타사용자"에 대해서 읽기(4),쓰기(2),실행(1) 권한을 조합해 숫자로 지정하는데 이 때 8진수 (2진수 3자리)를 사용해 권한을 부여하며 아무 권한도 주지 않으려면 해당 사용자 자리에 0를 지정하면 된다.

chmod 명령으로 디렉터리에 퍼미션을 적용할 때는 적절한 옵션을 지정해 하위의 디렉터리나 파일에 대한 퍼미션을 적용하는 것이좋다 .퍼미션은 파일 보다 디렉터리가 우선하기 때문에 만약 특정 디렉터리 안의 파일에는 접근 권한이 있지만 그 파일이 속한 디렉터리에 권한이 없다면 해당 파일은 사용할 수 없다.

퍼미션은 파일이나 디렉터리에 대한 읽고,쓰고,실행 할 수 있는 권한을 허가하는 것으로 파일이나 디렉터리의 소유권을 변경하면 소유자가 변경되었으므로 파일이나 디렉터리에 대한 퍼미션도 변경된다.
파일 또는 디렉터리의 소유자를 변경할때는 chown(change owner) 명령을 사용하며 소유권(Owner shop) 벼경 명령은 오직 루트 계정만 사용할 수 있는 명령이다.

chwon 명령은 사용자와 그룹 소유권을 한 번에 성정할 수 있는 명령이며 이 외에 그룹소유권만 변경할 수 있는 chgrp(change group) 명령도 있다.

파일 아카이빈(Archiving)은 백업 등의 목적으로 여러 디렉터리난 파일 들을 하나로 묶는 것을 의미하는데 , 이렇게 묶은 아카이브 파일을 추가로 압축(Compress)을 통해서 파일의 용량을 줄여서 관리하는 경우가 대두부분이다.
여러개의 파일을 하나의 파일로 묶거나 풀때 tar(Tape archives) 명령어를 사용한다.
tar 파일은 리눅스 및 유닉스에서 가장 많이 사용되는 아카이브 파일로 tar 파일로 묶기전 파일의 소성과 디렉터리 구조 등을 모두 보전 할 수 있고 압축과 압축해제 등의 작업을 거치면서 파일이 변겨되거나 소실될 염려가 없기 때문에 소스 배포 파일을 만드는 요도로 자주 사용된다.
tar 명령을 통해 하나로 묶은 아카이브 파일의 확장자는 .tar이며 이 tar파일을 다시 gzip 도는 bzip2로 압축하는 경우가 많은데, 이때 압축 파일의 확장자는 아카잊브 파일의 .tar 뒤에 gz또는 bz2를 붙여서 .tar.gz나 tar.bz2와 같이 압축 파일의 확장자로 사용하는 경우가 많다.
일반적으로 tar를 통해 하나로 합쳐진 아카이브 파일을 gzip 또는 bzip2 방식을 사용해 압축하는데 gzip 또는 bzip2 명령을 따로 수행하지 않고 파일을 하나로 묶으면서 tar 명령의 옵션만으로 압축을 할 수 있기 때문에 아카이브와 압축을 한 번에 진행하는 방식이 많이 사용된다.






리눅스 시스템은 프로그램을 실행하면서 프로세스라는 단위로 관리하며 프로세스란 실
행 중인 프로그램을 의미한다. 다시 말해 컴퓨터의 CUP에서 실행되는 하나 하나의 프로
그램을 프로세스라고 부른다.
프로세스는 구분을 위해서 고유한 번호를 프로세스 ID(PID)로 부여 받는다. 프로그램은
다른 프로그램을 실행할 수도 있는데 이때 다른 프로그램을 실행한 프로그램을 부모 프
로세스라고 하며 부모에 의해서 실행된 프로그램을 자식 프로세스라고 한다.
▪ 부모 프로세스 :






프로세스가 어떻게 실행되는가에 따라 Foreground Process와 Background Process
나뉜다.
▪ Foreground Process :
▪ Background Process :

우분투(Ubuntu)는 Debian GNU/Linux 배포판을 기반으로 하는 운영체제로 배포판에
대한 구분은 패키징 관리 시스템에 따라서 달라진다.
리눅스에서는 프로그램을 실행하는데 필요한 파일들(실행파일, 설정 파일, 프로그램에
서 사용하는 라이브러리 등)을 하나로 묶어서 설치 파일 묶음을 만들어 관리하는데 이
를 리눅스 패키지(Linux Package)라고 부른다.
리눅스는 다양한 배포판이 있기 때문에 배포판에 따라서 다양한 패키징 방식이 존재하
지만 다음과 같이 대표적인 두 가지 방식이 있으며 DEB 패키지 파일의 확장자는 . deb
이고 RPM 패키지 파일의 확장자는 .rpm 이다.
▪ Debian 계열(Debain, Ubuntu, Linux Mint 등) 패키징 방식 : DEB
▪ Red Hat 계열(Red hat, Fedora, CentOS 등) 패키징 방식 : RPM
리눅스는 패키지 관리를 위해서 패키지 관리 도구(Package Management Tool)를 사용
하며 패키지 관리 도구는 크게 저수준 패키지 도구(Low Level Package Tool)와 고수준
패키지 도구(Hight Level Package Tool)로 나뉜다.
저수준 패키지 도구는 패키지 파일을 설치하거나 제거할 때 사용하는 도구로 패키지의
파일을 설치하고 제거할 수는 있어도 패키지 간의 의존성은 알지 못한다.
Debian 계열의 저수준 패키지 도구는 dpkg가 있고 Red Hat 계열의 저수준 패키지 도
구는 rpm이 있다.
고수준 패키지 도구는 패키지 파일을 설치하고 제거할 수 있을 뿐만 아니라 다운로드
가능한 패키지들을 검색하고 패키지 간의 의존성(Dependencies)을 파악하여 필요한
패키지를 자동으로 설치할 수 있도록 지원하는 도구이다.
Debian 계열의 고수준 패키지 도구는 apt, apt-get, aptitude가 있으며 Red Hat 계열
의 고수준 패키지 도구는 yum, dnf가 있다.
리눅스 각각의 배포판은 패키지와 패키지의 정보를 저장하고 있는 인터넷에 연결된 패
키지 저장소(Package Repository)를 가지고 있으며 앞에서 얘기한 패키지 도구를 이용
해 패키지 저장소로부터 다운로드 받아서 설치할 수 있다.
다음은 우분투에서 고수준 패키지 도구인 apt로 python3을 설치하는 예이다.
sudo apt install python3
리눅스 패키지 저장소(Linux Package Repository)는 패키지에 대한 정보(패키지들의
이름, 버전 번호, 패키지 설명 등)가 포함된 메타 정보(Metadata)를 가지고 있어서 사용
자는 패키지 도구를 이용해 저장소가 가지고 있는 패키지 정보를 확인할 수 있다.
다음은 우분투 패키지 저장소에서 패키지 리스트를 조회하는 예이다.
apt list apache2
apt list | grep apache2
우분투는 apt 명령을 이용해 인터넷에 연결된 패키지 저장소에서 패키지를 다운로드 받
아 설치하는데 그러기 위해서는 패키지 저장소의 주소 정보가 필요하다.
이 패키지 저장소의 주소 정보는 /etc/apt/sources.list 파일에 저장되어 있다.
이 파일은 수동으로 편집해서 사용할 수 있지만 편집하기 전에 다음과 같은 명령으로
원본 파일을 백업해 두는 것을 잊지 말자.
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
apt 명령은 시스템의 핵심을 다루는 명령의므로 관리자 권한이 필요하기 때문에 sudo 명령과 같이 사용해야 한다.
apt [명령][옵션] <패키지명>






