다음을 통해 공유


dotnet 명령에 대한 상승된 액세스

소프트웨어 개발 모범 사례는 개발자가 최소한의 권한이 필요한 소프트웨어를 작성하도록 안내합니다. 그러나 성능 모니터링 도구와 같은 일부 소프트웨어는 운영 체제 규칙 때문에 관리자 권한이 필요합니다. 다음 지침에서는 .NET Core를 사용하여 이러한 소프트웨어를 작성하기 위해 지원되는 시나리오를 설명합니다.

다음 명령은 관리자 권한으로 실행할 수 있습니다.

다른 명령어를 관리자 권한으로 실행하는 것을 권장하지 않습니다. 특히 dotnet 복원, dotnet 빌드dotnet 실행과 같이 MSBuild를 사용하는 명령을 사용하여 권한 상승을 권장하지 않습니다. 주요 문제는 사용자가 dotnet 명령을 실행한 후 루트 계정과 제한된 계정 간에 앞뒤로 전환할 때 발생하는 권한 관리 문제입니다. 루트 사용자가 빌드한 파일에 대한 액세스 권한이 없다는 것을 제한된 사용자로서 알게 될 수 있습니다. 이 상황을 해결할 수 있는 방법이 있지만 애초에 들어갈 필요는 없습니다.

루트 계정과 제한된 계정 간에 앞뒤로 전환하지 않는 한 명령을 루트로 실행할 수 있습니다. 예를 들어 Docker 컨테이너는 기본적으로 루트로 실행되므로 이러한 특성이 있습니다.

전역 도구 설치

다음 지침에서는 관리자 권한으로 실행해야 하는 .NET 도구를 설치, 실행 및 제거하는 권장 방법을 보여 줍니다.

도구 설치

폴더 %ProgramFiles%\dotnet-tools 가 이미 있는 경우 다음을 수행하여 "사용자" 그룹에 해당 디렉터리를 작성하거나 수정할 수 있는 권한이 있는지 확인합니다.

  • 폴더를 마우스 오른쪽 단추로 %ProgramFiles%\dotnet-tools 클릭하고 속성을 선택합니다. 공통 속성 대화 상자가 열립니다.
  • 보안 탭을 선택합니다. 그룹 또는 사용자 이름 아래에서 "사용자" 그룹에 디렉터리를 작성하거나 수정할 수 있는 권한이 있는지 확인합니다.
  • "사용자" 그룹이 디렉터리를 작성하거나 수정할 수 없는 경우 dotnet-tools가 아닌 도구를 설치할 때 다른 디렉터리 이름을 사용합니다.

도구를 설치하려면 관리자 권한 프롬프트에서 다음 명령을 실행합니다. 설치하는 동안 dotnet-tools 폴더를 만듭니다.

dotnet tool install PACKAGEID --tool-path "%ProgramFiles%\dotnet-tools".

전역 도구 실행

옵션 1 상승된 프롬프트와 함께 전체 경로를 사용합니다.

"%ProgramFiles%\dotnet-tools\TOOLCOMMAND"

옵션 2 새로 만든 폴더를 .에 추가합니다 %Path%. 이 작업은 한 번만 수행하면 됩니다.

setx Path "%Path%;%ProgramFiles%\dotnet-tools\"

다음을 사용하여 실행합니다.

TOOLCOMMAND

전역 도구를 제거하여 설치 해제

관리자 권한 프롬프트에서 다음 명령을 입력하세요.

dotnet tool uninstall PACKAGEID --tool-path "%ProgramFiles%\dotnet-tools"

로컬 도구

로컬 도구는 사용자별로 하위 디렉터리 트리별로 범위가 지정됩니다. 관리자 권한으로 실행하는 경우 로컬 도구는 제한된 사용자 환경을 높은 권한 환경과 공유합니다. Linux 및 macOS에서 이렇게 하면 루트 사용자 전용 액세스 권한으로 파일이 설정됩니다. 사용자가 제한된 계정으로 다시 전환하면 사용자는 더 이상 파일에 액세스하거나 파일에 쓸 수 없습니다. 따라서 로컬 도구로 권한 상승이 필요한 도구를 설치하는 것은 권장되지 않습니다. 대신 전역 도구에 대한 --tool-path 옵션과 이전 지침을 사용하십시오.

개발 중 상승

개발 중에 애플리케이션을 테스트하려면 상승된 액세스 권한이 필요할 수 있습니다. 예를 들어 이 시나리오는 IoT 앱에 일반적입니다. 권한 상승 없이 애플리케이션을 빌드한 다음 권한 상승으로 실행하는 것이 좋습니다. 다음과 같은 몇 가지 패턴이 있습니다.

  • 생성된 실행 파일을 사용하여(최상의 시작 성능을 제공합니다)

    dotnet build
    sudo ./bin/Debug/netcoreapp3.0/APPLICATIONNAME
    
  • dotnet run 명령을 —no-build 플래그와 함께 사용하여 새 이진 파일을 생성하지 않도록 합니다.

    dotnet build
    sudo dotnet run --no-build
    

참고하십시오