Linux sudo命令–以Root权限运行命令

sudo command是一个特殊命令,用于执行具有root权限的普通用户命令,而无需以root用户身份登录。sudo术语是 超级用户Do “或” 替代用户do “. 这不是一个安全问题,因为为了以root用户身份执行命令,用户应该已经在 /etc/sudoers 文件。如果不是,则用户不能以root权限执行命令。sudo命令还用于运行具有不同用户权限的命令。sudo命令仅为当前命令或应用程序提供根用户或超级用户权限。所以这意味着sudo向当前的普通用户提供临时管理权限。

White Privilege Card Credit Card Trumps Everything白色特权卡
| 月销量2件
优惠价6元
原价¥6

淘口令:

¥dWHCX9z1Q9S¥
 

sudo创建于1980年,但在1994年因一个非官方的名字“sudo”而广受欢迎 特写苏多 “. 然后通过额外的开发,解决问题,与更多的Linux发行版集成,名称变为“ 苏多 “.

安装sudo(sudo命令未找到错误解决方案)

sudo命令预先安装在大多数Linux发行版及其日常系统管理的核心中。但由于不同的原因,在某些情况下可能无法安装或拆除。您将得到一个类似“sudo command not found error”的错误。对于大多数Linux发行版,sudo命令可以用包名“sudo”安装。

为Ubuntu、Debian、Mint和Kali安装sudo:

sudo apt install sudo

为Fedora、CentOS、RHEL和SUSE安装sudo:

sudo yum install sudo

sudo命令语法

sudo 命令在命令的开头使用,这意味着在执行命令之前根特权被提升。

sudo PARAMETER COMMAND 
  • 参数 是sudo命令参数。
  • 命令 将使用root或其他用户权限执行的命令。

sudo参数

即使sudo命令很多选项或参数最流行的选项如下。

参数 说明
-b类 运行命令后台
-电子 保护环境
-小时 显示帮助信息
-我 列出允许的命令
-不 非交互式运行
-s码 运行指定的shell环境
-u型 使用除root以外的指定用户权限运行
-五 打印详细或调试输出

显示sudo命令帮助信息

sudo命令提供 -小时 选项以列出具有可用选项的帮助信息。或者-h选项的长格式 –帮助 也可用于打印帮助。

$ sudo -h

以Root权限运行命令

根据其语法,sudo命令可用于运行具有如下root权限的不同命令。在下面的示例中,我们将打印 /etc/passwd 内容使用 cat 命令。通常,passwd文件只能由root用户读取。将要求验证当前用户密码。成功验证后,密码将被缓存,短时间内不会被请求。

$ sudo cat /etc/passwd

输出如下。其中,系统中的每个用户都列出了诸如loginshell、userid、home directory等信息。

[sudo] password for ismail:root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologinsys:x:3:3:sys:/dev:/usr/sbin/nologinsync:x:4:65534:sync:/bin:/bin/syncgames:x:5:60:games:/usr/games:/usr/sbin/nologinman:x:6:12:man:/var/cache/man:/usr/sbin/nologinlp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologinmail:x:8:8:mail:/var/mail:/usr/sbin/nologinnews:x:9:9:news:/var/spool/news:/usr/sbin/nologinuucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologinproxy:x:13:13:proxy:/bin:/usr/sbin/nologinwww-data:x:33:33:www-data:/var/www:/usr/sbin/nologinbackup:x:34:34:backup:/var/backups:/usr/sbin/nologinlist:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologinirc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin

将用户添加到Sudoers文件

为了使用sudo命令,应该将当前用户添加到名为 /etc/sudoers . 此文件存储有关sudo命令的配置,例如哪个用户可以运行sudo命令以及可以提供哪些权限。sudoers文件可以用不同的方式编辑,比如使用常规文本文件编辑器,但是 visudo 命令以更时尚的方式编辑sudoers文件。

$ sudo visudo
Linux sudoers文件

例如,我们可以跳过为用户的每个sudo命令执行询问密码 ismail 使用以下行。在下面的一行中,用户ismail可以以root用户和其他用户的身份运行每个命令,而无需询问密码。

ismail ALL=(ALL) NOPASSWD:ALL

在下面的配置中,我们将启用无密码执行,但限制用户可以运行的命令。用户只能运行 /bin/mkdir /bin/rmdir 命令。命令应提供完整或绝对路径。

ismail ALL=(ALL) NOPASSWD:/bin/mkdir,/bin/rmdir

