Linux | 리눅스 기초 1

Sua·2021년 1월 2일
0

Linux

목록 보기
1/4
post-thumbnail
post-custom-banner

디렉토리와 파일

  • ls
    현재 디렉토리의 파일 목록을 출력하는 명령어
    ls
    ls -l은 자세히 보기(-은 파라미터(parameter)라는 의미)

  • pwd
    현재 위치하고 있는 디렉토리를 알려주는 명령어

  • mkdir
    mkdir 새로 생성할 디렉토리명

  • cd
    cd 이동할 디렉토리의 경로명
    change directory

  • 부모 디렉토리로 가는 방법 2가지

    1. cd /home/sua 절대 경로
    2. cd .. 부모 디렉토리로 이동하는 명령. 참고로 현재 디렉토리는 . 상대 경로
      (최상위 디렉토리는 루트(root) 디렉토리라고 하며 /이다.)
  • clear
    화면을 깨끗이

  • rm
    remove 삭제
    rm 파일명
    rm -r 디렉토리명

--help와 man

  • --help
    명령어 뒤에 --help를 붙이면 명령의 사용설명서가 출력된다.
    ls --help
    rm --help
    mkdir --help
    pwd --help

  • man
    man ls
    man rm
    특정 단어를 검색하고 싶을 때는 / 입력 후 원하는 단어 검색, 알파벳 N으로 이동
    Q로 빠져나옴

help는 화면을 빠져나가지 않고 간단한 매뉴얼을 출력
man은 전용페이지로 이동해서 상세한 매뉴얼을 출력

  • 사용설명서 보는 법
    1) mkdir --help
    mkdir -p dir1/dir2/dir3/dir4 부모 디렉토리를 생성하고 자식 디렉토리를 만든다.
    mkdir -parents dir1/dir2/dir3/dir4 위와 같은 의미

    2) ls --help
    ls -a 모든 파일을 보여 준다. 숨김 파일은 앞에 .이 붙는다.
    ls -al 감춰진 파일을 보여주는 것(ls -a)과 자세히 보여주는 것(ls -l)을 함께 하고 싶을 경우, 많이 씀.
    ls -S 대문자 구분, 파일 사이즈를 기준으로 sort, largest부터


필요한 명령을 검색으로 찾는 법

  • 구글에서 영어로 검색
    create directory in linux, file copy in linux, move file in linux
  • cp cp.txt dir1/cp.txt 파일 복사하기
    mv mv.txt dir1/mv.txt 파일 이동하기
    mv rename.txt rename2.txt 파일 이름 바꾸기

sudo

  • sudo - super user do
  • 리눅스, 유닉스 계열 컴퓨터는 다중 사용자 시스템, 각 사용자마다 permission 부여
  • super user, root user로 활동하면 rm -rf / 루트 디렉토리에 있는 모든 파일을 삭제하라는 명령을 실수할 수 있음(절대 하면 안 됨)
  • 새로운 프로그램을 설치하고 싶을 때 apt-get install git하면 거부됨. sudo apt-get install git라고 해야 함. 즉, 임시로 그 명령만 super user의 권한으로 실행하도록 하는 것이 sudo

파일편집 (nano)

  • 파일에 정보를 추가하고 편집하는 방법으로서 nano 에디터를 사용하는 방법을 알아본다.

  • 파일 = 정보를 저장하는 가장 기본적인 저장소
    디렉토리 = 그 파일을 잘 보관하기 위한 수납함

  • 파일에 정보를 저장하는 방법?
    명령어 기반의 시스템에서도 메모장 같은 편집기가 있다. 초급은 nano, 중고급은 vi을 추천한다.

  1. 입력창에 nano 입력
  2. 내용 입력
  3. ^O(Write Out)은 ctrl + O
    파일 이름 입력 hello.html 엔터키
  4. ctrl + X로 빠져나옴.
  5. 다시 편집하고 싶으면 nano hello.html
  • 내용 편집
  1. ctrl + K Cut Text 잘라내기(한 줄 다)
  2. ctrl + U Uncut Text 붙여넣기
  3. 일부만 잘라내기, 붙여넣기 하고 싶을 경우 ctrl + 6 누르면 Mark Set이 된다.
  4. 검색 ctrl + W

