본문 바로가기

Programming/국비학원

221019 - 리눅스 - 기본 명령어, 사용자/그룹 관리, 파일의 허가권/소유권

https://coding-factory.tistory.com/
https://miniminis.github.io/2020/05/30/linux/linux-thisislinux06/

기본 명령어
  • ls : 디렉토리에 있는 내용(디렉토리, 파일) 리스트 출력
  • 옵션
-l : 파일들 자세히 출력
-a : 경로 안의 모든 파일 출력 (숨김파일 포함)
-al : 숨김파일까지 포함하여 리스트 형태로 출력
-R : 위치한 디렉토리 하부 디렉토리의 파일까지 모두 출력
-h : 파일크기를 해석하기 편하게 출력
-r : 출력 결과를 내림차순 정렬
-t : 출력 결과를 파일이 수정시간을 기준 정렬

 

 

  • ex
ls / : root에 있는 파일 목록 출력
ls /project : /project 경로의 디렉토리에 있는 파일 목록 출력

 

 

 

 

  • cd : 경로 이동
//절대경로
cd /home/centos : 해당 경로로 이동

//상대경로
cd .. : 상위 디렉토리로 이동
cd . : 현재 위치한 폴더로 이동 (새로고침)
cd - : 이전에 위치했던 폴더로 이동 (뒤로 가기)
cd / : ROOT 디렉토리로 이동
cd ~ : 홈 디렉토리로 이동

 

 

 

 

  • pwd : 현재 위치 확인

 

  • rm : 삭제
  • 옵션
-f : 강제로 파일/디렉토리 삭제, 대상이 없는 경우 메시지 출력 X
-r : 디렉토리 내부의 모든 내용 삭제
-d : 비어있는 디렉토리들만 제거
-i : 매번 삭제할 때마다 사용자에게 삭제할 것인지 확인
-l : 3개 이상의 파일 삭제 or 디렉토리 내부가 비어있지 않을 때 => 삭제할 것인지 확인
-v : 삭제되는 대상의 정보를 출력

 

 

 

  • ex
rm test1.txt test2.txt test3.txt //세 파일 삭제

rm -rf * //현재 위치의 모든 파일 제거

rm *.txt //현재 위치의 .txt로 끝나는 모든 파일 제거

 

 

 

 

  • cp : 복사

cp [옵션] [복사할 디렉토리/파일명] [복사 결과물명]

 

 

  • 옵션
-i : 복사될 파일이 이름이 이미 존재할 경우, 사용자에게 덮어 쓰기 여부를 물음
-b : 복사될 파일이 이름이 이미 존재할 경우, 백업파일 생성
-f : 복사 될 파일이 이름이 이미 존재 할 경우, 강제로 덮어쓰기
-r : 하위 디렉토리까지 모두 복사
-a : 원본 파일의 속성, 링크 정보까지 모두 복사
-p : 원본 파일의 소유자, 그룹, 권한 등의 정보까지 모두 복사
-v : 복사 진행 상태 출력

 

 

 

  • ex
cp /user/jtaewu/test.txt new_test.txt //test.txt 파일을 new_test.txt라는 이름으로 현재 위치에 복사

cp /user/jtaewu/test.txt /user/guest/new_test.txt 
// /user/jtaewu 경로의 test.txt 파일을 new_test.txt라는 이름으로 /user/guest에 복사

 

 

 

 

참고

  • 파일 내용 확인, 출력
touch : 파일 생성(크기 0) or 갱신(최종 수정시간 변경)

cat : (conCATenate) 파일 내용 보여줌 (여러 파일 이어서 보여주기 가능)

head : 앞 10행
head -5 파일 이름 //앞 5행 출력

tail : 마지막 10행

more : 파일 읽음 (화면 단위로 끊어 출력) 
// Enter 키 => 한 줄씩 출력 / Space bar => 다음 화면 / b => 이전 화면 / q => 종료
more +100 파일명 //100행부터 출력

less : more + 방향키로 페이지 이동 가능

file 파일명//해당 파일 종류 표시

clear //터미널 화면 기록 지움

man 명령어이름 //매뉴얼 보기

 

 

 

 

사용자 관리

리눅스 => 여러 사용자가 하나의 OS를 사용하는 다중 사용자 시스템(Multi-User System)
=> 사용자 관리, 사용자 그룹 관리 중요

super user : 모든 권한 有 (일반적으로 root 유저)

 

사용자는 반드시 특정 그룹에 소속됨

 

 

 

  • 사용자 정보 관리

gedit /etc/passwd

=> centos:x:1000:1000:centos:/home/centos:/bin/bash //해당 행 전까지는 리눅스 표준 사용자

사용자이름:암호:사용자ID:사용자 소속 그룹ID:전체이름:홈디렉터리:기본셀

 

 

 

 

  • 그룹 정보 관리

gedit /etc/group

그룹이름:비밀번호:그룹ID:그룹에 속한 사용자 이름

 

 

 

