리눅스 명령어에 대해서 학습한 내용을 정리한 글
목차
리눅스
우분투?
1. Bash 쉘
1.1. 터미널
- 콘솔(Console)
- 서버의 로컬 장치에서 직접 명령어를 실행할 수 있는 입출력 장치
- 터미널(Terminal)
- 서버에 로컬 또는 원격으로 접속할 수 있는 콘솔을 구현한 소프트웨어
- 프롬프트(Prompt)
- 사용자와 상호작용가능한 명령을 주고 받을 수 있는 대기 표시자
1.2. 쉘
- 사용자 명령어 및 프로그램을 실행 할 수 있는 인터페이스
1.2.1 쉘의 종류
메인 종류
• Bourne shell : 특징 $ 프롬프트
• C shell : 특징 % 프롬프트
Bourne 쉘의 변천사
• Bourne shell : sh
• Korn shell : ksh
• Bourne Again shell : bash
• POSIX shell : sh
C 쉘의 변천사
• C shell : csh
• TENEX/TOPS C shell : tcsh
1.3. 기본 명령어
화면 출력
• 화면 문자열 출력 : echo
• 터미널 지우기 : clear
명령어 출력 리다이렉션(redirection)
• > : stdout output to…
• >> : stdout append to…
• 2> : stderr error output to…
2. 파일 명령어
2.1. 파일 목록 보기(ls = list)
ls [OPTION]… [FILE]…
다양한 옵션을 이용하여 디렉토리 내 파일 목록 조회하기
• ls : list
• ls -l : long list
• ls -a : all
• ls -a -l : all + long
• ls -al : all + long
• ls *.txt : 확장자가 *.txt 파일인것
2.2. 파일 생성 명령어(touch)
touch [OPTION]… [FILE]…
파일을 툭~ 건드리기
- 정확히는 파일의 변경 시간을 현재 시간으로 바꾸기
- 해당 파일이 존재하지 않는 경우 0바이트 파일 생성
touch hello.txt
2.2.1. 파일 내용 보기 (cat = concatenate → 연쇄시키다)
cat [OPTION]… [FILE]…
파일 내용 보여주기
- 정확히는 input 과 output 을 연결(concatenate)하기
- input = 파일, output = standard out
2.2.2. 파일 내용 보기 (more)
more [OPTION]… [FILE]…
파일 내용 보여주기
• 페이지 단위로 이동 : space
• 줄 단위로 이동 : enter
• more hello.txt
• more /etc/passwd
• more /var/log/syslog
2.2.3. 파일 내용 보기 (less)
less [OPTION]… [FILE]…
파일 내용 보여주기
- 페이지 단위로 이동 : space
- 줄 단위로 이동 : enter
- 상하좌우/페이지 이동 : 방향키(상하좌우) 및 pag up/down
• less hello.txt
• less /etc/passwd
• less /var/log/syslog
more 보다 향상된 기능, 그리고 모든 파일을 메모리에 올리지 않아 more 대비 속도가 빠름
2.3. 파일 다루기
2.3.1. 파일 복사(cp = copy )
cp [OPTION]… [SRC] [DST]
파일 복사
• 사전 준비
touch hello.txt
echo “hello” > hello.txt
• cp hello.txt hello2.txt : 파일 복사
• 확인
cat hello.txt
cat hello2.txt
2.3.2. 파일 링크 (ln = link )
ln [OPTION]… [TARGET] [LINKNAME]
파일에 하드링크/소프트링크(심볼릭 링크)만들기
• 사전 준비
touch hello.txt
• ln -s hello.txt hello2.txt : 파일 링크 생성
• 확인
ls -l
cat hello.txt
cat hello2.txt
2.3.3. 파일 이동 (mv = move )
mv [OPTION]… [SRC] [DST]
파일 이동
mv hello2.txt hello3.txt : 파일 이동
mv hello.txt hello2.txt
• 주의1 : 심볼릭 링크의 원본 파일 이름이 변경 될 경우, 심볼릭 링크는 더 이상 유효하지 않음.
• 주의2 : 이동하고자 하는 곳에 파일명이 이미 존재 할 경우, 해당 파일을 경고 없이 덮어 쓰게 됨 (overwrite)
2.3.4. 파일 삭제 (rm = remove )
rm [OPTION]… [File]...
파일 (또는 디렉토리) 삭제
• rm hello.txt
• rm test1 test2
2.3.4. 파일 속성 보기 (file)
file [OPTION]… [File]...
파일의 속성 보여주기
• file hello.txt
• file /etc/passwd
• file 문서
• file /usr/bin/file
• file hello2
3. 디렉토리 명령어 및 구조
3.1. 디렉토리 구조
• . : 내 디렉토리 = 나 자신 / 현재위치
• .. : 상위(부모) 디렉토리
• ~ : 홈 디렉토리)
• - : 이전 디렉토리
3.1.1. 디렉토리 명령어
• pwd : 현재 디렉토리 위치 출력 (print working directory)
3.1.2. 디렉토리 구조
• 계층적(hierarchical) tree 구조
• 최상위 디렉토리 : / (root directory)
3.2. 디렉토리 다루기
3.2.1.디렉토리 생성 (mkdir = make directory)
mkdir [OPTION]… [FILE]…
디렉토리 생성
• mkdir dir1
• mkdir dir2 dir3\
• mkdir dir1/sub1
• mkdir dir1/sub2
• mkdir dir2/sub1/sub2 : (실패)
• mkdir -p dir2/sub1/sub2 : p = parents
3.2.2. 디렉토리 이동 (cd = change directory)
cd [디렉토리명]
디렉토리 이동
• cd dir1
• cd .. : 부모 디렉토리 = parent directory
• cd dir1/sub1
• cd . : 현재 디렉토리 (변화 없음)
• cd ../..
• cd - : 이전 디렉토리
• cd / : 루트 디렉토리
• cd ~ : 내 홈 디렉토리
3.2.3. 디렉토리 복사 (copy) 및 이동 (move/rename)
cp -r : 디렉토리 복사 (recursive)
• cp -r [src] [dst]
mv : 디렉토리 이동(move/rename)
• mv [from] [to]
3.2.4. 디렉토리 안으로 파일 복사 (cp = copy)
cp [OPTION]… [SRC] [DST]
파일 복사
• 사전 준비
touch test1 test2
• cp test1 dir1 : 디렉토리 안으로 파일 복사
cp test2 dir1
• cp -r dir1 dir2 : 디렉토리 (통째로) 복사
3.2.5. 디렉토리 안으로 파일 이동 (mv = move)
mv [OPTION]… [SRC] [DST]
파일 복사
• 사전 준비
touch test1 test2
mkdir dir1
• mv test1 dir1 : 디렉토리 안으로 파일 이동
mv test2 dir1
• mv dir1 dir2 : 디렉토리 이동 (rename)
3.2.6. 디렉토리 삭제(rmdir = remove directory)
rmdir [OPTION]… [FILE]…
디렉토리 생성
• rmdir dir1
• rmdir dir2
• rmdir dir3
• rmdir -p dir2 : p = parents
참고(주의)
• rm dir1 (실패)
• rm -r dir1 (성공) : r = recursive
3.3. 명령어의 매뉴얼
• man [OPTION]… [PAGE] [COMMAND]
매뉴얼 보기
4. 원격 터미널
4.1. 원격 터미널의 필요성
데이터센터에는 모니터가 없고 원격으로 터미널을 설치해서 진행함.
ssh로 접속 가능!
+ VS code의 확장 기능 ssh를 통해 연결해서 개발 환경을 구성하는 것도 가능
5. 사용자 계정
5.1. 사용자 계정 관리
5.1.1. superuser와 user
슈퍼유저란?
• 시스템 운영 관리자 계정으로 일반적으로 리눅스 운영체제에서는 루트(root) 유저를 말한다.
• 관리자 권한을 일반 사용자 권한과 구분하며 사용자의 부주의로 발생하는 시스템 손상과
바이러스, 악성코드의 침입에 의한 피해를 보호한다.
주요 명령어
• whoami : 내가 누구인지 내 계정 확인
• id : 내가 갖고 있는 권한 및 포함된 그룹 확인
권한의 대여 (사용에 매우 주의!)
• sudo : 슈퍼유저의 권한으로 명령어를 실행 (superuser do = sudo)
5.1.2. 사용자 계정 확인
사용자 계정 확인
• cat /etc/passwd
사용자 암호
• cat /etc/shadow : 권한 오류 확인
• sudo cat /etc/shadow : 사용에 매우 신중해야 함
사용자 그룹 확인
• cat /etc/group
5.1.3. 사용자 추가 (adduser = add user)
adduser [options] [--home DIR] [--shell SHELL] [--disabled-password]
[--disabled-login] user
새로운 사용자 추가
• adduser : 권한 실패 확인
• sudo adduser user2
• cat /etc/passwd : 생성된 사용자 확인
참고 : 빠르게(?) 새로운 사용자 추가 (None-dialog 모드)
• useradd -D : 기본 설정은 /etc/default/useradd 참고
• sudo useradd user2 -m -p abcd1234 -s /bin/bash
5.1.3. 사용자 암호 변경 (passwd)
passwd [username]
사용자 암호 변경 (또는 내 암호 변경)
• passwd : 내 암호 변경
• (sudo) passwd user2 : user2 의 암호 변경
5.1.4. 사용자 이름 변경 (usermod - user modify)
usermod [options] user
사용자 계정 정보 수정
• usermod -c <name change> user2
user2 의 이름(=주석 comment) 수정
• usermod -l <new id> <old id>
사용자의 계정 id 변경 (id만 변경, home 은 그대로 유지됨)
• usermod -l <new id> <old id> -d /home/<new_id> -m <old id>
사용자의 계정 id 변경 후 디렉토리도 변경하며 이전 디렉토리 내용을 함께 이동 함
5.1.4. 사용자 암호 정책 변경 (chage - change age)
chage [options] username
사용자 암호 정책 변경
• chage -l user2 : user2 의 암호 정책 확인
• chage user2 : user2 의 암호 정책 변경
- chage -E 2030-12-31 -m 1 -M 90 -W 7 user2
만료일
최소 유효기간
최대 유효기간
암호 사용만료 예고
5.1.5. 사용자 삭제 (deluser - delete user)
deluser [options] username
사용자 계정 삭제
• deluser user2 : user2 의 계정 삭제
• deluser user2 --remove-home : user2 의 계정 및 디렉토리 삭제
참고 : 빠르게(?) 새로운 사용자 삭제 (None-dialog 모드)
• userdel user2 --remove
5.2.그룹 계정 관리
5.2.1. 그룹 생성 (addgroup - add group)
addgroup [options] group
그룹 계정 생성
• addgroup team1 : team1 그룹 계정 생성
• cat /etc/group
5.2.2. 그룹에 사용자 할당 (usermod - user modify)
usermod [options] user
사용자 계정 정보 수정 / 사용자를 그룹에 추가
• usermod -c <name change> user2 : user2 의 이름 수정
• usermod -a -G team1 user2 : user2를 team1 그룹에 추가
• deluser user2 team1 : user2를 team1 그룹에서 삭제
(순서 변경에 주의)
5.2.3. 그룹 삭제 (delgroup - delete group)
delgroup [options] group
그룹 계정 삭제
• delgroup team1 : team1 그룹 계정 삭제
• cat /etc/group
6. 사용자/그룹 권한
6.1. 사용자 접근 권한의 구분
소유자(User) / 그룹(Group) / 그 외(Other)
0 --- : 권한무
1 --x : 실행
2 -w- : 쓰기
3 -wx : 쓰기 & 실행
4 r-- : 읽기
5 r-x : 읽기 & 실행
6 rw- : 읽기 & 쓰기
7 rwx : 읽기 & 쓰기 & 실행
6.2. 권한 변경 (chmod - change mode)
chmod [options]… [mode]… file…
파일/디렉토리 권한의 변경
• 소유자(User) / 그룹(Group) / 그 외(Other)
• chmod u+x hello.txt : user에 x(실행) 권한 추가
• chmod u-x hello.txt : user에 x(실행) 권한 삭제
• chmod g+rw hello.txt : group 에 rw(읽기/쓰기) 권한 추가
• chmod g-rw hello.txt : group 에 rw(읽기/쓰기) 권한 삭제
• chmod o+rwx hello.txt : other에 rwx(읽기/쓰기/실행) 권한 추가
• chmod o-rwx hello.txt : other에 rwx(읽기/쓰기/실행) 권한 삭제
• chmod +x hello.txt : user/group/other 에 x(실행) 권한 추가
• chmod 700 hello.txt : user에 rwx 권한만 부여
• chmod 760 hello.txt : user에 rwx / group에 rw권한만 부여
6.3. 사용자/그룹 접근 및 실행 권한
6.3.1. 소유권 변경 (chown - change owner)
chown [options]… [USER][:GROUP] file…
파일/디렉토리의 소유자/그룹 변경
소유자(User) / 그룹(Group) / 그 외(Other)
• chown user2 hello.txt : hello.txt의 소유자를 user2로 변경
• chown user2:team1 hello.txt : hello.txt 의 소유자를 user2로, 그룹을 team1으로 변경
• chown :team1 hello.txt : hello.txt 의 그룹을 team1 으로 변경
6.3.1. 그룹 소유권 변경 (chgrp - change owner)
chgrp [options]… [GROUP] file…
파일/디렉토리의 그룹 변경
소유자(User) / 그룹(Group) / 그 외(Other)
• chgrp team1 hello.txt : hello.txt 의 그룹을 team1 으로 변경
• chown :team1 hello.txt : hello.txt 의 그룹을 team1 으로 변경
'IT > 리눅스' 카테고리의 다른 글
[리눅스] 리눅스 기초 내용 정리(리눅스의 기초, 가상 머신에서 구동) (0) | 2023.03.28 |
---|---|
[리눅스] 기초 내용 정리 (리눅스의 운영) (0) | 2023.03.28 |
댓글