루트가 아닌 사용자로 로그인하면 일부 명령에 액세스할 수 없습니다("su root" 이후에도).

루트가 아닌 사용자로 로그인하면 일부 명령에 액세스할 수 없습니다("su root" 이후에도).

그래서 저는 여기서 무슨 일이 일어나고 있는지 이해하지 못합니다.

저는 Debian 10.2 서버를 설정하고 다른 서버에서 했던 것처럼 구성했습니다. 로컬 컴퓨터이고 나만 유일한 사용자이기 때문에 모든 것이 잘 작동하므로 모든 작업에 루트를 사용합니다. 이제 SSH 루트 로그인을 비활성화하고 싶습니다.

그러나 루트가 아닌 사용자를 사용하여 SSH를 통해 로그인하면 "service" 또는 "reboot"와 같은 기본 명령을 찾을 수 없습니다. (Bash: 서비스: 명령을 찾을 수 없습니다.)

더 이상한 점은 "su root"를 사용할 때 이 항목에 액세스할 수도 없다는 것입니다. 나는 실제로 루트이지만 여전히 이러한 명령에 액세스/찾을 수 없습니다.

루트로 직접 로그인하면 모든 것이 잘 작동합니다.

답변1

사용자의 PATH환경 변수에는 이러한 파일이 있는 경로가 포함되어 있지 않습니다. 를 사용하면 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를 사용자의 PATH와 비교해 보겠습니다.

  1. 하다su -
  2. 마.which service 명령을 실행하면 service바이너리가 service.
  3. 마.echo $PATH 그러면 루트 경로가 표시됩니다. service찾을 수 있는 디렉토리가 여기에 나열되어 있음 을 알 수 있습니다 .
  4. 다시 exit루트가 아닌 사용자가 되십시오.
  5. 마.echo $PATH 2단계에서 식별한 디렉터리가 여기에 없다는 것을 알 수 있습니다.

service이는 특정 하이퍼바이저(예 : 등) 가 또는 같은 디렉터리 fdisk에 유지되고 해당 디렉터리가 일반 사용자 경로에서 멀리 떨어져 있는 일부 환경/배포판에서는 일반적인 기본값입니다 ./usr/sbin/sbin

관련 정보