네트워크 설치 프로그램을 사용하여 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
.