IT 관련/리눅스

리눅스 기초와 명령어(1)

insu90 2024. 9. 27. 17:10

 

리눅스는 운영체제다.

운영체제란 무엇인가 하면 하드웨어를 직접 통제하기엔 어려우니, 그걸 도와주는 것이라고 보면 된다.

만약 하나하나 통제하면다면 말 그대로 코딩을 해야하는데(여기서 코딩은 선을 뽑았다 뺐다 하는 오래된 방식을 말한다.) 이게 사람이 직접 하기엔 너무 번거롭기 때문이다.

말 그대로 "코딩"

리눅스 전에 UNIX 라는 것이 있었는데 60~70년대 OS로 어셈블리어로 만들었다가 이후 B언어, C언어로 발전했다.

이후 이런 UNIX를 바탕으로 나온게 리눅스이며 계층구조 파일 시스템을 사용한다.

root 로 부터 뻗어나가는 계층구조

 

계층구조는 옆으로 이동하는게 불가능하고 무조건 위로 올라갔다가 다시 내려오는 구조를 갖추게 되는데, 만약 /usr/bin에서 /usr/lib으로 이동하고 싶다면 /usr로 올라갔다가 다시 lib으로 이동해줘야 한다.

이 때 한 칸씩 이동한다면 상대경로를 통해 움직이는 것이고 (현재위치로 볼 때 : bin -> usr -> lib)

만약 전체 경로를 타이핑해서 움직인다면 절대경로를 통해 움직이는 것이다.(현 위치 관계없이 : /usr/lib 디렉토리로 이동명령)

이 이동 방법은 아래에서 다시 설명하겠다.

 

이번에는 하드링크와 소프트 링크 개념을 설명한다.

리눅스에서 파일을 삭제한다는 의미는 링크를 끊는다는 것으로, 링크를 살리면 복구가 가능하다.

파일시스템은 도서관에 비유하자면 익덱스를 통해 책을 찾는 것과 데이터 찾기가 유사하다.

인덱스는 여기서 아이노드라는 용어를 쓰는데 하드디스크의 위치와 섹터를 나타낸다.

(이 아이노드 이슈중 아이노드의 한계수치*(더이상 인덱스 기입 불가)도달 시 touch 명령을 통해 더 이상 파일을 제작 할 수 없는 상황이 펼쳐지는데, 이는 하드의 약 1% 공간이 아이노드 숫자로 부여되기 때문이다)

이 아이노드를 공유하는 것을 링크라고 한다.

하드링크는 원본 아이노드를 공유한다. 아무리 위치가 달라도 모두 원본을 가르킨다. 만약 생성된다면 뭐가 원본이고 카피인이 구분이 불가능하다. 해당 구역 데이터에다가 이름만 다르게 부여하는 느낌으로 본다.(예를 들어 아빠와 아버지는 다르게 발음하지만 본질은 동일하다. 또한 완전 동일한 것으로 구분할 수 없다)

소프트링크는 해당 데이터로 접근하는 원본 파일을 가르키는 파일이다. 바로가기 파일과 같은 것으로 새롭게 아이노드가 형성된다.

위 내용과 합치면 만약 소프트 링크를 계속 생성할 경우 아이노드 한계수치 도달로 인해 파일을 생성이 불가능하게 될 수도 있음을 이해해야한다.

 

리눅스의 설치

만약 실습을 원하는 사람이 이 글을 보고 있다면 내 글의 vmware 설치방법을 먼저 참고하여 설치하기를 바란다.(클라우드 사용자는 훨씬 편하나, 다음에 게시한다.)

그리고 리눅스 iso 파일이 필요한데 아래 링크에서 취향껏 다운받는다.

Download Linux | Linux.org

내 경우 centos 7 minimal 로 진행했다.

 

준비되면 vmware를 키고 가상머신 형성을 눌러준다. SCSI를 하는게 아니니 일반용으로 생성하자

본인이 다운로드한 os이미지가 있는 곳으로 가서 넣어준다.

이름은 본인이 원하는대로 임의 지정한다

많은걸 하지 않기 때문에 용량을 더 줄일 수 있다. 내 경우는 기본설정인 20으로 했다.

파일은 싱글로 하자. 단, 용량을 크게 써야한다면 멀티플로 해야 나중에 옮길 때 유용하다.(나중에 분할압축하고 다시 해제하는 행동을 피할 수 있다)

 

여기서부터는 자유이다. 커스터마이즈 할 수 있고 메모리 대역도 바꿀 수 있고 자신이 원하는 만큼 세팅을 해준다.

여기서 네트워크 어댑터가 매우 중요하다고 할 수 있지만, 지금은 기본만 할 것이므로 일반 NAT를 쓰면 된다(호스트의 네트워크를 쓴다는 것이다.)

나중에 IP를 나눠서 작업해야 하는 경우는 또 다른 방법을 써야하니 참고한다.

이후 계속 진행하면 설치가 완료된다.

 

여기서 주의할 점은 시간을 현재 한국으로 맞춰주고, 설치가 될 디스크 지정과 네트워크를 켜줘야 한다는 것이다.

그 후엔 루트 비밀번호만 만들어준다. 유저는 지금은 만들지 말고 아래에서 만드는 것으로 하겠다.

