본문 바로가기
기록/Beyond SW

[Beyond SW / 1, 2일차 내용 복습] Linux의 권한 관리와 기본 명령어 정리

by clean01 2024. 5. 14.

사용자와 그룹, 권한 관리

  • 리눅스에서는 사용자를 여러 그룹으로 나누어 관리합니다.
  • 권한 관리를 통해서 특정 사용자나 그룹이 파일이나 디렉토리에 접근할 수 있는 권한을 지정합니다.

root 사용자와 sudo 명령어

  • 여러 사용자 중, 모든 권한이 있는 최상단에 있는 사용자를 root라고 합니다.

root 사용자로 변경하는 명령어. (su는 switch user라는 의미입니다.)
root 계정의 비밀번호를 모르면 사용할 수 없음

su -
  • 시스템 전체 보안에 영향을 미칠 수 있는 명령어는 root가 아닌 일반 사용자는 사용할 수 없습니다.
    • ex) root가 아닌 일반 사용자는 다른 user를 추가할 수가 없습니다.
    • 하지만 root 계정의 비밀번호를 모르면 root 계정으로 전환할 수도 없습니다. :(
    • 따라서 일반 사용자는 sudo라는 명령어를 통해서 root 계정의 권한을 빌려 특정 명령들을 실행할 수 있습니다.
    • sudo 명령어를 쓸 때, 시스템이 비밀번호를 요구한다면, 현재 계정의 비밀번호를 입력하면 됩니다.
    • /etc/sudoers 파일에 sudo를 쓸 수 있는 사용자와 그 명령어가 따로 정의되어 있습니다. (즉, 아무 사용자나 root 권한을 빌릴 수는 없습니다.)

리눅스의 권한 관리

  • 리눅스는 3파트로 나누어서 파일 또는 디렉토리의 권한을 관리하고 있습니다.
    • 소유자
    • 그룹
    • 그 외 사용자
    터미널이 ls -al 명령어를 입력하면 좌측에서 해당 파일 or 디렉토리의 접근 권한이 어떻게 되어있는지 확인 가능합니다.
    하나를 예시로 보면

를 의미하는데, 각각의 파트는 r, w, x로 이뤄져있고, 3개의 비트로 각각 r, w, x 권한을 표시합니다.

  • r: 읽기 권한. r 권한만 있을 시 숫자 4 (100(binary))
  • w: 쓰기 권한. w 권한만 있을 시 숫자 2 (010(binary))
  • x: 실행 권한. x 권한만 있을 시 숫자 1(001(binary))

예를 들어 모든 권한을 가지고 있다면 숫자 7로 표현합니다. (111(binary)
파일에 대한 권한은 소유자 권한 숫자, 그룹 권한 숫자, 그외 사용자 권한 숫자를 붙여서 3자리 수로 표현합니다.
ex) 764 -> 소유자는 rwx, 그룹은 rw, 그외 사용자는 r 권한을 가짐을 의미

권한 관련 명령어

  • chmod [권한] [파일이름]
    • 아주 많이 쓰이는 중요한 명령어입니다.
      • ex) chmod 764 test.sh
      • ex) chmod u+x test.txt: 소유자에게 실행 권한 추가
      • ex) chmod g-w test.txt: 그룹에게 쓰기 권한 뺏기
      • ex) chmod o=r test.txt: 그 외 사용자에게 읽기 권한만 주기
  • chown [소유자]:[소유그룹] [파일명]
    • 특정 파일의 소유자와 소유 그룹을 새롭게 부여합니다.
    • ex) chmod user2:user2 test.sh
  • su [유저이름]: 현재 유저 전환

자주 사용하는 리눅스 명령어

디렉토리 관련

  • pwd: 현재 위치 경로 출력
  • mkdir: 새로운 디렉토리 생성
  • ls: 현재 디렉토리에 있는 파일 리스트 출력
    • ls -l: 자세히 출력
    • ls -al: 숨김 파일까지 자세히 출력
  • cd: 디렉토리 이동(change directory). 절대경로, 상대경로로 디렉토리를 이동할 수 있습니다.
  • history: 지금까지 실행한 커맨드 조회 회사의 중요한 파일 rm -f로 날려버리고 안했다고 거짓말 치면 안되는 이유