패키지 매니저

  • 운영체제에 기본적으로 설치되어 있지 않은 프로그램을 쉽게 설치할 수 있는 방법이 패키지 매니저를 이용하는 것이다. apt를 이용해서 패키지를 관리하는 방법에 대해 알아본다. (yum도 있다.)
  1. apt로 설치할 수 있는 소프트웨어의 목록을 최신 상태로 업데이트
    sudo apt-get update;

  2. 검색
    sudo apt-cache search htop
    htop과 관련된 패키지들의 목록을 보여줌

    • htop이란? 기본적으로 리눅스에는 top이라는 프로그램이 설치되어 있음. 작업관리자. 하지만 보기가 어려움. top을 개선한 프로그램이 htop.
  3. 설치
    sudo apt-get install htop
    설치할 것인지 물어보면 y 입력

  4. 설치된 프로그램 업그레이드
    sudo apt-get upgrade htop

  5. 삭제
    sudo apt-get remove htop


다운로드 방법 (wget, git)

명령어 기반의 시스템에서 파일을 다운로드 하는 방법을 소개한다.

wget

  • wget으로 url을 통해 파일을 다운로드할 수 있다.
    wget 파일url

git

  • git은 버전 관리 시스템 중 하나

  • git을 통해 오픈소스 코드를 다운로드 하는 법

    1. React github 사이트로 들어가서, 소스코드의 url 다운 https://github.com/facebook/react.git
    2. git 설치
      sudo apt-get install git
    3. 오픈소스 복제(clone)
      git clone https://github.com/facebook/react.git react_src
      react_src라는 디렉토리에 이 주소가 가리키는 오픈소스 프로젝트가 다운로드됨(오픈소스의 파일 뿐만 아니라 모든 변천사들을 다 복제)
    4. 확인
      ls -l로 확인
      cd react_src/로 들어가서 ls -l하면 모든 소스코드가 클론되어 있음

왜 CLI인가?

  • 왜 배우기 어려운 명령어(CLI)를 사용하는 것일까?

    1. GUI에 비해서 용량, 메모리, CPU가 적게 든다.
    2. 순차적 진행이 가능하다.
      mkdir whycd why 명령을 한 번에 mkdir why; cd why로 실행할 수 있다.
      즉, 여러 명령을 한 번에 전달 후 종료 시 결과만 보고 받는다.(계속 지켜볼 필요가 없다.)
    3. 파이프라인? 하나의 프로그램의 결과를 다른 프로그램의 입력으로 준다.
  • grep이란?
    원하는 정보가 들어있는 행을 찾는 명령어
    grep linux linux.txt linux.txt 파일에서 linux가 포함된 행만을 화면에 출력

  • 파이프 라인
    파이프( | )로 프로그램을 연결, 앞 프로그램의 출력을 뒷 프로그램의 입력으로 연결

    • 예시1
      ls --help | grep sort
      --help로 출력된 내용을 (파이프로 연결해서) grep의 명령으로 입력한다. 그리고 grep은 sort를 포함한 행을 불러온다.

    • 예시2
      ps aux | grep apache
      ps aux로 컴퓨터에서 현재 실행되는 프로그램의 리스트를 확인 가능, 그 중 apache라는 텍스트가 포함된 것들만 출력


IO Redirection

  • Input/Output 입력/출력 Redirection 방향을 바꾼다