실습에선 편의상 00000000 으로 진행했다.

추가로 이렇게 진행하다보면 마우스 커서가 vmware에서 안나오게 되는데 이는 ctrl+alt로 빠져나오는게 기본 키다.

이 키 설정은 본인이 마음대로 변경이 가능하니 참고한다.

설치가 완료되고 실행이 되면 이런 화면이 뜰 것이다.

별도 유저는 없으므로 root를 치고 아까 기입했던 비밀번호를 입력하면 된다. 오른쪽과 같이 로그인이 되면 성공이다.

 

이제 이 설치된 것을 가지고 명령어 관련 설명을 이어나가겠다.

먼저 알아야 할 것은 유저와 그룹이다. 간단하게 설명하면

유저 - 시스템을 사용하려는 사람과 연결된 계정 - UID

그룹 - 공통의 목적을 지닌 사용자들이 모인 집합 - GID

이다.

그룹을 파일의 권한을 공유하기 위함인데 모든 사용자는 최소 1개 이상의 그룹에 반드시 들어가야만 한다.

만약 유저 그룹과 그룹 아이디를 보고 싶다면 /etc 디렉토리에 들어가면 된다.

해당 디렉토리 아래에서는

  • /etc/passwd 시스템에 등록된 사용자 정보
  • /etc/shadow 패스워드가 들어가있음
  • /etc/group 시스템에 등록된 그룹 정보
  • /etc/gshadow 그룹 비밀번호

이렇게 각 정보를 파악할 수 있으니 알고만 있으면 된다. 단 쉐도우는 읽을 수 없다.

 

가장 먼저 유저를 만들어보자

기본적인 코드는 useradd (옵션) (유저 이름) 이다.

 

옵션을 넣지 않는 경우에는 그냥 이름을 작성하면 된다.

이 유저에 비밀번호는 passwd (유저이름) 으로 작성하면 된다.

이 때 비밀번호가 불안전하면 위의 창이 뜨는데 무시하고 작성이 가능하다. 다만 보안적인 측면에선 문제가 있다.(위 경우는 아예 미기입할 경우다)

 

이제 유저가 만들어졌으니 해당 유저로 변경하는 방법을 배워보자. 현재의 나는 root로 @왼쪽으로 표기되어 있는 걸 볼 수 있다.

 

명령어는 su 로 스위치 유저라고 생각하면 된다. 로그아웃 없이 사용자 전환을 의미한다.

이 때 비밀번호는 물어보지 않는데, 이는 이 계정이 root에서 넘어가기 때문이다. 만약 다른 계정으로 하면 어떨까?

 

smith 계정을 만들고 insu로 들어가서 smith 로 접속해보자

위와같이 smith 계정으로 들어가기 위해서는 비밀번호를 물어본다. 반대도 마찬가지다.

 

이때 su 사용 관련 팁이 있는데 - 옵션을 사용하는 것이다.

기본적으로 su 뒤에 바로 이름으로 들어갈 경우 현재 위치에서 변경되질 않는다.

그러나 su - insu 와 같이 옵션을 넣지 않은 상태로 옵션 선언을 하면 해당 유저의 홈으로 이동하게 된다.

위 명령어는 pwd(현재 위치 확인) 했을 때 스미스의 홈에 있는 걸 알 수 있다.

이후 그냥 su insu를 하면 insu 계정으로 그대로 smith 위치에 있음을 볼 수 있고

su - 를 통해서 루트 계정으로 돌아가자 루트 홈으로 간 걸 알 수 있다.

 

 

이제 디렉토리 생성에 대해서 이야기하자.

mkdir (이름)

위 명령어를 통해서 디렉토리를 생성할 수 있다. 여기서 p 옵션을 쓰면 ex1/ex2/ex3 으로 하위까지 쭉 만들 수 있다.

ls(리스트 조회)를 통해 현재 내 위치에 어떤 파일, 디렉토리가 있는지 체크할 수 있다.

또한 cd를 통해 해당 디렉토리로 이동한 걸 알 수 있다.

 

touch (이름)

위 명령을 파일을 만든다.

확인하면 색이 혼자 하얀색인데 이는 디렉토리와 파일을 구분하는 것으로 이해하면 된다.

 

vi (이름)

파일을 생성과 동시에 편집기를 열게 된다.

 

이 때 i 키를 눌러줘야 입력이 활성화되고, 해당 내용을 저장하고자하면 esc키를 누른 후 :wq 를 작성해야 저장이 된다.

몇가지 팁을 추가 첨부한다.

  • 내용 작성을 위해서는 i나 인설트키를 눌러야함
  • 나오기 위해서는 q 저장을 위해서는 w 같이 쓰면 wq를 : 표시와 함께 사용
  • o키를 누르면 바로 다음칸에서부터 시작 가능
  • vi에는 단축키가 많아서 잘 사용해야함
  • yy를 누르면 해당 칸이 복사가 되고 p를 누르면 붙여넣기가 됨
  • /를 누르면 단어검색해서 표시해줌, 그리고 소문자 n은 아래로, 대문자 N은 위로 올려줌
  • :set number 를 누르면 각 줄마다 번호를 표기해줌

 

 

내용이 길어지는 관계로 추가 내용은 다음으로 넘기겠다.