![데비안이 루트 사용자에 대해 다른 사용자와 다른 PATH를 설정하는 이유는 무엇입니까? 모든 사용자에 대해 "sbin" 디렉터리를 포함하지 않는 이유는 무엇입니까? [복사]](https://linux55.com/image/209523/%EB%8D%B0%EB%B9%84%EC%95%88%EC%9D%B4%20%EB%A3%A8%ED%8A%B8%20%EC%82%AC%EC%9A%A9%EC%9E%90%EC%97%90%20%EB%8C%80%ED%95%B4%20%EB%8B%A4%EB%A5%B8%20%EC%82%AC%EC%9A%A9%EC%9E%90%EC%99%80%20%EB%8B%A4%EB%A5%B8%20PATH%EB%A5%BC%20%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%EB%AA%A8%EB%93%A0%20%EC%82%AC%EC%9A%A9%EC%9E%90%EC%97%90%20%EB%8C%80%ED%95%B4%20%22sbin%22%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A5%BC%20%ED%8F%AC%ED%95%A8%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
네트워크 설치 프로그램을 사용하여 Debian 11 "Bullseye"(서버로 사용)를 새로 설치할 때 루트의 경로는 다음과 같습니다:
root@debian:~# echo $PATH | tr : '\n'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
다른 사용자의 경로는 다음과 같습니다.
jivan@debian:~$ echo $PATH | tr : '\n'
/usr/local/bin
/usr/bin
/bin
/usr/local/games
/usr/games
이 동작은 처음 몇 줄에서 발생합니다 /etc/profile
.
if [ "$(id -u)" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
그런데 왜 이것이 기본 동작입니까? Ubuntu 서버에서 온 모든 사용자 /usr/sbin
는 자신의 PATH /usr/local/sbin
(내가 언급한 해당 행은 /etc/profile
Ubuntu 설치에 존재하지 않음)를 가지고 있는데, 이는 내가 실행하고 싶은 많은 것을 실행/자동 완성할 수 없습니다. 루트 주문. 이 문제를 "수정"하기 위해 한 줄을 추가했지만 /etc/profile.d
이것이 기본값인 이유를 알고 싶습니다.
답변1
~에서파일 시스템 계층 표준:
3.16. /sbin: 시스템 바이너리 3.16.1. 목적 시스템 관리용 유틸리티(및 기타 루트 전용 명령)는 /sbin, /usr/sbin 및 /usr/local/sbin에 저장됩니다.
따라서 우리 는 올바르게 실행하는 데 필요할 수 있는 관리 수준 명령 /sbin
만 있어야 한다는 것을 알 수 있습니다 . root
일반 사용자에게는 필요하지 않으며 실행하려고 하면 오류가 발생할 수 있습니다.
관리자 권한이 있는 단일 사용자(예: 를 통해)만 사용하는 시스템에서는 sudo
이러한 디렉터리를 추가하는 것이 합리적일 수 있습니다. 관리자와 비관리자가 있는 다중 사용자 시스템에서 관리자는 자신의 $HOME/.profile
.