0부터 시작하는 Linux 공부 - Linux를 살펴보자

Jaehong Lee·2022년 7월 19일
0
post-thumbnail

1. 리눅스의 구조

  • 리눅스는 Tree 형태를 갖는다. 이는 파일로 Direct 접근이 아닌, 루트 파일 시스템인 ' / ' 을 시작으로 하위 Directory를 거치는 구조이다

  • root 사용자는 /root

  • user1의 경우 /home/user1

2. 리눅스에서 파일을 살펴보자

  • /etc/passwd는 현재 시스템 내에 있는 사용자들의 정보를 출력해 준다
  • 파일을 확인해보면, root와 user1 은 일반적인 사용자를 의미한다
  • 하이라이트된 부분을 보면, 일반적인 사용자가 아닌, 기능을 실행할 수 있는 계정들도 있다. 이는, 서비스를 실행해주는 서비스들이라고 생각하면 된다
    • 만약, APACHE가 있다면, 이는 일반적인 사용자가 아니라, 웹 서비스를 실행할 수 있는 계정으로 서비스를 실행할 수 있는 서비스라고 생각해야 한다
    • 즉, 사용자가 서비스를 요청하면, 명령어를 통해 해당 서비스를 실행해주는 계정이 자신의 서비스를 실행시켜 주는 것이다. 이 계정들은 로그인이 불가능하며, 서비스 실행을 위한 계정들이다