我们可以为特定的Linux组配置sudo权限。在下面的例子中,我们将给出 admin 对所有没有密码的命令的sudo权限进行分组。

%admin% ALL=(ALL) NOPASSWD:ALL

添加用户sudo/wheel组

运行sudo命令需要一些特权。为了运行sudo命令,当前用户应该拥有sudo或wheel组的用户。sudo组用于Debian、Ubuntu、Mint和Kali。车轮组用于Fedora、CentOS、RHEL和SUSE。

相关文章: 在Linux中如何以Root用户身份登录?

将用户添加到sudo组:

usermod -aG sudo ismail

将用户添加到控制盘组:

usermod -aG wheel ismail

列出Sudoer用户权限

sudo命令提供-l选项以列出当前用户sudoer文件配置和权限。这将列出当前用户的安全路径,在这些路径中可以安全地执行可执行文件。下面列出了当前用户的可用命令。

$ sudo -l
列出Sudoer用户权限

以其他用户身份运行命令

即使sudo命令主要用于和流行于执行具有root权限的命令,它也可以用于执行具有不同用户权限的命令。这个 -u 选项用于将用户名设置为参数。在下面的示例中,我们将对用户执行mkdir命令 ali .

$ sudo -u ali mkdir /home/ali/backup

Sudo环境变量

作为命令行或bash工具,sudo命令附带了有用的环境变量。这些环境变量用于设置当前用户和新用户环境。

SUDO_ASKPASS 用于启用或禁用为用户询问密码。

SUDO_COMMAND 设置sudo执行的命令。

SUDO_EDITOR 是用于编辑sudoers文件的编辑器,在大多数情况下它是nano。

SUDO_PROMPT 用作默认密码提示。

SUDO_UID 存储调用sudo命令的用户的用户id。

Sudo命令示例

在这一部分中,我们将给出一些关于sudo命令的流行用例的例子。在下面的示例中,我们将使用 www 用户权限。

$ sudo -u www vim /var/www/html/index.html$ sudo -u www vim /var/www/html/index.php$ sudo -u www vim /var/www/html/index.cgi

在下面的示例中,将显示有关系统的日志文件。通常,这些日志文件仅由root和admin用户查看。

$ sudo -u adm cat /var/log/syslog

我们可以像编辑文件一样编辑其他用户的主目录内容。在下面的示例中,我们将更改 阿赫迈特 主用户目录。

$ sudo -u ahmet vim /home/ahmet/names.txt

可以使用sudo命令关闭系统,正常用户如下所示。

$ sudo shutdown

如果您想更改其他用户密码并且不想登录到此用户或root用户,您可以使用sudo来更改另一个用户密码,如下所示。在下面的示例中,将更改名为elif password的用户。

$ sudo -u elif passwd

使用sudo运行多个命令

单个sudo可以在一次执行中运行多个命令。这主要与bash特性有关,其中一行可能包含多个命令,这些命令用 ; .

$ sudo sh -c "cd /home/ismail; mkdir backup; cd backup; touch text.txt"

也可以使用不同的用户权限执行多个命令,如下所示。

$ sudo -u ismail sh -c "cd /home/ismail; mkdir backup; cd backup; touch text.txt"

比较su和sudo命令

su 是另一个命令,用于将当前用户更改为根用户或其他用户。看起来su和sudo命令是相同的,但它们不是。sudo命令只通过更改命令执行权限来执行给定的命令,而不更改当前用户会话。其中su命令直接将当前用户会话更改为其他用户,并且除非不更改回该用户,否则不能对上一个用户进行操作。

相关文章: 如何在Linux命令行中使用curl下载文件?

弄乱了Sudoers文件

您可以用不同的方式编辑sudoers文件。但最好的方法是使用 visudo 命令,该命令将使用默认文本编辑器打开sudo命令。但是,如果您创建一个常规文本文件并复制一个sudoers文件,并且如果您有键入错误,sudoers文件格式将被破坏,sudoers文件将无法工作。请在编辑sudoers文件时考虑以下建议,以防止错误和故障。

  • 不要直接编辑sudoers文件,使用visudo命令退出时将检查已编辑的sudoers文件。
  • 如果sudoers文件中有错误并且不能使用sudo命令,请使用su命令,su命令将以root用户身份登录。
  • 如果您在sudoers文件中出错,无法运行sudo命令并将此系统用作虚拟机,只需关闭系统并装载磁盘文件并更改sudoers文件。
© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0
分享