output

  • ls -l의 결과값을 파일로 저장하고 싶으면? ls -l > result.txt
    (cat result.txt로 저장되었는지 확인)
    -> 원래 화면에 출력되는 것인데 파일에 저장되게 했음 = output의 출력의 방향을 바꿈, 리다이렉션

  • 유닉스 계열의 시스템은 어떤 프로그램이 실행(process)될 때 출력 형식이 2가지이다.
    Standard Output(성공)와 Standard Error(오류가 있을 때)

    1. Standard Output
      ls -l 1> result.txt
      1 :Standard Output(생략 가능) / > : Redirection

    2. Standard Error
      rm rename2.txt 2> error.log
      2 : Standard Error / > : Redirection

    3. 둘 다 적용
      rm rename2.txt 1> result.txt 2> error.log
      실행 결과에 따라 저장됨

프로그램? 프로세스?

프로그램은 컴퓨터에 저장되어 있는 코드, 그 프로그램이 실행되고 있는 상태를 프로세스
하나의 프로그램은 여러 개의 프로세스를 가질 수 있다.

input

  • 예시1

    1. cat hello.txt
      cat이라는 프로그램의 인자로 hello.txt를 받은 것, Command-line Arguments

    2. Standard Input
      cat 명령, 사용자가 입력하는 정보를 Standard Input 받음
      (ctrl + D를 누르면 나옴)

    3. 리다이렉션
      cat < hello.txt
      cat은 기본적으로 키보드의 입력값을 받지만 <로 리다이렉션을 시켜주면 파일에 저장된 내용을 입력으로 받는다. 1번 방식처럼 그냥 인자로 받으면 되기 때문에 실용적이지 않다.

  • 예시2

    • head linux.txt 10줄만 출력(기본)
      head -n1 linux.txt 1줄만 출력(Command-line Arguments)
      head -n1 < linux.txt 1줄만 출력(Standard Input, Redirection), < 있어도 결과는 같음

    • 출력된 결과를 다시 텍스트에 저장
      head -n1 < linux.txt > one.txt linux.txt 파일의 첫 번째 행만 one.txt에 저장

append

  • 리다이렉션한 결과를 덮어쓰는 게 아니라 추가(append)하고 싶다면 >> 꺽쇠를 두 번 쓴다.
    ls -al >> result.txt
  • 반대로 <<은 여러 개의 입력을 합친다.
  • 만약 실행한 결과를 어디에도 출력하고 싶지 않다면?
    ls -al > /dev/null

쉘과 커널

Shell vs Kernel

  • kernel 알맹이, 핵심 / 하드웨어를 직접적으로 제어하는 운영체제에서 가장 중심이 되는 코어
  • Shell 주변, 껍데기 / 사용자가 입력한 명령을 해석해서 kernel에 전달하는 프로그램
    • (처리 과정) 사용자가 입력한 명령을 해석해서 kernel에게 전달 -> kernel은 하드웨어를 제어해서 어떠한 처리를 수행할 수 있도록 명령 -> 하드웨어는 처리결과를 kernel에게 알려주고, kernel은 shell에게 전달
    • (why shell?) kernel을 직접 제어할 수 없기 때문에 이해할 수 있는 명령어를 입력하면 shell이 해석해서 kernel에 전달하는 것임

bash vs zsh

  • bash, zsh은 여러 shell 중에 하나, zsh이 편의성이 높다. 선호하는 shell을 깔아서 쓰면 된다.
  • echo $0로 어떤 쉘을 사용하고 있는지 확인

쉘 스크립트

  • 쉘을 통해서 여러 명령을 실행시키는 작업을 한번에 실행할 수 있다.
  • 쉘 스크립트는 명령어들이 실행되어야 할 순서를 각본을 짜서 저장해둔 것.
  • 예시
    확장자 log로 끝나는 파일을 정기적으로 bak 파일에 백업을 시키고 싶을 때(bash 사용)
    nano backup backup 이라는 이름의 프로그램을 만들 것 -> nano 안으로 들어감
// nano에서 작성

