사용자 디렉토리를 PATH에 추가하지 않는 이유는 무엇입니까?

사용자 디렉토리를 PATH에 추가하지 않는 이유는 무엇입니까?

사용자 스크립트의 경우 일반적인 조언은 해당 디렉터리를 $PATH다음 위치에 추가하는 것입니다 .profile.

PATH="$PATH:$HOME/.myscripts" # or .bin or whatever

분명히 이것은 앞에 추가하는 것보다 안전합니다.PATH="$HOME/.myscripts:$PATH"

그러나 안전한 방법으로 수행하면 동일한 이름의 시스템 패키지에 의해 스크립트가 패배하게 됩니다. 예를 들어, 스크립트 이름을 mount또는 으로 지정하면 이를 사용하려고 할 때 예상치 못한 일이 발생합니다.import

많은 사람들이 이것을 버그가 아닌 기능으로 보게 될 것이라는 것을 알고 있습니다. 그러나 개인적으로 나는 스크립트 이름을 를 포함하여 내가 원하는 대로 import지정하고 놀라지 않고 실행되도록 하고 싶습니다 .

내가 아는 한, 기존 위험은 다음과 같습니다.

  • 루트 액세스 등 없이 악성 스크립트를 다시 작성할 수 있습니다 ls. (그러나 이것이 표준 배포 저장소에서만 소프트웨어를 설치할 때 실제로 문제가 됩니까?)
  • 시스템 패키지는 다른 시스템 패키지 대신 사용자 스크립트를 호출할 수 있습니다(그러나 mount실제로 사용자 패키지가 전체 경로 없이 다른 것을 호출한 적이 있습니까? 나쁜 생각인 것 같습니다).

.profile단일 사용자 시스템에 via를 추가하는 경우 보안 위험은 얼마나 심각합니까?

답변1

나는 당신이 여기서 머리에 못을 박았다고 생각합니다.

사용하려고 하면 예상치 못한 일이 발생합니다

표준 명령을 사용하여 squats라는 실행 파일을 만드는 경우 문제가 발생합니다. 하지만 그것은 당신의 컴퓨터이기 때문에 궁극적으로 당신은 그것으로 원하는 것을 할 수 있고, 모범 사례 등을 할 수 있습니다.

원하는 것을 달성하는 더 안전한 방법은 추가 방법으로 PATH를 설정하고 스크립트에 "안전한" 이름(예: jortstek_mount)을 지정한 다음 다음 행을 따라 별칭이나 간단한 함수를 셸 프로필에 추가하는 것입니다.

mount() {
  command jortstek_mount "$@"
}

관련 정보