기본적으로 리눅스는 트리구조를 가지고 있습니다.
하나의 뿌리(root) 에서 부터 시작해 가지를 계속해서 뻗어나간다고 생각을 하면 됩니다.
kali의 계정으로 접속해 root 구조를 확인해보도록 합니다.
su kali
su는 substitute user의 줄임말입니다.
( 현 사용자를 로그아웃하지 않고, 다른 사용자의 권한을 획득할 때 사용합니다. )
password 는 kali로 접속해봅니다.
계정으로 접속한 것을 확인 할 수 있습니다.
cd /
ls
위의 명령어를 풀어쓰면 change directory / 이후, list 라는 뜻입니다.
루트로 디렉토리를 변경하고, 루트의 내부 파일, 디렉토리들을 리스트로 뿌리라는 명령어입니다.
위와같은 결과가 나올 것입니다.
여기서 중요도가 높은 디렉토리를 설명하겠습니다.
- /bin : bin은 리눅스에서 사용하는 바이너리 파일이 있는 디렉토리입니다. (실행 폴더 라고 생각하면 편합니다.)
- /dev : device 디렉토리. 즉, 리눅스와 연결되는 하드웨어 장치 파일을 말합니다.
- /etc : 리눅스의 설정파일을 말합니다.(웹 호스팅시, 환경변수 설정도 여기서 진행합니다.)
- /home : 각 계정의 홈 디렉토리들이 존재하는 디렉토리입니다.
- /lib : library의 약자이며, 공유 라이브러리 파일들이 존재하는 곳 입니다.
- /root : root 계정의 홈디렉토리입니다.
- /sbin : system binary이며, 시스템 관리 명령어있는 파일들이 존재하는 곳입니다.
- /tmp : temporary, 임시 디렉토리이며, 누구나 이 디렉토리를 사용할 수 있습니다. 리눅스를 종료하고 다시 실행을 한다면,
tmp 내부 파일들은 전부 사라집니다. - /var : 리눅스가 사용하는 프로그램들이 사용하는 파일을 저장하는 곳입니다.
▶ 상대경로와 절대경로
우리는 방금 /(루트) 라는 최상위 디렉토리에서 트리구조를 확인했습니다.
상대경로와 절대경로의 차이점은 하나입니다.
상대경로 : 자신의 위치를 기준으로 명령을 수행합니다.
절대경로 : 최상위 디렉토리인 /(루트) 를 기술하여 명령어를 작성합니다.
우선 자신의 위치부터 확인을 해봅니다.
pwd
pwd는 현재 자신의 위치를 알려주는 명령어 입니다.
현재 우리는 /(루트)에 위치해있습니다.
이때 kali로 접속할 때의 위치는 /home/kali 로 이동해보겠습니다.
cd home
cd kali
로 이동을 할 수 있습니다. (이것은 상대경로로 자신의 위치에서 있는 폴더에 하나하나 들어가는 방식입니다.)
이때 자신이 루트의 /bin 폴더에 들어가고 싶다면 상대경로로는 복잡한 작업이 들어가야합니다.
cd ../../bin
하지만 이것은 좋은 방법이 아닙니다.
같은 방법일때 우리는 절대경로를 사용하면 더 수월하게 진행을 할 수 있습니다.
cd /bin
절대경로는 /(루트) 부터 기입을해 트리구조의 뿌리부터 자신이 원하는 폴더의 위치까지 기입을 하면 바로 이동을 할 수 있습니다.
▶ 파일의 편집기능
1. vi
이번에는 리눅스 내부 파일의 편집기능을 사용해보겠습니다.
vi test
를 입력하면, test라는 파일을 읽고 내부의 텍스트를 보여주거나, test가 없을 경우 test라는 이름의 파일을 생성해주고 내부로 들어갑니다.
이때, 다른 것들을 쳐봐도 입력이 되지 않을 것 입니다.
vi 는 view 를 뜻한다.
여기서는 i (insert) 를 입력해줘야 파일을 작성할 수 있습니다.
입력을 해봅니다.
my test
make new file name test
my name is grinidia!!
이렇게 작성 이 후, 저장을 하려면 ^C (cntl + C) 를 누르고 :w 를 적용해봅니다.
:w 는 written으로 우리가 작성을 했다는 것을 의미합니다.
이후 이 파일에서 나가고 싶다면 :q (quit) 을 기입합니다.
나와졌다면, 다시한번 파일을 들어가서 확인해봅니다.
vi test
들어갔다면, 우리가 작성한 파일이 재대로 저장이 되어있는 것을 확인할 수 있습니다.
이때 만약 우리가 한줄을 삭제하고 싶다면 DD 를 누르면 됩니다. (insert 상태가 아닌 view 상태입니다.)
여러줄 삭제는 본인이 원하는 줄의 숫자 + DD 를 누르면 숫자의 줄만큼 삭제가 됩니다.
ex) 3 + DD 는 3줄삭제 입니다.
2. cat
cat test
를 하면 test의 내부 글자가 보고있는 쉘에서 뿌려주는 것을 확인 할 수 있습니다.
3. more
more test
를 하면 vi 와 같이 내부로 들어가서 test 파일을 읽을 수 있습니다.
Cat , more , vi 의 사용의 차이
more, vi, cat은 모두 유닉스 및 리눅스 시스템에서 사용되는 명령어이며, 파일 내용을 읽거나 편집하는 데 사용됩니다.
그러나 각각의 목적과 사용법에 차이가 있습니다.
more는 파일의 내용을 한 페이지씩 볼 수 있도록 출력하는 명령어입니다. 파일의 내용이 매우 긴 경우 사용할 수 있으며, 스페이스바를 눌러 페이지를 넘기거나 q를 눌러 종료할 수 있습니다.
vi는 텍스트 파일을 편집하는 명령어입니다. vi는 터미널 환경에서 사용하며, 명령어 모드와 편집 모드 두 가지 모드가 있습니다. 명령어 모드에서는 파일 내용을 조작하는 명령어를 입력할 수 있고, 편집 모드에서는 실제로 파일을 편집할 수 있습니다. vi는 초기에는 사용법이 어려웠지만, 강력한 기능을 제공하고 있어서 여전히 많이 사용됩니다.
cat은 파일의 내용을 출력하는 명령어입니다. 파일의 내용을 그대로 출력하며, more와는 달리 페이지별로 나누지 않습니다. cat은 파일의 내용을 확인하거나 다른 명령어와 조합하여 사용할 때 유용합니다.
따라서, more는 파일 내용을 페이지 단위로 볼 때, vi는 파일을 편집할 때, cat은 파일 내용을 확인할 때 사용됩니다.
▶ 복사
기본적인 명령어는 아래와 같습니다.
cp [원본파일] [복사하고 보낼 목적지]
우리는 이전에 test라는 파일을 만들었습니다.
test를 /home/kali/Public으로 복사를 해보겠습니다.
cp test /home/kali/Public
cd Public
ls
ls로 확인을 해보면 Public 내부에 test가 있는 것을 알 수 있습니다.
다시 /home/kali 로 돌아갑니다.
이번에는 디렉토리를 생성해 보겠습니다.
mkdir dir_test
ls
ls 로 확인을 해보면 dir_test가 생성되어있는 것을 확인 할 수 있습니다.
test 파일과 같이 Public 디렉토리로 복사를 해보겠습니다.
(실패) cp dir_test /home/kali/Public
이번에는 cp: -r not specified; omitting directory 'dir_test' 이라는 오류메세지가 출력됩니다.
오류메세지에서 말하는 것과 같이 -r 을 추가해보겠습니다.
cp -r dir_test /home/kali/Public
cd Public
ls
이번에는 재대로 복사가 되어있는 것을 확인 할 수 있습니다.
이번에는 같은 위치에서 다른이름으로 복사를 해보겠습니다.
cp -r dir_test ./dir2_test
ls
를 적용하면 dir2_test가 생성되어있는 것을 확인 할 수 있습니다.
./ 라고 현재위치로 지정을 해준다면 디렉토리의 명을 바꿀 수 있는 것을 확인 할 수 있습니다.
▶ 삭제
만들었던 test 파일을 삭제해보겠습니다.
rm ./test
ls
rm : remove // test 파일이 삭제가 된것을 확인 할 수 있습니다.
이번에는 디렉토리를 삭제해보겠습니다.
(실패) rm ./dir_test
이번에는 rm: cannot remove './dir_test': Is a directory 라는 오류가 발생됩니다.
위의 cp 명렁어 때와 마찬가지로 디렉토리는 -r의 명령어를 사용해주어야 합니다.
rm -r ./dir_test
ls
확인을 해보면 디렉토리가 삭제된 것을 확인 할 수 있습니다.
이번에는 파일의 강제삭제를 알아보도록 하겠습니다.
파일의 삭제시 root권한이 아닐경우 물어보는 상황이 있습니다. 이때 yes or no를 기입하며, 한번더 삭제를 할 것인지
물어보는 상황이 있으나 강제삭제를 통해서 바로 삭제를 시킬 수 있습니다.
rm -f ./test
test라는 파일을 강제삭제 시켰습니다.
이번에는 디렉토리를 강제삭제 시키겠습니다.
(실패) rm -f ./dir_test
이번에도 rm: cannot remove './dir_test': Is a directory 오류가 발생합니다.
rm -rf ./dir_test
로 작성을 해주어야 디렉토리의 강제삭제가 진행됩니다.
▶ 이동
파일과 폴더의 이동은 같습니다.
mv [원본] [이동할 목적지 / 디렉토리명 or 파일명 수정가능]
여기 mv는 단순히 파일을 이동시킨다의 개념이 아니다.
mv 는 파일을 복사 붙여넣기로 이동을 시킵니다.
파일명을 바꿀 때에도 mv명령어를 사용합니다.
▶ UID 와 GID
UID 는 User ID // GID 는 Group ID 를 의미합니다.
root 계정에서 UserID를 생성해보도록 하겠습니다.
Useradd [사용자이름]
오류가 출력되지 않을 시, [사용자이름]으로 계정이 생성된 것입니다.
생성한 사용자 계정으로 계정을 변경해보도록 하겠습니다.
su [사용자명]
으로 가면 쉘이 달라진 것을 확인할 수 있다.
# : 루트 쉘을 의미합니다.
$ : 일반 사용자의 쉘을 의미합니다.
▶ passwd의 개념
passwd로 들어가보도록 하겠습니다.
vi /etc/passwd
passwd 로 들어가게되면,
root:x:0:0:root:/root:/usr/bin/zsh (첫번째 줄)
kali:x:1000:1000:,,,:/home/kali:/usr/bin/zsh (마지막 줄)
첫번째줄은 root 계정의 정보를 담고있고, 마지막줄은 kali계정의 정보를 담고 있습니다.
계정이름 : 비밀번호 : UID : GID : 사용자의 별명(설명) : home디렉토리의 경로 : 로그인 쉘
이전에는 비밀번호가 x 가아닌 진짜 비밀번호가 나왔지만, /etc/passwd 는 누구나 읽을 수 있는 파일이므로 비밀번호를 다른곳에 옮겨두었습니다.
그곳이 /etc/shadow 파일입니다.
▶ 권한 제어
- read : 읽기 권한 ( 파일을 읽을 수 있는지, 디렉토리에 어떤 파일이 안에 있는지)
- write : 쓰기 권한 ( 파일의 수정과 디렉토리에 파일이나 디렉토리를 생성할 수 있는지)
- execute : 실행 권한 ( 파일을 실행할 수 있는지, 디렉토리에 접근할 수 있는지)
ls -al
을 하면 -rw-r--r-- 등 여러가지 설정을 확인할 수 있습니다.
여기서 맨앞의 - : 파일 이며, d : 디렉토리 를 의미합니다.
- | rw- | r-- | r-- |
- : 파일 / d : 디렉토리 | 소유자 권한 | 그룹 권한 | 기타 사용자 권한 |
기타 사용자 권한 : 소유가와 그룹지정멤버가 아닌 사람을 의미한다.
▶ 특수 권한
- setuid
- setgid
- stickybit
로 총 3가지가 있습니다.
▷ setuid : 그파일을 실행할 때, 그 파일의 소유주 권한으로 실행한다.
대표적인 예로 /etc/passwd 가 있다.
/etc/passwd 는 비밀번호를 변경할 때에도 사용이 되어야 하므로, /etc/shadow 파일에도 접근을 해야한다. 그래서 일반사용자도 접근을 하기위해 루트의 권한을 받아 변경을 시킨다.
(실행권한이 있는 상태에서) setuid가 있을 경우
-rws (s가 소문자)
(실행권한이 없는 상태에서) setUid가 있을 경우
-rwS (S가 대문자)
▷ setgid : 그파일을 실행할 때, 그 파일의 그룹 권한으로 실행한다. (setuid와 동일하게 진행)
▷ sticky bit : 공유 디렉토리 설정 ( 설정한 디렉토리는 누구나 마음것 파일을 생성할 수 있게 된다.)
이런 파일은 우리가 사용해본적이 있는 파일이다.
/tmp 가 sticky bit 이다.
tmp는 drwx / rwx / rwt 로 권한이 설정이 되어있다.
여기서의 t가 바로 sticky bit 를 의미한다.
t : 실행 권한이 있는 경우
T : 실행 권한이 없는 경우
▷ chmod : 권한의 변경
chmod [소유자권한] [그룹권한] [기타 사용자]
설정으로 권한을 변경시킬 수 있다.
파일을 하나 생성하고 그파일의 권한을 확인 후 변경해보자.
chmod 777 [생성한 파일명]
을 하면 -rwx rwx rwx로 나와있는 것을 확인할 수 있다.
여기서 rwx 는 2진법으로 이루어져 있다. 고로 r = 4, w = 2, x = 1 로 모든권한을 줄때 7을 사용한다.
이번엔 다른 방법으로 사용해보자
chmod o-x [생성한 파일명]
권한을 확인해보면, 기타사용자의 실행권한이 사라진 것을 확인할 수 있다.
2가지방법으로 사용이 가능하다.
'정리' 카테고리의 다른 글
kali Linux 란? (설치 및 실행) (0) | 2023.05.04 |
---|