#!/bin/bash`  // 먼저 이 코드를 무조건 작성해준다. 밑에 작성된 코드가 /bin/bash를 통해 해석되어야 한다는 의미
if ! [ -d bak ]; then  // 현재 디렉토리에 bak라는 디렉토리가 존재하지 않으면(!)
	mkdir bak  // bak 디렉토리를 만든다
fi  // 조건문 종료
cp *.log bak  // 현재 디렉토리의 log로 끝나는 파일을 bak 디렉토리로 저장한다

위 내용 저장 ctrl + X yes enter

./backup 하면 권한이 없다고 나옴
chmod +x backup으로 실행가능한 모드 부여하고, 다시 ./backup 하면 실행됨!


디렉토리의 구조

  • /: 최상위 디렉토리, root
  • /bin: User Binaries, 실행가능한 프로그램, 사용자들이 사용하는 명령들이 위치
  • /sbin: System Binaries, 컴퓨터를 끄거나 재부팅, 시스템 관리자가 사용하는 프로그램
  • /etc: Configuration Files, 어떤 프로그램의 동작하는 방법의 설정을 변경하고자 할 때
  • /dev: Device Files
  • /proc: Process Information
  • /var: Variable Files, 내용이 변하는 파일들(ex. log files)
  • /tep: 재부팅하면 내용이 사라지는 임시 저장 파일들
  • /usr: User Programs
  • /home: 유저의 personal files를 저장하기 위한 디렉토리. Username으로 된 하위 디렉토리가 존재한다. 홈 디렉토리로 바로 이동하기 위해서는 cd ~을 사용하면 된다.
  • /opt: 어떤 프로그램을 설치할 때 자동으로 특정 디렉토리에 설치되는데, 수동으로 설정할 경우 opt에 설치하면 된다.

프로세스

  • 프로세스는 실행되고 있는 프로그램을 의미한다. 여기서는 프로세스에 대해서 알아보고 프로세스의 상태를 확인하는 방법을 공부한다.

컴퓨터의 구조

  • SSD, HDD : Storage, 가격이 싸다. 저장 용량이 크다. 속도가 느리다
  • RAM : Memory, 가격이 비싸다. 저장 용량이 적다. 속도가 빠르다
  • CPU : Processor
  • storage에 깔려 있는 프로그램을 읽어서 memory에 적재, memory의 올라와 있는 프로그램을 cpu가 읽어서 동작

  • process란? 사용자가 입력하는 명령어(command ex. mkdir, top, rm)는 /bin, /sbin 등에 파일의 형태로 저장(storage), 이것이 바로 프로그램. 그 프로그램을 실행하면 memory에 적재. 그리고 processor에 의해 실행되고 있는 프로그램을 process라고 한다.

프로세스 모니터링 (ps, top, htop)

  • ps aux 프로세스 리스트를 보여주는 명령
    ps aux | grep apache apache라는 텍스트를 포함하고 있는 텍스트만 출력
  • sudo kill 22142 프로세스 강제로 종료, 22142는 원하는 프로세스 아이디 값으로 변경 가능
  • top, htop이 좀더 실용적임
    sudo top
    sudo htop

파일을 찾는 법

파일은 2가지 용도로 사용된다. 데이터를 보관하는 파일, 명령을 보관하는 실행파일

locate와 find

  • locate 파일이름 (mlocate 설치해야 함)
    • 디렉토리를 뒤지지 않고 데이터베이스를 뒤진다.
    • 처리속도가 빠르다. 미리 목록을 업데이트 해놓기 때문에(sudo updatedb 현재 파일들의 정보를 저장하는 명령. 리눅스에서는 하루에 한 번 실행)
    • ex) locate *.log
  • find [시작 디렉토리] [어떤 파일인지]
    • 디렉토리를 직접 뒤진다.
    • 현재 상태를 가져올 수 있다.
    • 다양한 사용법이 있어서 많이 쓰인다.
    • ex) sudo find / -name *.log 루트 디렉토리에서 시작해서 하위 디렉토리에서 찾겠다. 이름으로 찾겠다. .log로 끝나는 파일을 찾겠다.
      find ~ -name *.log 홈 디렉토리에서 찾겠다. sudo를 안 써도 된다.
      find . -type f -name tecmint.php 파일 확장자를 f(file)로 지정한다.

