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 命令 的相关文章

  • OSX - 始终隐藏某些文件

    我知道如何在终端中显示和隐藏隐藏文件 但是有没有办法在显示隐藏文件时隐藏某些文件 例如 DS STORE 可以这么说 使某些文件超级隐藏吗 Use chflags与隐藏选项 ie chflags hidden fileToHide从 Fin
  • 如何在 Mac OS X 上以 root 身份运行脚本? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我应该在 Mac OS X 终端上输入什么才能以 root 身份运行脚本 与任何基于 UNIX 的环境一样 您可以使用sudo http xkcd c
  • Visual Studio Code 中的集成终端是从外部打开的,而不是在内部打开的

    I have reinstalled Visual Studio Code and for some reason when I do the Ctrl Shift shortcut instead of opening a termina
  • 如何在最新的 VLC 版本上通过命令行设置音量?

    我一直在尝试在 Ubuntu 上通过终端设置 VLC 2 2 1 中的音量 但没有成功 参数 volume不存在了 Warning option volume no longer exists 并且我在帮助中找不到任何包含 卷 的内容 文档
  • Mac 终端 - 打开终端时出现“释放的指针未分配”错误

    在 mac 上打开终端时收到以下消息 上次登录 3 月 11 日星期二 14 33 24 在控制台上 登录 291 0x7fff78af9310 malloc 对象 0x7f974be006f0 的错误 正在释放的指针未分配 在malloc
  • 运行不带“python”关键字的 python 脚本

    如何在 Mac 上的终端中运行 python 脚本而不使用 python 关键字 而无需编辑现有的 python 文件 现在我必须这样做 python script py 我喜欢做的是这样的 script py 添加一个shebang us
  • 关于 jsch 中 sudo su - 用户的想法

    我在 jsch 中使用 sudo su 时遇到问题 下面是我的帖子 exec java package com test import com jcraft jsch import java awt import javax swing i
  • VS Code 刷新集成终端环境变量,无需重新启动/注销

    如果您在 Windows 上添加 更改某些环境变量 例如 PATH 即使重新启动 VS Code 后 它也不会在 VS Code 集成终端中可用 但是 如果您从 Windows 命令提示符 Powershell 打开该终端 它将具有这些新的
  • 如何在终端中显示图像?

    是否有任何类型的实用程序可以用来将图像转换为 ASCII 然后在我的终端中打印 我寻找过 但似乎没有找到 一个名为cacaview http linux die net man 1 cacaview允许您执行此操作 它是交互式的 允许您平移
  • 使用通配符在 .zshrc 中获取多个文件

    我通过 oh my zsh 使用 z shell 我想从 zshrc 文件中获取多个别名文件 这样我就可以让事情井井有条 我已经为别名文件添加了前缀 alias 这样我就可以通配符加载它们 但是 打电话给source alias 只加载第一
  • git 奇怪的彩色终端响应[重复]

    这个问题在这里已经有答案了 最近我被下面的彩色终端响应吓死了 它是由 git push 命令触发的 Does anybody have a clue where this colored response comes from 只是猜测 但
  • Windows 控制台“ESC[2J”并没有真正“清除”屏幕

    我知道这类问题经常被问到 但我认为这个问题有点不同 需要被问到 新的 Windows 控制台支持 ANSI VT100 控制代码 ANSI VT100 控制代码 http www termsys demon co uk vtansi htm
  • 在 Mac 上使用 JRE 打开 jar 文件

    我有一个 jar 文件 旨在通过命令行运行 我不打算在运行应用程序的机器上进行任何java开发 我的思考过程是 因此我应该只需要JRE而不是JDK 此外 JDK 大约是 JRE 的 4 倍 我不想下载它 在 Mac 上安装 JRE 时 它不
  • sqlite 插入需要很长时间

    我正在将不到 200 000 行插入到 sqlite 数据库表中 我只是在终端中通过 sqlite3 使用一个非常简单的 sql 文件 我打赌它已经运行了至少 30 分钟 这是正常现象还是我应该关闭该过程并尝试不同的方法 sqlite中的插
  • 在我的 Mac 上以 root 身份运行 pip 时出现“权限被拒绝”

    我开始使用我的 Mac 来安装 Python 包 就像我在工作中使用 Windows PC 一样 然而在我的 Mac 上我经常遇到没有权限写入日志文件或站点包时出错 于是我想到了跑步pip install
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 使用 su 和 Expect 脚本登录用户时遇到问题

    我正在为一个班级制作一个网站 您可以使用用户名和密码登录 然后它会将您带到一个显示您在班级中的成绩的页面 该网站正在运行bash脚本 https github com jduga002 rapache 并将托管在用户已有用户名和密码登录的计
  • 在初始化脚本中切换用户?

    这是我的 Ubuntu 工作站上的初始化脚本 我需要以除 root 之外的其他用户身份运行命令 但我就是不知道应该如何完成它 两者都不sudo u or su newuser似乎有效 剧本 respawn console none star
  • 如何在 bash 上运行 MySQL 命令?

    以下代码在命令行上运行 mysql user myusername password mypassword database mydatabase execute DROP DATABASE myusername CREATE DATABA
  • Linux 仅使用时间/日期戳重命名文件

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

随机推荐

  • 如何在 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 身份登录更安全 因为您可以向单个用户授予有限的管理权限 而无需他们