"su -"에서는 명령이 발견되었지만 "su root"에서는 발견되지 않았습니다.

"su -"에서는 명령이 발견되었지만 "su root"에서는 발견되지 않았습니다.

운영 체제: 데비안 10.10

"su -"로 부팅할 때 "usermod" 명령이 실행되는 이유를 이해하려고 검색했는데 "su 루트"에서 부팅하면 명령이 "bash: usermod: command notfound"입니다.

감사해요!

답변1

su이 명령은 기존 환경을 유지하지 않으며 -모든 환경 변수를 로드하지 않고 사용자로 전환만 합니다.

su -사용자 로그인을 시뮬레이션하고 해당 사용자로 전환할 뿐만 아니라 해당 사용자의 환경 변수도 로드합니다.

~에서man su

   -, -l, --login
          Start the shell as a login shell with an environment similar to a real login:

             o      clears all the environment variables except TERM and variables specified by --whitelist-environment

             o      initializes the environment variables HOME, SHELL, USER, LOGNAME, and PATH

             o      changes to the target user's home directory

             o      sets argv[0] of the shell to '-' in order to make the shell a login shell

이 경우 루트 사용자의 PATH 변수에 있는 모든 요소를 ​​로드하지 못할 수도 있습니다.

echo $PATH실행 후 입력하십시오 . su root명령을 실행한 후 su -PATH에 추가 폴더가 표시될 수 있습니다 su -.

usermod명령은 에 위치해야 합니다 /usr/sbin. 이는 슈퍼유저만 사용할 수 있는 경로입니다. 내부 명령은 관리 목적으로 일반 사용자가 아닌 관리 사용자만 실행할 수 있습니다 /sbin./usr/sbin

type usermod또는 를 사용하여 경로에 있는지 which usermod확인할 수 있습니다 . after의 출력에서는 볼 수 없지만 명령 뒤의 PATH 변수에 배치됩니다.usermod/usr/sbin/usermod/usr/sbinecho $PATHsu rootsu -

/sbin /bin과 마찬가지로 이 디렉토리에는 시스템을 부팅하는 데 필요한 명령이 포함되어 있지만 일반 사용자는 일반적으로 실행하지 않습니다.

/usr/sbin 이 디렉토리에는 부팅 프로세스, /usr 마운트 또는 시스템 복구에 필요하지 않은 시스템 관리에 사용되는 프로그램 바이너리가 포함되어 있습니다.

답변2

를 실행하면 su -루트 사용자 환경을 사용하여 셸을 시작합니다. 이 질문에 대한 환경에서 중요한 부분은 루트 사용자의 PATH를 얻는 것입니다. 종료 -하고 을 실행 하면 su root사용자 환경과 더 중요한 것은 사용자의 PATH가 보존됩니다.

관련 정보