whereis와 $PATH

  • whereis
    실행파일을 찾아주는 명령어, 실행파일, 소스, 매뉴얼을 찾아준다.

  • $PATH

    • 현재 디렉토리에 ls 등의 명령어가 존재하지 않음에도 불구하고 그냥 ls만 쳤을때 수행될 수 있는 것은 $PATH 때문이다.
    • $PATH에는 여러 경로들이 저장되어 있는데, 만약 어떤 명령을 실행하면 이 경로들을 검색하여 해당 프로그램이 존재하는지 확인하고 발견하면 실행시킨다.

PATH와 관련된 참고사이트
https://m.blog.naver.com/PostView.nhn?blogId=occidere&logNo=220821140420&proxyReferer=https:%2F%2Fwww.google.co.kr%2F


백그라운드 실행

멀티태스킹을 리눅스에서도 할 수 있다.

  • ctrl + z: 실행중인 프로그램을 백그라운드로 보내는 단축키. 이 기능을 실행하면 명령어가 일시 정지된다.
    fg: 작업하던 프로그램이 다시 켜진다.
    fg %2 2번째 프로그램이 켜진다.

  • jobs: 백그라운드 작업들의 목록을 보여준다.

  • kill: 프로그램을 종료시킨다.
    kill %4 일반적인 종료 kill -9 %4 강제종료

  • &가 명령어 뒤에 붙으면 명령어가 실행될 때 백그라운드로 실행된다.
    ls -alR / > result.txt 2> error.log &


항상 실행 (daemon, service)

데몬의 개념

  • 지금까지 배운 ls, mkdir, rm 는 필요할 때 키고 필요없을 때는 꺼져있는 프로그램이다. 반면, 데몬은 항상 켜져 있어야 하는 프로그램이다.
  • 예를 들어 web server 는 언제 web client가 요청을 보낼 지 모르므로 항상 켜져 있어야 한다.

service와 자동실행

  • sudo apt-get install apache2 apache라는 web server 설치
    cd /etc/init.d로 데몬 프로그램들을 확인 가능함

  • 데몬 프로그램을 켜고 끄는 것은 service라는 명령을 통해 수행
    sudo service apache2 start 켜기 (ps aux | grep apache2 로 확인)
    sudo service apache2 stop 끄기

  • 추가 내용
    만약 어떤 프로그램이 부팅될 때 자동으로 실행하고 싶으면 /etc/rc3.d에 프로그램의 링크를 걸면 된다. (rc3.d CLI로 구동하고 있을 경우, rc5.d GUI로 구동하고 있을 경우) 이 때 이름이 S로 시작하면 시작, K로 시작하면 시작하지 않는다.


정기적으로 실행 (cron)

  • cron은 정기적으로 명령을 실행해야 할 경우에 사용한다. 정기적으로 메일을 보내거나 백업을 하는 등

  • crontab -e로 에디터 입장
    minute / hour / day of month / month / day of week / command 순서로 입력한다.

  • ex) */1 * * * * date >> date.log 2>&1

    • 1분에 한 번 현재 시간을 date.log에 입력한다는 의미
    • 각 위치에 *을 입력하면 아무것도 설정하지 않는 것이다.
    • 2>&1 표준에러를 표준출력으로 리다이렉션, 즉 에러도 함께 출력된다.
  • tail -f date.log date.log를 감시하고 있다가 뒤 쪽에 텍스트가 추가되면 자동으로 화면에 리프레시


쉘을 시작할 때 실행