3. 사용자 정보를 살펴보자

  • 맨 앞에서 부터 살펴본다

  • root : 계정 이름
  • x : 패스워드로 passwd 파일에 기록되지 않고, /etc/shadow 파일에 저장된다

    • 하이라이트 부분이 password 이다

  • 0 : UID 번호, root 는 super user 이므로 0 이다. user 1 은 일반 사용자 이므로 1000 부터 시작

  • 0 : 뒤에 있는 0은 해당 사용자가 소속되어 있는 그룹의 번호 ( GID ) 이며, 리눅스의 모든 사용자들은 무조건 하나의 그룹 ( Primary Group ) 에 포함되어야 한다
    • 처음 사용자를 생성하면, 사용자 이름과 동일한 그룹이 만들어진다. 그리고 해당 사용자는 자신 이름의 그룹에 자동으로 포함된다
    • groups는 해당 사용자가 어떤 그룹에 포함되어 있는지 보여준다
    • 뒤에 하이라이트 부분이 그룹 명이다
    • 이처럼 사용자는 무조건 Primary Group에 포함되어 있으며, 이 Primary Group에서 벗어날 수 없다. 다수의 Group에 포함될 수 있다

  • root : 계정의 full name
  • /root : 홈 디렉토리
  • /bin/bash : 해당 사용자가 사용하는 shell로, 최근에는 리눅스에서 기본적으로 Bash를 사용하는 경우가 많다 ( Ubuntu 의 경우에는 Dash를 사용하나, 인증 과정에서는 Bash를 사용한다

4. SUPER USER와 일반 사용자

  • user를 변경하면, 홈 디렉토리가 아니므로 ~가 아닌 root로 표시된다
  • ls를 하면 권한이 없으므로 root 디렉토리를 살펴보는 것이 불가능하다

    • super user는 프롬프트가 # 이며, 일반 user는 프롬프트가 $이며, 이 프롬프트는 바꿀 수 있다

  • exit를 하면 root 계정으로 빠져나오며, whoami를 통해 현재 사용자를 출력할 수 있다

5. CD ( 디렉토리 이동하기 )

  • 절대 경로 : /
  • 상대 경로 : . ( 현재 디렉토리 ) , .. ( 상위 디렉토리 )

  • ls의 -a의 a옵션은 내가 있는 현재 위치에서 숨겨진 파일이나 디렉토리를 포함하여 모두 출력해라 라는 뜻이다
    • . 은 현재 디렉토리, .. 은 상위 디렉토리를 의미한다

  • 디렉토리를 이동해서 ls를 해보자
  • 검은 파일은 일반 파일이고, 파란색은 디렉토리다
  • 다음과 같이 앞에 ./을 통해 현재 위치에서 이동해도 되고, 그냥 폴더 이름을 입력해도 이동이 된다
  • cd .. 은 상위 Directory로 이동한다
  • cd - 는 직전 Directory로 이동한다
  • cd 나 cd ~ 는 자신의 Home Directory로 이동한다

6. 파일을 살펴보자 - ls

  • ls : 파일이나 디렉토리의 정보 ( 리스트 ) 를 출력할 때 사용
  • ls -a : 숨겨진 파일이나 디렉토리 출력
  • ls -l : 상세 정보를 출력

  • ' - ' : 일반 파일을 의미한다
  • ' d ' : 디렉토리를 의미한다
  • ' l ' : 링크가 걸려 있는 파일
    • soft link ( 심볼릭 link ) : 바로 가기
    • hard link : 파일을 복사한 것
  • inode란? index-node로 Linux/Unix의 파일 시스템에서 사용되는 자료구조이다. 모든 파일과 디렉토리는 각각 1 개의 inode를 지니며, 각 inode는 해당 파일 / 디렉토리의 소유권, 허가권, 파일 종류와 같은 정보와 실제 데이터의 위치를 저장하고 있다. 이러한 inode는 inode 블록에 모여있다

  • rw- r-- r-- 로 3글자씩 끊어서 읽는다
  • 이는 소유주 / 그룹 / 그 외 사용자 를 나타낸다
  • r은 read , w는 write , x는 execute 다
  • 즉, 소유주는 r,w 권한이 있지만, 해당 파일이 실행 파일이 아니므로 x 권한은 없다
  • 그룹에 포함된 사용자들과 그 외 사용자들은 read만 가능하다

  • 1은 hard link 개수
  • 앞에 root는 소유주
  • 뒤에 root는 그룹
  • 소유주와 그룹은 임의로 변경이 가능하다

  • 앞에 1773 은 파일이나 디렉토리의 크기 이다
  • 뒤에 날짜 및 시간은 생성 및 변경한 마지막 날짜 및 시간 이다

  • 다음과 같이 숨겨진 파일과 디렉토리의 세부 정보들을 함께 보이게 a 옵션과 l 옵션을 합쳐서 al 로 사용 가능 하다

7. 파일을 살펴보자

cat 으로 파일 전체 내용 출력하기

more로 출력하기

  • space로 한 페이지씩 내려간다
  • enter는 한 줄씩 내려간다
  • b는 거꾸로 이동
  • q는 빠져나가기

less로 출력하기

  • 방향키로 조작할 수 있다
  • q로 빠져나간다

head / tail

  • head는 파일의 상위를 출력
  • tail은 파일의 하위를 출력
  • head로 상위 정보만 볼 수 있다
  • head -n을 하면 상위 n번째 줄까지 출력한다
  • tail -n은 하위 n번째 줄까지 출력한다

8. 파일을 만드는 5가지 방법

  1. touch : 빈 파일 만들기. 실제 목적은 시간을 갱신하기 위한 것이나 주로 빈 파일을 만드는 용도로 사용된다

    • 다음과 같이 파일을 생성하자
    • 내용을 추가하고, 다시 touch하면, 내용은 변경되지 않고, 시간만 변경된다
  2. 표준 출력 echo를 통해 redirection 해서 파일을 생성 가능하다 - echo "" > 파일명

    • " " 내용을 test1.txt에 저장했기에, 빈 파일이 생겼다
    • ' > ' 는 덮어씌우기, ' >> ' 는 추가하기 이다
    • ' > , < ' 는 입력과 출력을 지정하여, 입력한 DATA의 출력을 지정해준다
  3. 편집기를 통해 파일 생성 1 - ' gedit 파일명 '

    • 편집기로 새 파일 생성 후 SAVE 해야지만 파일이 생긴다
  4. 편집기를 통해 파일 생성 2 - vi(m)

    • vi(m) : vi improved 로 기존에 있었던 편집기인 vi 의 성능을 개선 시킨 것으로 화면 단위 편집기 이다
    • esc -> : wq를 입력해서 저장하고 빠져나가면 파일이 생성된다
    • vi 를 사용하면 방향키 , 키패드 등의 사용에서 불편함이 많다. 따라서, vim 사용을 추천한다
  5. cat과 EOF를 이용하여 여러 내용이 들어간 파일을 생성

    • EOF는 END OF FILE로 다음과 같이 EOF를 통해 여러 줄을 추가하여 새 파일을 생성할 수 있다
    • hello.txt 파일을 생성하는데, 아래 EOF 키워드가 나오기 전까지의 내용을 추가하겠다는 의미다
profile
멋진 엔지니어가 될 때까지

0개의 댓글