일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- sqli
- mocOS
- Error Based SQL Injection
- MySQL
- los.rubiya.kr
- sql injection
- No module named ‘requests’
- utmp
- goblin 3번
- btmp
- SQLi wargame
- Kail Linux
- 우분투
- 2002(HY000)
- Python requests 설치
- LOS 5번
- 1819 (HY000):
- M2
- ModuleNotFoundError: No module named ‘requests’
- SQL i
- ubuntu
- docker compose
- Lord of SQL Injection
- Lord of SQLinjection
- XAVIS
- Union SQL Injection
- blind SQLi
- 가상머신 os
- UTM
- str_replace함수
- Today
- Total
klaus
[KDT-DAY_13] Linux (feat. 편집기, 권한) 본문
1. 편집기(vi / vim / Gvim)
[+]Vi와 Vim, Gvim
Linux에서 전통적으로 사용해오는 vi와 vi를 좀 더 개선한 vim 편집기부터 알아보자. CLI에서만 동작되므로 일부 사용자들은 불편하다고도 하지만 1976년에 만들어지고 1978년에 처음 BSD UNIX에 탑재된 이후 아직도 UNIX/Linux 매니아 사이에서는 디폴트 GUI 에디터인 gedit 보다 이 vi를 더 많이 사용하고 있다는 통계도 있다.
CentOS에서는 Vi보다 Vim(Vi IMproved)을 사용하게 되어 있다. 1991년에 나온 vim은 vi의 별칭인데 alias |grep vi 해보면 vim이라고 나온다. vim은 Perl, Python, 그리고 PHP의 기본 편집기이기도 하다. 시스템 전체적으로 vim의 형태를 조절하려면 /etc/vimrc 파일에서 조절할 수 있다. 사용법은 vi와 동일한데 화면이 TUI처럼 보이고, 줄 번호가 gedit 처럼 우측하단에 보여서 사용하기 좀 더 편리해 보인다.
=>gvim은 vim의 GUI 버전이다.
※ BSD : Berkeley Software Distribution
- 이동 모드
키 | 내용 |
Ctrl+d/u | 반 페이지 아래/위로 이동 |
Ctrl+f/b | 한 페이지 앞/뒤로 이동 |
G/1G | 맨 끝줄/첫줄로 이동 |
:set nu | 줄 번호를 붙임 |
g/줄_수 | 현재 줄에서 주어진 줄 수만큼 이동 |
- 파일모드
명령어 | 내용 |
:w, :w! | 현재 파일을 강제로 저장 |
:wq | 현재 파일을 저장하고 vi를 종료 |
:q | 현재 파일을 저장하지 않고 vi를 종료 |
:q!, :wq! | 강제로 vi를 종료, 강제로 저장 후 vi 종료 |
- 검색 모드
명령어 | 내용 |
/[단어] | 주어진 해당 단어의 텍스트를 앞에서 찾음 |
/ | 동일한 텍스트를 앞에서 다시 찾음 |
?[단어] | 주어진 해당 단어의 텍스트 뒤에서 찾음 |
? | 동일한 텍스트를 뒤에서 찾음 |
- gedit
CentOS에서의 디폴트 GUI 편집기이다. 사용법은 직관적이어서 매우 쉽다.
- nano
nano 역시 간편한 텍스트 편집도구이다.
- mc
이 mc(Midnight Commander) 편집 프로그램은 예전 DOS 시절부터 Linux에서 파일 관리용으로 널리 사용되던 TUI 방식의 프로그램이다.
- ed
이 도구는 IBM에서 만든 편집기인데 콘솔에서 주로 사용된다.
2. Linux 권한
[+] Linux 쉘의 종류
종류 | 설명 |
Bourne Shell | /bin/sh 로써 모든 쉘의 원조 격이다.( 뼈대) |
korn Shell | /bin/ksh로써 본 쉘을 모방해서 만든 쉘로 많이 사용하지 않는다. |
C Shell | /bin/csh로써 본 쉘의 단점을 보강한 C 언어의 특성을 가지고 있는 쉘이 다. |
Bourne Again Shell | /bin/bash로써 본 쉘과 C 쉘의 특징을 모두 가진 Linux의 디폴트 쉘로 bash 쉘이라고 부른다. |
- 쉘 파일
쉘 변경도 가능하다.
[+] 리눅스의 환경파일!
환경 파일은 부팅 시 시스템(전체)와 사용자(개인)별로 환경 변수가 저장된 파일을 불러와서 작업하는 환경을 만들어주는데 다음과 같은 것이 있다. windows 서버에서의 Raoming profile과 유사한 개념
환경파일 | 설명 |
/etc/profile | 전반적인 시스템 환경설정 파일로써 시작 프로그램 설정, 로그인 시 최초로 적용 되는 파일로 PATH, USER, MAIL, HOSTNAME 등이 정의되어 있다 . |
/etc/bashrc | 전반적인 사용자에 관한 설정파일로써 alias, umask, 그리고 prompt 등이 정의되어 있다. |
$HOME/.bash_profile | 개별 사용자의 전반적인 환경과 프로그램이 들어 있다. |
$HOME/.bashrc | 개별 사용자가 콘솔로 들어갈 때의 alias, 함수 등이 정의되어 있다. |
$HOME/.bash_history | 개별 사용자가 입력한 명령어, 히스토리 파일 크기 등이 들어 있다. |
- etc아래에 있으면 전반적인 환경 변수이고 HOME아래있으면 개별적으로 사용자 환경변수를 확인할 때 사용한다.
예를들어, /home/centos/.bash_history 각 사용자 별로 명령어를 사용한history를 확인 할 수 있다
[+]adduser 명령어
사용자를 생성할 때 adduser [계정명] [옵션]으로 생성
adduser는 useradd의 심볼릭 링크이다(ls -l /usr/sbin/adduser 하면 useradd의 링크라고 보인다).
adduser를 사용하는 것이 더 좋다.
- 옵션
G : 기본그룹 외에 추가로 특정그룹에 포함시킴
d : 사용자의 홈 디렉터리를 지정해서 사용자를 생성하는데 별도로 지정하지 않으면 ‘/home /계정_명’이 됨
s : 사용자 쉘 지정해서 생성하는데 별도로 지정하지 않으면 /bin/bash가 됨
p : 사용자 생성과 동시에 평문장 패스워드도 지정해서 생성함 등이 있다.
- adduser dotori 하면 자동으로 /bin/bash 쉘과 /home/dotori 홈 디렉터리가 생성
확인 방법은 tail -1 /etc/passwd 와 같이 passwd에서 사용자 명을 확인하고 etc/shadow에서 패스워드를 확인 할 수 있다.
=>사용자의 생성 확인은 /etc/passwd에서 해주고
사용자의 패스워드 여부는 /etc/shadow에서 해준다.
사용자의 그룹 확인은 /etc/group에서 해주면 된다.
id lee 해서 사용자의 UID(User ID), GID(Group ID)를 확인할 수도 있다.
ID와 PW를 같이 만들 때
adduser와 useradd의 차이
useradd는 사용자 홈디렉토리를 자동으로 생성안함 + 기타 등등
adduser는 홈디렉토리를 자동으로 생성함 + 기타 등등
사용자
/etc/login.defs
어떤 중요한 설정 파일을 변경할 때에는 반드시 원본 파일을 백업해두고 작업
어떤 중요한 작업을 할 때에 su root 해서 root 사용자로 작업하는 것도 금물
==sudo를 사용해서 작업한다.
[+] /etc/skel 디렉터리
이 디렉터리는 사용자 생성 시 사용자의 홈 디렉터리에 자동으로 들어가는 항목들이 들어 있는 곳으로 모두 숨김 파일이기 때문에 ls –a /etc/skel 해서 확인할 수 있다. 여기서 설정 값을 변경하거나 악성코드 파일이나 디렉터리를 넣어두면 이제부터 추가되는 사용자들의 홈 디렉터리에는 변경된 파일이나 디렉터리 등이 자동으로 들어가 있게 되어 보안상 문제가 될 수 있어서 /etc/skel 디렉터리를 잘 관리할 필요가 있다.
=>/etc/skel 디렉터리의 특성을 이용한 사용자별 웹 페이지 만들기
보통은 Apache 웹 서버에서 가상 디렉터리로 사용자별 홈 페이지를 설정하지만 앞에서 알아본 /etdc/skel 디렉터리와 사용자 생성 시 자동으로 만들어 지는 ‘/home/사용자’ 디렉터리와의 관계를 이용해서 사용자별로 홈 페이지를 생성할 수 있다.
※ Windows Server 등에서 설정하는 Roaming Profile처럼 사용자가 어느 장소에서 어느 머신으로 서버에 로그온 해도 자신의 홈피를 가지게 하는 기법이다.
앞에서 chmod +x -R /home/* 해서 이미 /home 디렉터리 이하의 권한을 변경했지만 Windows 서버와 다르게 부모의 권한이 자식 디렉터리나 파일로 상속되지 않기 때문에 별도로 다시 해주어야 한다.
vi /etc/httpd/conf.d/userdir.conf
- UserDir disabled 주석처리한다. 즉 사용하겠다는 의미
으로 변경
httpd 서비스 시작
취약점
-리눅스 소프트링크 취약점
- /etc/passwd
- /etc/skel/ ==> 해당 폴더의 경우 사용자 생성시 홈 데릭터리에 자동으로 만들어지는 항목들이 생성되기 때문에 악성코드가 복사 되기 때문에
/etc/login.defs 파일
시간 기준 : 1970년 1월 1일 0시 0분 0초부터
[+] userdel 명령어
- 사용자 삭제
userdel 명령어로 계정 및 패스워드를 삭제할 수 있는데
-r : 사용자가 만든 파일이나 홈 디렉터리도 삭제 옵션이 있다.
[+] usermod 명령어
- 사용자 기존 정보 변경
옵션
a 사용자명 : G 그룹_명 옵션과 함께 사용자를 다른 그룹에 추가함
d 홈_디렉터리 : 사용자의 홈 디렉터리 지정
e 만료일 : 패스워드 만료일 변경
G 추가시킬_그룹 : 추가적으로 그룹에 가입(기존에 해당 그룹이 있어야 함)
g 변경될_그룹 : 사용자_명의 기본 그룹을 변경
s 셀 : 기본 셀을 변경
u UID : UID 변경
l / L 사용자명 : 사용자의 로그인_명 변경, L은 사용자 계정 잠금
m : 홈 디렉터리를 변경하면서 홈 디렉터리 안에 있는 파일도 함께 옮김 등이다. 보통 d 이동 할_디렉터리 옵션과 함께 사용해야 한다.
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
zzz:*:1010:1013::/home/zzz:/bin/bash
수정사항 /etc/passwd파일
root::0:0:root:/root:/bin/bash
mary:x:1008:1011::/home/mary:/bin/fales
hhh:x:1009:1012::/home/hhh:/bin/nologin
zzz:*:1010:1013::/home/zzz:/bin/bash
root는 패스워드 없이 로그인이 되어야 함.
[+] su / sudo
사용자와 권한 전환
∎ su는 앞에서도 보았지만 사용자를 전환할 때 사용한다.
a. 사용자 centos에서 su paul 하고 paul의 패스워드 paul을 넣어주면
paul 사용자로 전환된다. 그러나 paul 사용자가 현재 /home/centos에 있을 때 ls나 touch paul.txt식으로 다른 사용자 centos의 홈 디렉터리에 파일을 보거나 생성하는 것은 허가되지 않는다.
b. 하지만 root 관리자는 어느 사용자의 홈 디렉터리를 보거나 들어가서 작업(읽기와 실행, 쓰기)을 할 수 있어서 위의 명령어를 root에서 해주면 모두 잘 수행된다.
root 사용자에서 su centos 하고, pwd 해서 /home/centos 일지라도 ls, touch root.txt식으로 /home/centos/ 디렉터리의 내용을 보거나 파일을 생성할 수 있다.
c. su, sudo 명령어에서 root 사용자로 전환하거나 권한을 일시적으로 사용할 때 주의해야 한다.
∎ A 사용자가 su B 하면 B 사용자로 완전히 전환하는 것이고
=>B 사용자의 패스워드 입력 <= /etc/pam.d/su 파일에서 지정
∎ A 사용자가 su -c '명령어' 하면 관리자 권한으로 한 번 작업하는 것이 된다.
=>root 패스워드 입력
∎ A 사용자가 sudo '명령어' 하면 일시적으로(5분) root 사용자 권한을 얻는 것이다.
=>A 사용자의 패스워드 입력한다. 하지만 A 사용자가 sudo 명령어를 사용할 수 있게 /etc/sudoers 파일에 등록되어져 있어야 한다. 등록이 안 되어 있으면 오류가 뜬다.
∎ 여러 명이 sudo 명령어를 사용해야 한다면 /etc/sudoers 파일의 %wheel 그룹에 usermod -G wheel -a paul식으로 넣어준다.
cat –n /etc/suoders 해서
100줄 root ALL=(ALL) ALL
107줄 %wheel ALL=(ALL) ALL
110줄 #%wheel ALL=(ALL) NOPASSWD: ALL을 잘 보아 둔다.
∎ A 사용자가 sudo su 하면 root로 전환하게 하는데 /etc/sudoers 파일에 A 사용자가 등록되어져 있으면
=>A 사용자의 패스워드로 root 사용자로 들어갈 수 있다.
정리하면 CentOS나 Ubuntu 머신에서 sudo를 일반 사용자가 실행하려면
∎ CentOS나 Ubuntu의 /etc/sudoers 파일에 직접 사용자를 지정해 주거나
∎ CentOS에서는 %wheel 그룹의 멤버가 되거나
∎ Ubuntu에서는 %sudo 그룹의 멤버가 되면 된다.
'수업 > KDT' 카테고리의 다른 글
[KDT-DAY_15] Linux (feat. 데몬, HW명령어) (2) | 2023.01.15 |
---|---|
[KDT-DAY_14]Linux (feat. 사용자 권한, 그룹, 정보) (0) | 2023.01.12 |
[KDT-DAY_12] Linux (feat. 명령어) (0) | 2023.01.10 |
[KDT-DAY_11] Linux 명령어 (0) | 2023.01.09 |
[KDT-DAY_10] Linux (feat.명령어) (0) | 2023.01.06 |