1. 사용자 관리 명령어

 

  • useradd : 사용자 생성 
  • 옵션
-g : 그룹 지정
-d : 디렉토리 지정
-s : 쉘(shell) 지정
-p : 패스워드(암호) 지정
-u : uid 지정

 

 

 

  • ex
//사용자 생성
useradd gildong
useradd -u 111 chulsu //사용자 uid정보 변경
groupadd mygroup
useradd -g mygroup chanho
useradd -d /myhome jisung

//비밀번호 설정
passwd 사용자명

 

 

※ root 권한이 있는 유저만 사용자 계정 생성, 삭제 가능


※ 그룹 먼저 생성 -> 사용자 생성 권장

 

 

 

 

  • usermod : 사용자 변경
  • 옵션
-l : 사용자 계정명 변경
-L : 계정을 lock상태로 바꿈 (비밀번호를 입력해도 그 계정으로 접속 X)
-p : 사용자의 패스워드 변경
-u : 사용자의 UID를 변경
-U : lock 되었던 계정을 unlock 
-g : 사용자의 GID를 변경(그룹 변경)
-G : 사용자에게 추가 그룹을 지정(a옵션과 함께 사용)
-c : 사용자에게 설명 부여
-d : 사용자의 홈 디렉터리의 위치 변경 //tail 명령어로 확인 시 실제로 옮겨지진 않음 //m옵션과 같이 사용하면 실제로 옮겨짐
-s : 사용자의 쉘 변경

 

 

 

  • ex
usermod -g mygroup gildong //gildong의 그룹을 mygroup으로 변경

 

 

 

  • userdel : 사용자 삭제 
  • 옵션
-f : 강제 삭제
-r : 계정 삭제 시 모든 정보 삭제

 

 

 

  • ex
userdel gildong //그룹은 남아있음

 

 

 

  • groupdel : 그룹 삭제

 

 

 

 

  • chage : 패스워드 만기 정보 관련
  • 옵션
-l (소문자 l) : 지정한 계정의 정보 표시
-d : 최근 패스워드 수정일자 변경 ('YYYY-MM-DD' 형식 / 1970년 1월 1일부터의 경과일 수)
-E : 계정의 만료일 설정
-m : 패스워드 최소 의무 사용일수 지정
-M : 패스워드 변경 없이 사용할 수 있는 최대 일수 설정
-I : 패스워드 미변경 시 별도 유예기간 지정
-W : 패스워드 만료 며칠 전부터 사용자에게 경고 메시지를 보낼지 설정

 

 

 

  • ex
chage -E 2023/12/12 사용자명  //해당 날짜에 암호 만료, 그때까지 사용 가능
chage -W 사용자명  //사용자에게 만료 전 경고메시지 보냄

 

 

 

2. 그룹 관리 명령어

groups 사용자명 //사용자가 소속된 그룹 출력

groupadd 그룹명 //새 그룹 생성

groupmod //그룹 속성 변경
groupmod -n ezen mygroup //mygroup 그룹명을 ezen으로 변경

groupwd 그룹명 // 그룹 암호를 설정, 관리
groupwd -a gildong ezen //gildong을 ezen그룹 사용자로 추가
groupwd -d gildong ezen //gildong을 ezen그룹 사용자에서 제거
groupwd -A abc mygroup //abc를 mygroup 그룹 관리자로 지정

 

 

 

 

※ /etc/skel : 해당 디렉터리의 모든 내용을 사용자 홈 디렉터리에 복사

[root@localhost ~]# ls -a /home/user1
=>
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla


[root@localhost ~]# ls -a /etc/skel //앞으로 생성하는 사용자에게 특정 파일 전달 희망시 해당 디렉터리에 저장하면 됨
=>
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

 

 

 

 

https://gocoder.tistory.com/1793
https://miniminis.github.io/2020/05/30/linux/linux-thisislinux07/

파일의 허가권, 소유권

ls로 파일 목록 조회 시 보이는 맨앞 문자열

 

drwxr-xr-x  2 root root   38 10월 19 17:41 jsp 
-rw-r--r--  1 root root    0 10월 19 20:57 memo.txt

 

=> 1 3 3 3 음절 단위 분석

 

- / d / b / c / l : 파일 / 디렉토리 / 블럭디바이스 / 문자디바이스 / 링크
1번째 rwx : 소유자 권한

2번째 rwx : 그룹 권한
3번째 rwx : 그 이외 사용자 권한

- : 해당 권한 없음

 

※ 그 뒤 문자열들
링크 수 / 파일 소유자명 / 파일 소유자 그룹 / 파일 크기 / 마지막 변경 날짜,시간 / 파일명

 

 

 

 

  • 퍼미션(권한 정보) 종류

r(읽기) : 파일의 읽기 권한
w(쓰기) : 파일의 쓰기 권한
x(실행) : 파일의 실행 권한