Linux/Linux 실습

PATH 변수에 현재 디렉터리를 설정하는 않는 경우

GGkeeper 2021. 11. 6. 22:32

실습> PATH 변수에 현재 디렉터리를 설정하지 않는 경우

외부 명령어를 실행할 때 환경변수 PATH에 경로가 없다면 실행이 안된다.
그래서 현재 

환경 변수 : 쉘 환경에서 사용하는 변수로 (전역변수 성질을 가지고 있다. )

환경 변수 PATH 에 저장된 값을 확인할 때 
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

명령어를 실행할 때 현재 디렉터리를 PATH 변수에 설정하지 않는 이유는 ?
보안상 설정하지 않는다.

[root@localhost ~]# useradd user1
[root@localhost ~]#  cd ~user1
[root@localhost ~]#  vi ls
#!/bin/sh
echo "악성파일 실행중.."

[root@localhost ~]# chmod 755 ls


[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


1. PATH 변수 앞에 현재 디렉터리가 있을 경우
[root@localhost ~]# PATH=.:$PATH
[root@localhost ~]# echo $PATH
.:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@localhost ~]# cd ~user1
[root@localhost ~]# ls
악성파일 실행중...

2. PATH 변수 뒤에 현재 디렉터리가 있을 경우
[root@localhost ~]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:.
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:.
[root@localhost ~]# ls
ls
[root@localhost ~]# ./ls
악성파일 실행중...


[root@localhost ~]# mv ls ls-l
[root@localhost ~]# ls
ls-l

ls -l 을 사용할려고 하다가 ls-l을 사용하면 (오타가 나면) 맨 끝에 . 에 의해서 악성 실행파일 실행된다.
[root@localhost ~]# ls-l
악성파일 실행중...
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:.

3. PATH 변수에 현재 디렉터리가 없을 경우
[root@localhost ~]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@localhost ~]# ls
ls

[root@localhost ~]# ls-l
-bash: ls-l: command not found

[root@localhost ~]# ./ls-l
악성파일 실행중...