📝 리눅스 기본 명령어
ls
: Windows의dir
과 같은 역할로, 해당 디렉터리에 있는 파일 목록을 출력- ex)
# ls /etc/sysconfig
- ex)
cd
: 디렉터리 이동- ex)
# cd ../etc/sysconfig
.
- 현재 디렉터리,..
- 현재의 상위 디렉터리
- ex)
pwd
: 현재 디렉터리의 전체 경로 출력rm
: 파일이나 디렉터리 삭제- ex)
# rm -rf abc
- ex)
cp
: 파일이나 디렉터리 복사- ex)
# cp abc.txt cba.txt
- ex)
touch
: 크기가 0인 새 파일을 생성, 이미 존재하는 경우 수정 시간을 변경- ex)
# touch abc.txt
- ex)
mv
: 파일과 디렉터리의 이름을 변경하거나 위치 이동 시 사용- ex)
# mv abc.txt www.txt
- ex)
mkdir
: 새로운 디렉터리 생성- ex)
# mkdir abc
- ex)
rmdir
: 디렉터리 삭제(단, 해당 디렉터리가 비어있어야 함)- ex)
# rmdir abc
- ex)
cat
: 텍스트로 작성된 파일을 화면에 출력- ex)
# cat a.txt b.txt
- ex)
head
,tail
: 텍스트로 작성된 파일의 앞 10행 또는 마지막 10행만 출력- ex)
# head anaconda-ks.cfg
- ex)
more
: 텍스트로 작성된 파일을 화면에 페이지 단위로 출력- ex)
# more anaconda-ks.cfg
- ex)
less
: more와 용도가 비슷하지만 기능이 더 확장된 명령어- ex)
# less anaconda-ks.cfg
- ex)
file
: File이 어떤 종류이 파일인지 표시- ex)
# file anaconda-ks.cfg
- ex)
clear
: 명령창을 깨끗하게 지워줌- ex)
# clear
- ex)
리눅스는 별도의 숨김 파일(Hidden File)이라는 속성이 존재하지 않는다. 파일명이나 디렉터리의 맨 앞 글자를 '.'으로 하면 자동으로 숨김 파일이 된다.
📝 사용자와 그룹
- 리눅스는 서버용 운영체제이기 때문에 다중 사용자 시스템(Multi-User System)이다.
- 기본적으로 root라는 이름을 가진 슈퍼 유저(Superuser)가 있으며, 해당 유저는 모든 작업을 할 수 있는 권한이 있다.
- 모든 사용자는 하나 이상의 그룹에 소속되어 있다.
- 사용자는
/etc/passwd
파일에 정의되어 있다.
- 각 행의 의미는 다음과 같다.
- 사용자 이름:암호:사용자 ID:사용자가 소속된 그룹 ID:전체 이름:홈 디렉터리:기본 셸
- 암호 부분이
x
로 되어있는 것은 암호가 'x'라는 뜻이 아닌, 따로 관리한다는 의미
- 사용자의 암호는
/etc/shadow
파일에서 관리됨
- 그룹은
/etc/group
파일에 정의되어 있음
- 각 행의 의미는 다음과 같음
- 그룹명:비밀번호:그룹 ID:그룹에 속한 사용자명
- 위에서 언급했듯, 리눅스 운영체제에서 모든 사용자는 하나 이상의 그룹에 소속되어 있어야하기 때문에 그룹을 따로 생성하여 할당해주지 않았다면 사용자의 생성과 동시에 그와 동일한 이름의 그룹을 시스템이 자동으로 생성하여 할당해줌
📜 사용자와 그룹 관련 명령어
useradd
: 새로운 사용자 추가- ex)
# useradd newuser
- 사용자 생성 옵션(생략시 기본 값으로 생성)
-u
: ID 지정-g
: 그룹 지정-d
: 홈 디렉터리 지정-s
: 셸 지정
- ex)
passwd
: 사용자의 비밀번호를 지정하거나 변경- ex)
# passwd newuser
- ex)
usermod
: 사용자의 속성 변경- ex)
# usermod -g root newuser
- ex)
userdel
: 사용자 삭제- ex)
# userdel newuser
- ex)
change
: 사용자의 암호를 주기적으로 변경하도록 설정- ex)
# change -m 2 newuser
- ex)
groups
: 현재 사용자가 속한 그룹을 보여줌- ex)
# groups
- ex)
groupadd
: 새로운 그룹 생성- ex)
# groupadd newgroup
- ex)
groupmod
: 그룹의 속성 변경- ex)
# groupmod -n newgroup mygroup
- ex)
groupdel
: 그룹 삭제- ex)
# groupdel newgroup
- ex)
gpasswd
: 그룹의 암호를 설정하거나, 그룹의 관리를 수행- ex)
# gpasswd newgroup
- ex)
- 위에서 잠깐 언급했지만, 리눅스 운영체제는 사용자 생성 시에 그룹을 따로 할당해주지 않으면 자동으로 동일한 이름의 그룹을 생성하여 임의로 할당해준다고 했었다.
- 다만 이는 올바르지 않은 방식으로, 우리는 이를 막기위해 사용자를 생성하기 전 먼저 해당 사용자가 소속될 그룹을 생성해주고 이후에 해당 그룹에 새롭게 생성된 사용자를 할당하는 방식을 사용할 것이다.
- 이를 위해 우선 아래와 같이 새로운 그룹을 생성해준다.
- 다음으로 사용자를 생성할 때
-g
옵션을 추가하여 해당 사용자가 소속될 그룹을 지정해준다. - 아래 예시는 총 두 명의 사용자(user1, user2)를 생성하고 'centosGroup'에 소속시킨 예이다.
- 이후 사용자 정보를 확인해보면 아래와 같이 출력되는 것을 확인할 수 있다.
- 사용자 정보 파일에 두 명의 사용자가 추가된 것을 확인할 수 있으며 그룹 ID는 centosGroup의 ID인 1001번이 지정된 것을 확인할 수 있다.
- 추가로, 새로운 사용자를 생성할 때 해당 사용자의 홈 디렉터리를 따로 지정해주지 않으면 자동적으로
/home
디렉터리가 기본값으로 설정되게 된다.
- 임의의 사용자 폴더에 들어가서 존재하는 파일을 살펴보면 다음과 같다.
- 해당 파일들은
/etc/skel
디렉터리에 있는 파일과 완전히 동일한 파일들로써, 새로운 사용자가 생성되면 홈 디렉터리에 해당 사용자의 이름으로 된 폴더를 생성하고,/etc/skel
디렉터리에서 위 파일들을 복사하여 가져오게 된다. - 즉, 우리는 이를 활용하여 이후 생성될 모든 사용자에게 포함시킬 파일을 임의로 생성하여
/etc/skel
디렉터리에 저장하면 새로운 사용자가 생성될 때 자동으로 해당 파일을 복사하여 사용자의 홈 디렉터리에 저장하게 될 것이다.
📝 파일과 디렉터리의 소유와 허가권
- 파일 유형
- 디렉터리일 경우에는 d, 일반적인 파일일 경우에는 하이픈(-)으로 표시
- 파일 허가권(Permission)
rw-
,r--
,r--
3개씩 끊어서 읽음(r은 read, w는 write, x는 excute의 약자)- 첫 번째
rw-
는 소유자(User)의 파일 접근 권한을 의미 - 두 번째
r--
는 그룹(Group)의 파일 접근 권한을 의미 - 세 번째
r--
는 그 외의 사용자(Other)의 파일 접근 권한을 의미 chmod
: 파일 허가권 변경 명령어- ex)
# chmod 777 sample.txt
- ex)
- 숫자(8진수)로도 표시 가능
- 파일 소유권(Ownership)
- 파일을 소유한 사용자와 그룹을 의미
chown
/chgrp
: 파일의 소유권을 변경하는 명령어- ex)
# chown centos.centos sample.txt
또는# chown centos sample.txt
및# chgrp centos sample.txt
- ex)
📝 링크
- 파일의 링크(Link)에는 하드 링크(Hard Link)와 심볼릭 링크(Symbolic Link 또는 Soft Link) 두 가지가 있음
- 하드 링크를 생성하면 "하드 링크 파일"만 하나 생성되며 같은 inode1을 사용
- ex)
# ln [링크 대상 파일 이름] [링크 파일 이름]
- ex)
- 심볼릭 링크를 생성하면 새로운 inode2를 만들고, 데이터는 원본 파일을 연결하는 효과
- ex)
# ln -s [링크 대상 파일 이름] [링크 파일 이름]
- ex)
심볼릭 링크는 Windows의 바로가기 아이콘과 비슷한 개념
📝 프로그램 설치를 위한 RPM
- RPM(Redhat Package Manager)
- 리눅스 운영체제 상의 프로그램 설치시 까다로웠던 설치 작업을 보완하기 위해 Windows의 'setup.exe'와 비슷하게 실행만으로 설치 작업이 자동으로 이루어지도록 한 설치 파일
- 확장명은
*.rpm
이며, 이를 패키지(Package)라고 부름
- 파일의 의미는 다음과 같다.
- 패키지 이름-버전-릴리즈 번호.CentOS 버전.아키텍처.rpm
- 패키지 이름: gzip -> 패키지(프로그램)의 이름
- 버전: 1.9 -> 대개 3자리 수로 구성(주버전, 부버전, 패치버전)
- 릴리즈 번호: 4 -> 문제점을 개선할 때마다 붙여지는 번호
- CentOS 버전: el8 -> CentOS에서 배포할 경우에 붙여짐
- 아키텍처: x86_64 -> 64비트 CPU를 의미
- x86_64: 64비트 CPU
- i368~686: 32비트 CPU
- src: 소스
- noarch: 모든 CPU
- 패키지 이름-버전-릴리즈 번호.CentOS 버전.아키텍처.rpm
📜 자주 사용하는 RPM 명령어 옵션
- 설치:
rpm -Uvh [패키지 파일 이름].rpm
- U(대문자): 패키지가 설치/업그레이드
- v: 설치 과정의 확인
- h: 설치 진행 과정을
#
마크로 화면에 출력
- 삭제:
rpm -e [패키지 이름]
- 이미 설치된 패키지 질의
rpm -qa [패키지 이름]
: 패키지가 설치되었는지 확인rpm -qf [파일의 절대경로]
: 파일이 어느 패키지에 포함된 것인지 확인
- 아직 설치되지 않은 rpm 파일에 대한 질의
rpm -qlp [패키지 파일 이름].rpm
: 패키지 파일에 어떤 파일들이 포함되어있는지 확인rpm -qip [패키지 파일 이름].rpm
: 패키지 파일의 상세 정보
📜 RPM 단점
- 의존성 문제
- A 패키지가 설치되기 위해서 B 패키지가 필요한 경우, RPM으로는 해결하기가 까다로움
- 이를 해결하기 위해 DNF(또는 YUM)가 등장함
때문에 RPM은 DNF 이전의 가장 기본적인 개념으로써 알아두도록 하고, DNF를 좀 더 중점적으로 사용하도록 하자
📝 편리한 패키지 설치, DNF
- DNF(Dandified dnf)
rpm
명령의 패키지 의존성 문제를 완전하게 해결- 인터넷을 통하여 필요한 파일을 저장소(Repository)에서 자동으로 모두 다운로드해서 설치하는 방식
- 저장소의 URL은
/etc/yum.repos.d/
디렉터리
- 저장소의 URL은
- CentOS 7은 YUM, CentOS 8은 YUM에서 좀 더 개선된 DNF 명령을 사용
📜 DNF 기본 사용법
- 기본 설치:
dnf install [패키지 이름]
- 주로
dnf -y install [패키지 이름]
으로 사용 -y
는 사용자의 확인을 모두 'yes'로 간주하고 설치를 진행한다는 옵션
- 주로
- RPM 파일 설치:
dnf install [rpm 파일 이름].rpm
- 업데이트 가능한 목록 보기:
dnf check-update
- 업데이트:
dnf update [패키지 이름]
- 삭제:
dnf remove [패키지 이름]
- 정보 확인:
dnf info [패키지 이름]
📜 DNF 고급 사용법
- 패키지 그룹 설치:
dnf groupinstall [패키지 그룹 이름]
- 패키지 리스트 확인:
dnf list [패키지 이름]
- 특정 파일이 속한 패키지 이름 확인:
dnf provides [파일 이름]
- GPG 키 검사 생략
dnf install --nogpgcheck [rpm 파일 이름].rpm
- CentOS 8에서 인증되지 않은 패키지를 강제로 설치할 때 사용
- 기존 저장소 목록 지우기:
dnf clean all
📜 DNF 작동 방식 설정 파일
/etc/yum.conf
파일: 특별히 변경할 필요 없음/etc/yum.repos.d/
디렉터리- dnf 명령을 입력했을 때 검색하게 되는 네트워크 주소가 들어있는 여러 개의 파일이 저장된 디렉터리
/etc/yum.repos.d/
디렉터리의*.repo
파일- 실습에 문제가 없도록 하기 위해 CentOS 8의 1905버전만 설치되도록 기존
/etc/yum.repos.d/
폴더의 내용을 모두 삭제하고This.repo
파일을 새로 생성하여 남겨두었음. 또한This.repo
파일에 BaseOS, AppStream 등의 저장소를 별도로 적어놓았음
- 실습에 문제가 없도록 하기 위해 CentOS 8의 1905버전만 설치되도록 기존
📜 네트워크와 DVD를 동시에 사용하는 방법
- 네트워크 망이 잘 형성되어 있다면 위와 같이 네트워크만을 사용하여 패키지를 설치해도 큰 문제는 없다.
- 다만 네트워크 속도가 좋지 않거나 네트워크 사용료가 비싸다면 이를 DNF 명령어를 쓰되, DVD를 통해 설치하는 방법을 사용하여 효율적으로 설치가 가능하다.
- 이를 실습해보기 위해 우선 CD/DVD 장치를 연결한 뒤 복잡한 경로에 자동으로 마운트되어 있는 부분을
/media/cdrom/
경로로 마운트하도록 수정하였다.
- 이제 사용자가 DNF 명령을 입력하면 해당 경로에 설치되도록 해야하는데, 이를 위해서는 위에서 잠깐 언급했던 repo 파일을 수정해주어야 한다.
- 따라서 우선
/etc/yum.repos.d/
폴더로 이동하여 해당 파일을 backup 파일로 옮겨주어 해당 파일을 인식하지 못하도록 해주었다.
- 위 상태에서는 해당 디렉터리에 패키지 설치를 위한 아무런 정보도 담겨있지 않기 때문에 당연히 패키지 설치가 정상적으로 수행되지 않을 것이다.
- 따라서 에디터를 이용하여 아래와 같이 정보 파일을 직접 만들어주었다.
- baseurl 구문을 보면 주소를 네트워크 주소가 아닌 우리가 위에서 마운트한 디렉터리의 경로로 지정해준 것을 확인할 수 있다.
- 해당 경로에는 아래와 같이 여러 폴더들이 존재하며 그 중 BaseOS 폴더에는 BaseOS와 관련된 패키지들이 들어있다.
- 즉, 앞으로 DNF 명령을 입력하면 해당 폴더에서 패키지를 찾아 설치한다는 의미이다.
- 마찬가지로 AppStream과 관련된 패키지도 위 디렉터리의 AppStream 폴더를 경로로 지정하여 해당 폴더에서 패키지를 찾아 설치할 것이다.
- 명백히 말하자면 패키지를 다운로드 하는 것이 아닌 DVD에서 패키지를 찾아 복사하는 개념으로 볼 수 있다.
- 이후, 네트워크가 연결되지 않은 상태에서 패키지 설치가 잘 수행되는지 확인하기 위해 네트워크를 잠시 끊어주었다.
- 설치를 수행해보면 정상적으로 설치가 진행되는 것을 확인할 수 있으며, 출력된 결과를 확인해보면 리포지토리 열에 'DVD-AppStream'과 같이 위에서 지정한 경로에서 패키지를 가져온다는 것을 확인할 수 있다.
- 이렇게 네트워크를 사용하지 않고도 패키지를 설치하는 방법에 대해 알아보았다.
- 다만 DVD에 존재하는 패키지의 종류에는 한계가 있으며, 때문에 DVD만으로는 설치할 수 없는 패키지가 있다.
- 주로 사용하는 패키지는 DVD에 존재하지만 그 외의 기타 패키지들은 존재하지 않는 것이다.
- 이를 해결하기 위해 우리는 만약 설치하고자 하는 패키지가 DVD에 존재한다면 DVD를 이용하여 설치하고, 그렇지 않다면 네트워크를 통해 CentOS에서 제공하는 패키지 저장소를 이용하여 설치하는 방법을 사용할 수 있다.
- 즉, 필요한 경우에만 네트워크를 사용하여 설치하는 매우 효율적인 설치를 수행할 수 있다는 것이다.
- 아래는 DVD에 해당 패키지가 존재하지 않아 패키지 설치에 실패한 예이다.
- 이를 해결하기 위해 다시
dvd.repo
파일을 열어 아래와 같이 수정해주었다.
- 새롭게 추가된 부분을 보면 baseurl 부분을 네트워크 주소로 지정하여 준 것을 확인할 수 있다.
- 이렇게 하면 BaseOS와 AppStream과 관련된 패키지는 DVD를 통해 설치되고, PowerTools와 관련된 패키지는 그 아래 네트워크 주소에 의해 설치된다.
위와 같이 repo 파일의 내용을 수정했다면 'dnf clean all' 명령어를 수행해주도록 하자
안해도 크게 상관 없지만 위 명령을 수행하면 DNF 정보가 모두 지워지기 때문에 DNF 파일을 처음부터 다시 읽어들여 확실하게 인식하도록 할 수 있다.
- 이후 네트워크를 다시 연결(
# ifup ens160
)하고 두 가지 패키지를 동시에 설치해보았다.
- mc 패키지의 경우 DVD에서 설치가 가능한 패키지이고, help2man 패키지는 기타 패키지이기 때문에 네트워크를 통해서 설치해야하는 패키지이다.
- 따라서 위처럼 각각의 패키지 설치에 사용된 Repository가 다른 것을 확인할 수 있다.
📜 패키지 그룹 설치
- 추가로 패키지 그룹을 설치함으로써 해당 그룹에 속해있는 모든 패키지를 한 번에 설치하는 방법 또한 제공되고 있는데 그 방법은 다음과 같다.
- 우선
# dnf group list hidden
명령어를 통해 아래와 같이 패키지 그룹 목록을 출력해보았다.hidden
을 붙이게 되면 숨겨진 그룹 목록까지 모두 보여줌
- 목록을 살펴보면 '설치된 그룹' 외에 '사용 가능한 그룹'에 나와있는 목록들을 확인할 수 있다. 즉, 사용 가능하지만 아직 설치가 되지 않은 패키지 그룹이라는 뜻이다.
- 패키지 그룹을 다운로드 하기 위해서는
# dnf -y groupinstall "[패키지 이름]"
과 같이 명령어를 입력해야 한다(끈따옴표 주의).
'🐧 Linux > 이것이 리눅스다(CentOS 8)' 카테고리의 다른 글
[이것이 리눅스다(CentOS 8)] 04장. 필수개념과 명령어(4) (0) | 2023.03.28 |
---|---|
[이것이 리눅스다(CentOS 8)] 04장. 필수개념과 명령어(3) (0) | 2023.03.27 |
[이것이 리눅스다(CentOS 8)] 04장. 필수개념과 명령어(1) (0) | 2023.03.25 |
[이것이 리눅스다(CentOS 8)] 03장. CentOS 리눅스 설치 (0) | 2023.03.24 |
[이것이 리눅스다 (CentOS 8)] 01장. 실습 환경 구축 (0) | 2023.03.23 |