Startup script

  • Startup script은 쉘을 시작했을 때 특정 명령어가 자동으로 실행되도록 하는 방법이다.

  • alias l='ls -al' 별명, 단축키
    alias ..='cs ..'
    alias c='clear'

  • 이러한 명령어를 쉘이 시작될 때마다 실행되도록 하려면? (bash에서)
    cd ~
    nano .bashrc 안에서 작성해두면 된다.


다중 사용자

  • 유닉스 계열 운영체제는 여러 명이 함께 사용할 수 있는 기능을 가지고 있다. 이 기능은 강력 하지만 혹독한 대가도 따른다. 배우기 어렵고, 보안의 문제가 발생할 수 있다

  • id 나는 누구인가
    who 이 컴퓨터에 누가 접속해있는가


관리자와 일반 사용자

  • super(root) user vs user

  • sudo 명령어 일시적으로 슈퍼 유저의 권한으로 실행한다. 슈퍼 유저가 될 수 있는 일반 유저만 가능

  • 슈퍼 유저가 되는 방법?
    먼저 자신이 슈퍼 유저인지 판단. 슈퍼 유저는 root라는 이름을 가지고 있음. $ 일반유저, # 슈퍼유저

    1. 슈퍼 유저 되려면
      su - root로 슈퍼 유저 되기
      exit로 빠져 나오기

    2. 우분투에서 수퍼 유저 되려면
      sudo passwd -u root u는 unlock의 의미 (안 되면 sudo passwd root로 먼저 비밀번호를 설정)
      su - root로 슈퍼 유저 되기
      exit로 빠져 나오기
      sudo passwd -l root로 super user 사용을 잠그기

  • 루트 사용자의 홈 디렉토리는 /root이다.


사용자의 추가

  • sudo useradd -m [username] 사용자 추가
  • sudo passwd [username] 비밀번호 설정
  • sudo usermod -a -G sudo [username] super user 권한을 가질 수 있도록 설정
  • su - [username] 해당 유저로 로그인

권한 (permission)

Permission

  • 유닉스 계열에서 퍼미션이란 User가 File & Directory를 Read & Write & Excute 할 수 있도록 또는 할 수 없도록 제어하는 것이다.

  • 사용자1
    touch perm.txt 파일 생성
    ls -l perm.txt로 파일의 소유자 확인
    echo 'hi' > perm.txt 파일에 내용 넣기

  • 사용자2
    cd /home/사용자1
    echo 'hello' > perm.txt 소유자가 아닌 사람이 쓰기를 했을 때 Permission denied 당한다.

ls -l perm.txt했을 때 나오는 정보를 자세히 알아보기

  • type : -이면 파일, d면 디렉토리
  • access mode : 3등분으로 나눠서 owner, group, other 각각의 권한을 의미한다.
    • r : read 읽기, w : write 쓰기, x : excute 실행
    • rw-rw-r--는 소유자와 그룹은 읽기와 쓰기가 가능하고, 그 외는 읽기만 가능한다는 의미
  • owner와 group의 이름

권한을 변경하는 방법(chmod)

access mode를 변경하고 싶다면 chmod 명령어를 사용한다.

  • other의 read 권한을 없애고 싶다면? chmod o-r perm.txt
  • 모든 사용자가 읽을 수 있게 하고 싶다면? chmod o+r perm.txt
  • 소유자가 읽을 수 없게 하고 싶다면? chmod u-r perm.txt

실행의 개념과 권한 설정

실행이란?

  • 실행 가능한 파일 만들기
    nano hi-machine.sh
    -> nano로 들어옴
    #!/bin/bash /bin/bash를 이용해서 아래 코드를 해석해서 실행하라 뜻
    echo 'hi hi hi hi'
    -> nano 나감
  • ./hi-machine.sh라고 치면 에러가 나온다. (Permission denied)
    반면, /bin/bash hi-machine.sh이라고 치면 실행된다.
  • 어떤 특정한 파일을 프로그램처럼 실행하고 싶다면 파일에 실행 권한을 주어야 한다.
    chmod u+x hi-machine.sh; 이렇게 실행 권한을 주면
    ./hi-machine.sh이 정상적으로 실행된다.

