Linux 中的 sudo 命令

2023-11-04

sudo 命令允许您以另一个用户(默认为 root 用户)运行程序。如果您在命令行上花费大量时间,那么 sudo 是您经常使用的命令之一。

使用 sudo 而不是以 root 身份登录更安全,因为您可以向单个用户授予有限的管理权限,而无需他们知道 root 密码。

在本教程中,我们将解释如何使用sudo命令。

安装 Sudo(未找到 sudo 命令)#

大多数 Linux 发行版上都预安装了 sudo 软件包。

要检查您的系统上是否安装了 sudo 软件包,请打开控制台,输入sudo,然后按Enter。如果你已经安装了sudo系统,将会显示一条简短的帮助信息。否则,你会看到类似的东西sudo command not found.

如果未安装 sudo,您可以使用发行版的包管理器轻松安装它。

在 Ubuntu 和 Debian 上安装 Sudo#

apt install sudo

在 CentOS 和 Fedora 上安装 Sudo#

yum install sudo

将用户添加到 Sudoers#

默认情况下,在大多数 Linux 发行版上,授予 sudo 访问权限就像将用户添加到 sudo 组中定义的那样简单sudoers 文件。该组的成员将能够以 root 身份运行任何命令。组的名称可能因发行版而异。

在基于 RedHat 的发行版(例如 CentOS 和 Fedora)上,sudo 组的名称是wheel. To 将用户添加到组中 , run:

usermod -aG wheel username

在 Debian、Ubuntu 及其衍生产品上,该小组的成员sudo被授予 sudo 访问权限:

usermod -aG sudo username

The Ubuntu 中的 root 用户帐户出于安全原因默认禁用,并且鼓励用户使用 sudo 执行系统管理任务。 Ubuntu 安装程序创建的初始用户已经是 sudo 组的成员,因此如果您正在运行 Ubuntu,则您登录的用户很可能已被授予 sudo 权限。

要允许特定用户仅以 sudo 身份运行某些程序,请将用户添加到sudoers file.

例如,允许用户linuxize仅运行mkdir命令为 sudo,输入:

sudo visudo

并附加以下行:

linuxize  ALL=/bin/mkdir

在大多数系统上,visudo命令打开/etc/sudoers使用 vim 文本编辑器创建文件。如果您没有使用 vim 的经验,请查看我们的文章,了解如何使用保存文件并退出 vim 编辑器 .

您还可以允许用户运行 sudo 命令而不输入密码 :

linuxize  ALL=(ALL) NOPASSWD: ALL

如何使用须藤#

语法为sudo命令如下:

sudo OPTION.. COMMAND

The sudo命令有很多选择控制其行为,但通常,它以其最基本的形式使用,没有任何选项。

要使用 sudo,只需在命令前面加上前缀即可sudo:

sudo command

Where command是您要使用 sudo 的命令。

须藤将阅读/etc/sudoers文件并检查调用用户是否被授予 sudoassess 权限。第一次在会话中使用 sudo 时,系统会提示您输入用户密码,并且该命令将以 root 身份执行。

例如,列出目录中的所有文件/root您将使用的目录:

sudo ls /root
[sudo] password for linuxize:
.  ..  .bashrc	.cache	.config  .local  .profile

密码超时#

默认情况下,sudo 将在 sudo 不活动五分钟后要求您再次输入密码。您可以通过编辑来更改默认超时sudoers文件。打开文件visudo:

sudo visudo

通过添加下面的行来设置默认超时,其中10是以分钟为单位指定的超时:

Defaults  timestamp_timeout=10

如果您只想更改特定用户的时间戳,请添加以下行,其中 user_name 是相关用户。

Defaults:user_name timestamp_timeout=10

以 root 以外的用户身份运行命令#

有一种错误的认识是sudo仅用于向普通用户提供 root 权限。实际上,你可以使用sudo以任何用户身份运行命令。

The -u选项允许您以指定用户身份运行命令。

在下面的示例中,我们使用sudo运行whoami以用户“richard”的身份执行命令:

sudo -u richard whoami

The whoami命令将打印运行该命令的用户的名称:

richard

如何使用 Sudo 重定向#

