답변1
당신이 그 기계의 유일한 사용자라면, 당신이 무엇을 하고 있는지 알고 있다면 괜찮습니다. 일반적인 우려 사항은 현재 디렉터리를 넣으면 PATH
명령을 상수 목록으로 처리할 수 없다는 것입니다. 현재 디렉터리에서 스크립트/프로그램을 실행해야 하는 경우 ./
이름을 앞에 추가하여 항상 명시적으로 실행할 수 있습니다(시스템에 "현재 디렉터리에서 이 파일을 실행하고 싶습니다"라고 알립니다).
지금 이 모든 작은 스크립트가 파일 시스템에 분산되어 있다고 가정해 보겠습니다. 언젠가는 잘못된 작업이 실행될 것입니다. 따라서 미리 정의된 목록으로 정적 경로를 갖는 것은 PATH
순서에 관한 것이며 잠재적인 문제를 피하는 것입니다.
.
하지만 에 추가하는 경우에는 PATH
목록 끝( export PATH=$PATH:.
)에 추가하는 것이 좋습니다. 최소한 이런 식으로 시스템 전체 바이너리를 덮어쓰지는 않을 것입니다.
귀하가 시스템의 루트이고 시스템이 다른 사용자의 계정에 노출되면 .
엄청난 PATH
보안 위험이 있습니다. cd
콘텐츠나 스크립트를 잘못 입력했기 때문에 일부 사용자의 디렉터리에 들어가서 실수로 악성 스크립트를 실행할 수 있습니다. 시스템 전체 바이너리와 동일한 이름입니다.
답변2
위험은 누군가가 현재 디렉터리에 악성 실행 파일을 떨어뜨리는 것입니다.
최악의 시나리오는 다음과 같은 경우에 발생합니다.
- 악성 명령에는 무제한의 파괴력이 있으므로 루트로 로그인했습니다.
.
PATH 시작 부분에 표준 명령이 사용자 모르게 무시될 수 있기 때문입니다(종종ls
목록에 숨겨짐).
.
일반 사용자로 로그인하고 PATH 끝에 있는 경우 위험은 훨씬 낮지만 여전히 존재합니다.
- 누군가 명령을 자주 잘못 입력하고 일치하는 명령을 설치하는 것을 알아차릴 수 있습니다.
- 누군가가 설치되지 않은 명령과 동일한 이름을 가진 가짜 명령을 설치할 수도 있습니다.
그러나 귀하가 해당 시스템의 유일한 사용자인 경우에도 위험은 여전히 존재한다는 점에 유의하십시오. 예를 들어 악성 사이트나 감염된 사이트에서 다운로드한 아카이브를 추출하면 악성 코드가 설치됩니다.
답변3
입력 내용에 항상 매우 주의를 기울이더라도 마지막에 .
유틸리티를 넣는 것은 여전히 안전하지 않으므로 기본적으로 의 내용이 사용됩니다. 이런 일이 발생하면 이는 공격의 벡터입니다.PATH
/tmp
/tmp
.
또한 in 을 피하는 것에는 단점이 많지 않습니다 PATH
. ./
입력하기 쉽고(특히 문자가 연속 키에 있고 Shift 키가 필요하지 않은 QWERTY와 같은 키보드에서) 사용하면 ./
완료에 도움이 되어 잠재적으로 절약할 수 있기 때문입니다. 타이핑 키 개수가 끝났습니다.
현재 디렉터리에서 명령을 입력할 수 있기를 원한다면 zsh 등의 최신 셸에서 command_not_found_handler
이 작업을 안전하게 수행할 수 있는 기능을 제공할 수 있습니다. 즉, 명령을 실행하기 전에 처리기에 필요한 모든 보안 검사를 추가할 수 있습니다. 실행.
답변4
아니요, 이건 위험해요. a
현재 디렉토리에서 프로그램을 실행하려면 ./a
.
이렇게 하면 다른 사람이 귀하가 액세스하는 디렉터리에 심어 놓은 트로이 목마를 실행할 위험이 있으므로 위험합니다.
이라는 바이너리 파일이 포함된 tar 파일을 다운로드할 때 어떤 일이 발생하는지 상상해 보십시오 ls
.