- 예를 들어 : ifconfig를 설치했습니다.
- 먼저 “su”로 루트가됩니다
- 이제 “ifconfig”를 작성하고 “command not found”를 얻습니다.
- “sudo ifconfig”를 작성하면 이제 작동합니다.
이것은 많은 프로그램에서 발생하는 것으로 보입니다 (모두는 아님).
다른 예 : apt-get은 동일한 방법을 사용하지 않으면 응용 프로그램을 올바르게 설치하지 않는 것 같습니다.
이미 루트 인 경우 sudo를 작성할 필요가 없습니다.
왜 그런가요? 이 문제를 해결하려면 어떻게해야합니까?
답변
TL, DR : su --login
또는을 사용하십시오 sudo
.
데비안은 PATH
일반 사용자를 위해 다르게 설정 합니다. /etc/profile
에서 기본값 /sbin
은 root로 예약 되어 있음 을 알 수 있습니다 .
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
type ifconfig
이 유틸리티는 상주 /sbin/ifconfig
사용자가 쉽게 액세스 할 수없는 이유입니다. su
인수없이 실행 하면 PATH
변수를 포함하여 호출하는 사용자 환경이 유지 됩니다. sudo
반면에, 새로운 환경을 제공하고 호출하는 사용자를 재정의합니다 PATH
.
su
오작동 이라고 생각하는 이유 는 재설정 PATH
이며 IFS
기본적으로 레거시 동작 이기 때문 입니다. 버스터는 최근 util-linux
구현 su
방식이 달라 졌다 . 자세한 내용 /usr/share/doc/util-linux/NEWS.Debian.gz
은 참조하십시오.
답변
dsstorefile1이 말했듯이 동작이 변경되었습니다.
“su”대신 “su-“를 실행하거나
이전 데비안의 동작을 유지하려면 “/WAY/login.defs”에 “ALWAYS_SET_PATH yes”를 추가하십시오.
답변
su - root
대신에 사용하십시오 su root
. 그런 다음 입력adduser username sudo