如果您尝试将命令的输出重定向到您的用户没有写入权限的文件,您将收到“权限被拒绝”错误。

sudo echo "test" > /root/file.txt
bash: /root/file.txt: Permission denied

发生这种情况是因为重定向“>” 的输出是在您登录的用户下执行的,而不是使用 sudo 指定的用户。重定向发生在sudo命令被调用。

一种解决方案是使用 root 身份调用新 shellsudo sh -c:

sudo sh -c 'echo "test" > /root/file.txt'

另一种选择是将普通用户的输出通过管道传输到发球命令, 如下所示:

echo "test" | sudo tee /root/file.txt

结论#

您已经学会了如何使用sudo命令以及如何创建具有 sudo 权限的新用户。

如果您有任何疑问,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 中的 sudo 命令 的相关文章

  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 结构差异 sudo() run('sudo 命令')

    我想知道函数之间有什么区别sudo 和函数run sudo u user smth 文档上有 sudo 在所有运行方式上都是相同的 除了它总是换行 调用 sudo 程序中的给定命令以提供超级用户 特权 但有几次 sudo cmd 提示我输入
  • Linux 仅使用时间/日期戳重命名文件

    我有一个文件 我想将 mv 重命名为year month day h m s 最好的方法是什么 我已尝试以下操作 但它不会动态添加正确的标记 原始文件名称中实际上有一个反斜杠 mv getnw myfilename txt Y m d H
  • SQLite:从命令行仅将模式转储到 .sql 文件中

    我正在尝试转储架构test db仅 即没有数据 到名为的文件中schema sql从 OS X 中的命令行 无需启动 sqlite3 我知道我能做到 sqlite3 open test db output schema sql schema
  • 为什么我使用某些 git 命令后终端变得无响应?

    我经常 真的每次 使用该命令后git log我的终端对进一步的输入没有响应 这是在 OSX 上 是否有一个我不知道的命令将使终端再次激活 而不是仅仅退出终端并重新开始 您正在使用一个无需滚动即可显示日志的程序 很可能less 可以通过按q
  • 如何在 Vim 中创建行号和文本之间的边框

    我希望在行号右侧和文本左侧有一条细边框线 您可以使用不同的颜色来突出显示LineNr 例如 hi LineNr cterm bold ctermbg gray ctermfg black gui bold guibg gray guifg
  • 如何重命名 .tar.gz 文件而不提取内容并在 UBUNTU 中创建新的 .tar.gz 文件?

    我有一个命令将创建一个新的 tar gz现有文件中的文件 sudo tar zcvf Existing tar gz New tar gz 该命令将创建一个新的New tar gz从现有的文件Existing tar gz file 谁能告
  • Python 声音(“铃声”)

    我想让一个 python 程序在完成任务时通过发出嘟嘟声来提醒我 目前 我使用import os然后使用命令行语音程序说 进程完成 我更愿意它是一个简单的 铃 我知道有一个函数可以用于Cocoa apps NSBeep 但我认为这与此没有太
  • sudo 和 pip 不在同一路径上

    pip and sudo不在我的计算机上的同一路径上 因此当 基本上一直 我需要运行这两个命令时 如下所示 sudo pip install xxx I get sudo pip command not found pip下载软件包 但由于
  • 如何使用 exec.Command 在 golang 中执行 Mysql 脚本

    您好 我正在尝试执行一个脚本以使用 Golang 将数据填充到数据库中 func executeTestScript cmd exec Command usr local mysql bin mysql h127 0 0 1 P3333 u
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径
  • 让 Emacs 尊重我的默认 shell + 选项

    我正在尝试让我的 Emacs shell 模仿我的标准终端会话 基本上我希望它尊重相同的路径以及命令提示符 到目前为止我有几个问题 找不到 PATH 下面是我正在使用的修复程序 我尝试过另一个修复 到处都是 ascii 颜色代码 我的 mw
  • BASH:输入期间按 Ctrl+C 会中断当前终端

    我的 Bash 版本是 GNU bash version 4 3 11 1 release x86 64 pc linux gnu 我有一段这样的代码 while true do echo n Set password read s pas
  • DHT22传感器导入Adafruit_DHT错误

    因此 我已将 DHT22 湿度传感器正确连接到我的 BeagleBone Black Rev C 我在 MacBook Pro 上运行 OS Mavericks 并且按照 Adafruit 提供的有关如何使用 DHT22 的说明进行操作 我
  • 带闭包的默认属性值使编译器重新编译所有文件

    This source https developer apple com library content documentation Swift Conceptual Swift Programming Language Initiali
  • 执行“minikube start”命令时出现问题

    malik malik minikube start minikube v1 12 0 on Ubuntu 18 04 Using the docker driver based on existing profile Starting c
  • 从 ttyUSB0 写入和读取,无法得到响应

    我对 Linux tty 不太有经验 我的环境是带有丰富 USB 串行的 Raspbian 什么有效 stty F dev ttyUSB0 38400 cu l dev ttyUSB0 s 38400 cu to dev ttyUSB0作品
  • 如何更改终端的默认目录?

    我想更改 Android Studio v2 2 2 终端的默认目录 当我打开终端时 它基于项目的目录 C 项目路径 我经常需要使用adb shell 所以我必须导航到 SDK 路径 平台工具 才能使用 adb 命令 是否可以更改终端的默认
  • 为什么同一个curl命令在windows和linux下输出不同的东西?

    为什么同样的curl o file https www link com 命令输出不同的东西 例如 如果我运行命令curl o source txt https www youtube com playlist list PLIx6Fwnp