directory의 권한

  • 디렉토리는 읽기, 쓰기, 실행이 불명확하다.

  • 실습을 위해 mkdir perm;cd perm;echo 'hi' > perm.txt 작성

  • perm 디렉토리 정보 :drwxrwxr-x 2 sua sua 4096 1월 7 17:50 perm

    • r : 디렉토리 안에 소속되어 있는 파일과 디렉토리를 열람할 수 있느냐
    • w : 디렉토리 안에 파일을 생성할 수 있느냐, 파일 이름 변경, 파일 삭제 등
    • x : cd 명령으로 그 디렉토리에 들어갈 수 있느냐
  • Tip) 디렉토리 안에 디렉토리가 있을 경우, 한꺼번에 모두를 바꾸고 싶을 경우
    chmod -R o+w perm R은 recursive 재귀적

chmod 사용법 정리

  • chmod는 중급자로 갈수록 중요해지는 명령
    chmod [options] mode[,mode] file1 [file2 ...]

  • 이 때까지는 액세스 모드를 지정할 때 chmod o+w perm.txt 방식을 사용했었음. 사람이 이해하기 쉬우나, 한 번에 여러 설정을 바꿀 수 없다.
    chmod o+r perm.txt
    chmod o+x perm.txt 이렇게 여러 번 작성해야 함.

  • 방법 1: 8진수 모드

    #PermissionrwxBinary
    7read, write and executerwx111
    6read and writerw-110
    5read and executer-x101
    4read onlyr--100
    3write and execute-wx011
    2write only-w-010
    1execute only--x001
    0none---000
    • chmod 111 perm.txt 하면
    • ---x--x--x 1 sua sua 3 1월 7 17:50 perm.txt으로 한 번에 변경됨
  • 방법 2

    • chmod a+r perm.txt 모든 사용자에 대해서 r 권한 부여
    • chmod a=rwx perm.txt 모든 사용자에 대해 모든 권한 부여
    • chmod a= perm.txt 모든 사용자에 대해 모든 권한 삭제

https://en.wikipedia.org/wiki/Chmod 참고하기


그룹

  • user, other가 아닌 특정 사람들에게만 파일에 대한 권한을 주고 싶을 때, group으로 묶고 이름(ex. developer)을 부여한다.
    (리눅스는 다중 사용자 시스템이므로 그룹이 별로 중요하지는 않다.)

  • 예시
    developer라는 그룹에 속한 사용자는 파일을 수정할 수 있는 권한이 있고, 속하지 않는 사용자는 수정할 수 있는 권한이 없다라고 가정
    cd /var 이 디렉토리는 변화가 잦은 파일이 위치
    mkdir developer Permission denied
    sudo mkdir developer
    cd developer
    echo 'hi, egoing > egoing.txt Permission denied

  • 그룹 만들기

    기억할 필요없이 필요할 때마다 검색을 통해 해결
    groupadd developer developer라는 group 생성, Permission denied
    sudo !! !!은 직전에 입력했던 명령어
    잘 됐는지 확인하려면 nano /etc/group 파일을 열어보면 된다.

  • 그룹 멤버 모으기

    usermod -a -G developer egoing Permission denied
    sudo usermod -a -G developer egoing
    sudo usermod -a -G developer k8805
    exit 후 다시 접속해야 함
    cd /var/developer/ 으로 이동

  • 디렉토리의 그룹 변경

    sudo chown root:developer . .은 현재 디렉토리라는 의미

  • 그룹의 권한 변경

    sudo chmod g+w
    echo 'hi, egoing' > egoing.txt 오류 없이 실행!

본 포스팅은 생활코딩 리눅스 강의(https://opentutorials.org/course/2598)를 참고하여 작성하였습니다.

profile
Leave your comfort zone
post-custom-banner

0개의 댓글