[Linux]기초 1

12 분 소요

post-thumbnail

디렉토리와 파일

  • 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에 전달하는 것임

img

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했을 때 나오는 정보를 자세히 알아보기

img

  • 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진수 모드

    # Permission rwx Binary
    7 read, write and execute rwx 111
    6 read and write rw- 110
    5 read and execute r-x 101
    4 read only r– 100
    3 write and execute -wx 011
    2 write only -w- 010
    1 execute only –x 001
    0 none 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)를 참고하여 작성하였습니다.

태그:

카테고리:

업데이트:

댓글남기기