파일 관련

  • rm [파일 이름] : 파일 또는 디렉토리 삭제
    • rm -f: 강제 삭제(지울건지 되묻지 않음)
    • rm -r: 디렉토리 하위에 있는 모든 것을 재귀적으로 삭제
  • cp [src] [dest] : 파일, 디렉토리를 복사
    • cp -r: 디렉토리 하위의 것들을 모두 재귀적으로 복사
  • mv [src] [dest]: 파일, 디렉토리를 이동. 이름 바꾸기, 잘라내기 시에 사용
  • touch [파일 이름] : 빈 파일 생성
  • cat [파일 이름]: 파일 전체보기
  • head, tail: 파일의 위, 아래에서 10행까지 보기

찾기, 검색과 관련한 명령어

grep

  • 파일 내에서 특정 패턴이나 문자열을 검색합니다.
grep [옵션] [패턴] [파일명]
  • -r 옵션: 디렉토리 내 모든 파일에서 검색
  • -i 옵션: 대소문자 구분 안함
  • -n 옵션: 라인 수(어느 라인에 위치해있는지) 출력

ex)
현재 디렉토리에서 하위에 있는 모든 파일(하위 디렉토리도 포함) 내용 중, "hello"가 포함된 파일의 부분과 그 라인 수를 출력하기

grep -rni "hello"

grep이 유용하게 쓰이는 것은 '|'와 같이 쓰일 때입니다.
'|'는 왼쪽 커맨드를 실행한 결과를 오른쪽으로 넘기고, 그 안에서 오른쪽 커맨드를 실행한 결과를 출력하도록 합니다.
아래 예시는 현재 실행 중인 모든 프로세스 중에서, 이름에 "nginx"라는 단어가 포함된 프로세스 목록을 찾는 명령어입니다.
ex)

ps -ef | grep "nginx"

find

  • 파일이나 디렉토리를 검색하여 위치를 출력합니다.
find [경로] [옵션] [행동]
  • name 옵션: 파일명으로 검색
  • f, -d 옵션: 파일 타입으로 검색 (파일 또는 디렉토리)
  • exec, , {}:
    • exec: find로 찾은 결과에 대해 실행 명령
    • : exec의 종료 지점
    • {}: find로 찾은 대상이 담기는 곳

ex) 현재 경로에서 이름이 ".sh"로 끝나는 파일 찾기

  find . -name "*.sh"

ex) 현재 경로에서 이름이 ".sh"로 끝나는 파일 중에, 이름에 "hello"가 들어가는 파일 찾기

  find . -name "*.sh" | grep "hello"

ex) 현재 경로에서 이름이 ".sh"로 끝나는 파일들 중, 그 파일의 내용 중 "hello"가 포함되어있다면 그 부분을 라인수와 함께 출력

  find . -name "*.sh" | xargs grep -n "hello"

프로세스 관련 명령어

  • ps -ef: 실행 중인 모든 프로세스 출력
    • e 옵션: 모든 프로세스
    • f 옵션: full format
  • kill -9 [프로세스 아이디]: 프로세스 강제 종료
    • -9 옵션: 강제 종료
    • -15 옵션: 정상 종료

네트워크 관련

nslookup

특정 도메인의 IP 주소 매핑을 조회할 때 사용.
즉, 도메인을 던져주고 이 도메인의 퍼블릭 아이피가 뭐냐를 묻는 것입니다.

nslookup naver.com

ifconfig

IP 정보 등 네트워크의 설정 정보를 출력합니다.

ping [호스트네임 또는 퍼블릭 아이피]

네트워크 연결상태를 확인할 때 사용하지만, 많은 서비스가 보안상의 문제로 막아두고 있습니다.

nc -zv (netcat) 또는 telnet

nc -zv [도메인 또는 아이피] [포트번호]

위와 같은 형식으로 사용하며, 특정 아이피의 특정 포트까지 열려있는지를 확인합니다.

ex)

nc -zv naver.com 443

ssh

원격 호스트와의 터미널 세션을 제공합니다. (=다른 호스트에 원격 접속)

[유저이름]@[호스트 네임 또는 퍼블릭 아이피]

scp

원격으로 파일을 전송할 수 있는 명령어입니다.

scp [source] [destination]

Beyond SW에서 배운 내용들 중 몰랐거나 활용도가 높을 것 같은 내용을 위주로 복습해보았습니다. :)

Reference

  • Beyond SW 7기 수업 및 수업 자료

'기록 > Beyond SW' 카테고리의 다른 글

Beyond SW 7기 5주차 회고록  (3) 2024.06.18
Beyond SW 7기 4주차 회고록  (6) 2024.06.09
Beyond SW 7기 3주차 회고록  (7) 2024.06.02
Beyond SW 7기 2주차 회고록  (8) 2024.05.26
Beyond SW 7기 1주차 회고록  (4) 2024.05.19