前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >提升的 Dotnet 命令访问权限

提升的 Dotnet 命令访问权限

作者头像
用户4268038
发布2022-01-05 18:42:36
1.1K0
发布2022-01-05 18:42:36
举报
文章被收录于专栏:stcnb

开发人员可根据软件开发最佳做法来编写需要最少权限的软件。 但是,某些软件(如性能监视工具)由于操作系统规则,需要管理员权限。 以下指南介绍使用 .NET Core 编写此类软件的适用方案。

可以运行以下提升的命令:

dotnet tool 命令,如 dotnet tool install。

dotnet run --no-build

dotnet-core-uninstall

不建议运行其他提升的命令。 具体而言,不建议为使用 MSBuild(例如,dotnet restore、dotnet build 和 dotnet run)的命令提升访问权限。 主要问题是用户在发出 dotnet 命令后在根帐户和受限帐户之间来回切换时存在权限管理问题。 受限用户可能会发现自己无法访问根用户构建的文件。 有办法可以解决这种情况,但不一定要使用这些方法。

只要不在根帐户和受限帐户之间来回切换,就能够以根帐户的身份运行命令。 例如,Docker 容器默认以根帐户身份运行,因此它们具有此特性。

全局工具安装

以下说明展示了执行下述操作的推荐方法:安装、运行和卸载需要提升权限才能执行的 .NET 工具。

Windows

Linux

macOS

安装工具

如果文件夹 %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"

安装全局工具

应使用 --tool-path 选项将包资产安装在受保护的位置。 这种分离可避免与提升的环境共享受限的用户环境。

sudo dotnet tool install PACKAGEID --tool-path /usr/local/share/dotnet-tools

将使用权限 drwxr-xr-x 创建 /usr/local/share/dotnet-tools。 如果该目录已存在,请使用 ls -l 命令验证受限的用户是否无权编辑该目录。 如果是,请使用 sudo chmod o-w -R /usr/share/dotnet-tools 命令删除访问权限。

运行全局工具

选项 1 对 sudo 使用完整路径:

sudo /usr/local/share/dotnet-tools/TOOLCOMMAND

选项 2 为每个工具添加一次工具的符号链接:

sudo ln -s /usr/local/share/dotnet-tools/TOOLCOMMAND /usr/local/bin/TOOLCOMMAND

然后使用以下命令运行:

sudo TOOLCOMMAND

卸载全局工具

sudo dotnet tool uninstall PACKAGEID --tool-path /usr/local/share/dotnet-tools

如果创建了符号链接,还需将其删除:

sudo rm /usr/local/bin/TOOLCOMMAND

安装全局工具

应使用 --tool-path 选项将包资产安装在受保护的位置。 这种分离可避免与提升的环境共享受限的用户环境。

sudo dotnet tool install PACKAGEID --tool-path /usr/local/share/dotnet-tools

将使用权限 drwxr-xr-x 创建 /usr/local/share/dotnet-tools。 如果该目录已存在,请使用 ls -l 命令验证受限的用户是否无权编辑该目录。 如果是,请使用 sudo chmod o-w -R /usr/share/dotnet-tools 命令删除访问权限。

运行全局工具

选项 1 对 sudo 使用完整路径:

sudo /usr/local/share/dotnet-tools/TOOLCOMMAND

选项 2 为每个工具添加一次工具的符号链接:

sudo ln -s /usr/local/share/dotnet-tools/TOOLCOMMAND /usr/local/bin/TOOLCOMMAND

然后使用以下命令运行:

sudo TOOLCOMMAND

卸载全局工具

sudo dotnet tool uninstall PACKAGEID --tool-path /usr/local/share/dotnet-tools

如果创建了符号链接,还需将其删除:

sudo rm /usr/local/bin/TOOLCOMMAND

本地工具

本地工具的作用域按用户和个子目录树来限定。 执行特权运行后,本地工具将受限的用户环境共享给提升的环境。 在 Linux 和 macOS 中,这会导致将文件设置为仅限根用户访问。 如果用户切换回受限帐户,则用户无法再访问或写入文件。 因此,不建议将必须提升的工具安装为本地工具。 建议使用 --tool-path 选项和上述全局工具指南。

开发过程中的提升

在开发过程中,可能需要提升访问权限才能测试应用程序。 (例如)IoT 应用就常存在这种情况。 建议在构建应用程序时不要进行提升,而是在运行时使用提升。 有几种模式,如下所示:

使用生成的可执行文件(它提供最佳的启动性能):

dotnet build

sudo ./bin/Debug/netcoreapp3.0/APPLICATIONNAME

使用 dotnet run 命令与 —no-build 标志,以避免生成新的二进制文件:

dotnet build

sudo dotnet run --no-build

请参阅

.NET 工具概述

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档