随机推荐

  • 如何在 CentOS 8 中安装 ionCube Loader

    ionCube 加载器是用于在服务器上加载 ionCube 编码文件的库 需要安装在网络服务器上才能在运行之前解码任何 ionCube 编码文件 ionCube 提供了加密 PHP 脚本的功能 以确保它们的安全 它还可以确保它们免受未经授权
  • 如何使用 Nmap 扫描开放端口

    Nmap 网络映射器 是网络管理员用于安全审核和映射网络的最流行的发现工具 该核心工具还用于查找活动主机 操作系统检测 执行端口扫描和版本检测 为了检测网络上的各种可用主机 它们提供的服务 它们运行的 操作系统版本以及它们使用的防火墙类型
  • 如何在 JavaScript 中发出 HTTP 请求

    XMLHttpRequest and fetch 是 JavaScript 中两个强大的函数 可用于进行 Ajax 调用 XMLHttpRequest XHR 是一项自 Web 早期就存在的遗留技术 它允许您从客户端发出 HTTP 请求 并
  • 在 Bash 中循环访问文件的内容

    Bash Bourne Again SHell 是一种流行的命令行 shell 和脚本语言 因其简单易用而被广泛使用 使用 Bash 可能需要执行的最常见任务之一是循环访问文件的内容 在本文中 我们将探索使用 Bash 脚本循环遍历文件内容
  • 如何在 Fedora 上安装 VLC 媒体播放器

    VLC Media Player 是一款免费开源的多媒体播放器 支持各种音频和视频格式 由于其多功能性 简单性和健壮性 它在 Linux 用户中广泛流行 在本文中 我们将指导您如何在 Fedora Linux 上安装 VLC 媒体播放器 在
  • 如何在 C# 中获取当前日期和时间(C-Sharp)

    在 C 中 您可以使用 DateTime 类获取当前日期和时间 此类提供了一系列方法和属性 使您能够执行各种日期和时间操作 在本文中 我们将向您展示如何在 C 中获取当前日期和时间 获取当前日期和时间 要获取当前日期和时间 您可以使用日期时
  • 如何在 CentOS 8 上安装 Webmin

    Webmin是一个开源控制面板 允许您通过易于使用的 Web 界面管理 Linux 服务器 它允许您管理用户 组 磁盘配额 创建文件和目录以及配置最流行的服务 包括 Web FTP 电子邮件和数据库服务器 本教程介绍如何在 CentOS 8
  • 如何在 Ubuntu 20.04 上安装 Vagrant

    Vagrant是用于构建和管理虚拟机的命令行工具 默认情况下 Vagrant 可以在 VirtualBox Hyper V 和 Docker 之上配置计算机 其他提供商如 Libvirt KVM VMware 和 AWS 可以通过 Vagr
  • 如何在 Linux 上格式化 USB 驱动器和 SD 卡

    在使用 SD 卡或 USB 驱动器之前 需要对其进行格式化和分区 通常 大多数 USB 驱动器和 SD 卡均使用 FAT 文件系统进行预格式化 无需开箱即用 但是 在某些情况下 您可能需要格式化驱动器 在 Linux 中 您可以使用图形工具
  • 如何在 Linux 上创建可启动的 CentOS U 盘

    本教程介绍如何从 Linux 终端创建可启动的 CentOS USB 记忆棒 您可以使用此 USB 记忆棒在任何支持从 USB 启动的计算机上启动并测试或安装 CentOS 先决条件 8GB 或更大的 USB 记忆棒驱动器 运行任何 Lin
  • 如何撤消上次 Git 提交

    有时 在使用 Git 时 您可能想要撤消最新的提交 提交是 Git 存储库在给定时间的快照 Git 有一个名为的引用变量HEAD它指向当前工作分支中的最新提交 要撤消提交 您需要做的就是指向HEAD变量到前一个快照 本指南解释了如何撤消上次
  • 如何在 CentOS 7 上安装 Asterisk

    Asterisk 是最流行和广泛采用的开源 PBX 平台 为 IP PBX 系统 会议服务器和 VoIP 网关提供支持 它被世界各地的个人 小型企业 大型企业和政府使用 Asterisk 功能包括语音邮件 等待音乐 电话会议 呼叫排队 通话
  • 如何在 MySQL 中显示/列出用户

    您是否曾经需要获取 MySQL 服务器中所有用户的列表 有命令显示数据库和表 但没有MySQLshow users命令 本教程介绍如何通过命令行列出 MySQL 数据库服务器中的所有用户帐户 我们还将向您展示如何找出哪些用户有权访问给定的数
  • 如何在 Linux 中创建组(groupadd 命令)

    在 Linux 中 组用于组织和管理用户帐户 组的主要目的是定义一组权限 例如读 写或执行允许对于可以在组内的用户之间共享的给定资源 在本文中 我们将讨论如何在 Linux 中使用groupadd命令 groupadd命令语法 的一般语法为
  • Linux中的重命名命令(重命名多个文件)

    使用以下命令重命名多个文件和目录mv命令可能是一个乏味的过程 因为它涉及使用管道编写复杂的命令 loops 等等 这就是rename命令派上用场 它通过将名称中的搜索表达式替换为指定的替换来重命名给定的文件 在本教程中 我们将解释如何使用r
  • 如何在 CentOS 8 上安装 Vagrant

    Vagrant是用于构建和管理虚拟化开发环境的命令行工具 默认情况下 Vagrant 可以在 VirtualBox Hyper V 和 Docker 之上配置计算机 可以通过 Vagrant 插件系统启用对 Libvirt KVM VMwa
  • 如何在 Debian 10 Linux 上安装和使用 Curl

    Curl 是一个命令行实用程序 用于从远程服务器传输数据或向远程服务器传输数据 它允许您使用 HTTP HTTPS SCP SFTP and FTP协议 如果您尝试使用下载文件curl并收到一条错误消息说curl command not f
  • Linux 中的 Chmod 命令(文件权限)

    在 Linux 中 对文件的访问是通过文件权限 属性和所有权来管理的 这确保只有授权的用户和进程才能访问文件和目录 本教程介绍了如何使用chmod命令更改文件和目录的访问权限 Linux 文件权限 在进一步讨论之前 我们先解释一下基本的 L
  • 在 Linux 上创建可启动 Debian 10 USB 记忆棒

    本教程解释了如何使用以下命令从 Linux 终端创建可启动的 Debian 10 Buster USB 记忆棒dd命令 USB 记忆棒可用于在任何支持从 USB 启动的计算机上启动和安装 Debian 先决条件 1GB 或更大的 USB 记
  • Linux 中的 sudo 命令

    sudo 命令允许您以另一个用户 默认为 root 用户 运行程序 如果您在命令行上花费大量时间 那么 sudo 是您经常使用的命令之一 使用 sudo 而不是以 root 身份登录更安全 因为您可以向单个用户授予有限的管理权限 而无需他们