데비안이 루트 사용자에 대해 다른 사용자와 다른 PATH를 설정하는 이유는 무엇입니까? 모든 사용자에 대해 "sbin" 디렉터리를 포함하지 않는 이유는 무엇입니까? [복사]

데비안이 루트 사용자에 대해 다른 사용자와 다른 PATH를 설정하는 이유는 무엇입니까? 모든 사용자에 대해 "sbin" 디렉터리를 포함하지 않는 이유는 무엇입니까? [복사]

네트워크 설치 프로그램을 사용하여 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/profileUbuntu 설치에 존재하지 않음)를 가지고 있는데, 이는 내가 실행하고 싶은 많은 것을 실행/자동 완성할 수 없습니다. 루트 주문. 이 문제를 "수정"하기 위해 한 줄을 추가했지만 /etc/profile.d이것이 기본값인 이유를 알고 싶습니다.

답변1

~에서파일 시스템 계층 표준:

3.16. /sbin: 시스템 바이너리 3.16.1. 목적 시스템 관리용 유틸리티(및 기타 루트 전용 명령)는 /sbin, /usr/sbin 및 /usr/local/sbin에 저장됩니다.

따라서 우리 는 올바르게 실행하는 데 필요할 수 있는 관리 수준 명령 /sbin만 있어야 한다는 것을 알 수 있습니다 . root일반 사용자에게는 필요하지 않으며 실행하려고 하면 오류가 발생할 수 있습니다.

관리자 권한이 있는 단일 사용자(예: 를 통해)만 사용하는 시스템에서는 sudo이러한 디렉터리를 추가하는 것이 합리적일 수 있습니다. 관리자와 비관리자가 있는 다중 사용자 시스템에서 관리자는 자신의 $HOME/.profile.

관련 정보