广告
返回顶部
首页 > 资讯 > 操作系统 >linux中Sudo命令使用技巧有哪些
  • 590
分享到

linux中Sudo命令使用技巧有哪些

2023-06-15 14:06:23 590人浏览 八月长安
摘要

这篇文章主要介绍了linux中Sudo命令使用技巧有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。sudo 表示 “superuser do”,它允许已验证的用户以其他用

这篇文章主要介绍了linux中Sudo命令使用技巧有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

sudo 表示 “superuser do”,它允许已验证的用户以其他用户的身份来运行命令。其他用户可以是普通用户或者超级用户。然而,大部分时候我们用它来提权运行命令,以替代直接使用 root 用户的操作。sudo 命令与安全策略配合使用,安全策略可以通过文件 /etc/sudoers 来配置。其安全策略具有高度可拓展性,支持插件扩展。默认情况下 /etc/sudoers 是不能被任何人直接编辑的,因为它的权限是 440,虽然也可以对其赋予写权限后再编辑,但推荐使用 visudo 命令编辑该文件。

1. 工作模式理解

简述其使用工作流程和配置文件配置!

  •  [1] 理解 sudo 命令的工作流程

    •   sudo 会读取和解析 /etc/sudoers 文件,查找调用命令的用户及其权限。

    •   然后提示调用该命令的用户输入密码,或者也可以通过 NOPASSWD 标志来跳过密码验证。

    •   之后,sudo 创建一个子进程,调用 setuid() 来切换到目标用户。

    •   最好,它会在上述子进程中执行参数给定的 shell 或命令。

  •  [2] 理解 sudo 命令授权配置

    •   USER/GROUP HOST=(USER[:GROUP]) [NOPASSWD:] COMMANDS

    •   USER/GROUP: 表示需要被授权的用户或者组;如果是组则需要以 % 开头

    •   HOST: 表示允许从哪些主机登录的用户运行 sudo 命令;ALL 表示允许从任何终端、机器访问

    •   (USER[:GROUP]): 表示使用 sudo 可切换的用户或者组,组可以不指定;ALL 表示可以切换到系统的所有用户

    •   NOPASSWD: 如果指定,则该用户或组使用 sudo 时不必输入密码

    •   COMMANDS: 表示运行指定的命令;ALL 表示允许执行所有命令 

# 允许 sudo 组执行所有命令  %sudo ALL=(ALL:ALL) ALL  # 允许用户执行所有命令,且无需输入密码  escape ALL =(ALL) NOPASSWD: ALL  # 仅允许用户执行 echo, ls 命令  escape ALL =(ALL) NOPASSWD: /bin/echo /bin/ls  # 运行本机的用户执行关机命令  escape localhost=/sbin/shutdown -h now  # 允许 users 用户组中的用户像 root 用户一样使用 mount、unmount、chrom 命令  %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
  •  [3] 配置 Defaults 选项 

# 指定用户尝试输入密码的次数,默认值为3  Defaults passwd_tries=5  # 设置密码超时时间,默认为 5 分钟  Defaults passwd_timeout=2  默认 sudo 询问用户自己的密码,添加 targetpw 或 rootpw 配置可以让 sudo 询问 root 密码  Defaults targetpw  # 指定自定义日志文件  Defaults logfile="/var/log/sudo.log"  # 要在自定义日志文件中记录主机名和四位数年份,可以加上 log_host 和 log_year 参数  Defaults log_host, log_year, logfile="/var/log/sudo.log"  # 保持当前用户的环境变量  Defaults env_keep += "LANG LC_ADDRESS LC_CTYPE COLORS DISPLAY HOSTNAME EDITOR"  Defaults env_keep += "ftp_proxy Http_proxy https_proxy no_proxy"  # 安置一个安全的 PATH 环境变量  Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

2. 使用技巧总结

  主要介绍使用 sudo 相关命令的使用技巧和问题处理方式!

  •  [1] 如何将 visudo 编辑器从 nano 更改为 vim?

当我使用 visudo 命令的时候,它总是用 nano 编辑器打开它,对应平时习惯使用 vi 或者 vim 的用户来说,显得有些别扭,以及操作不够自如。所以,如何更好的将 visudo 编辑器从 nano 更改为 vim 就变得非常重要了。

最佳的解决办法,就是调用命令,永久的将终端的编辑器更换成为 vim 编辑器,一劳永逸。我们只需要执行如下命令,输入自己需要的编辑器序号并按下回车键即可。下次执行 visudo 命令的时候,就会使用 vim 编辑器打开文件。

# 因为/etc/sudoers普通用户无法打开和使用  $ sudo update-alternatives --config editor  There are 4 choices for the alternative editor (providing /usr/bin/editor).    Selection    Path                Priority   Status  ------------------------------------------------------------  * 0            /bin/nano            40        auto mode    1            /bin/ed             -100       manual mode    2            /bin/nano            40        manual mode    3            /usr/bin/vim.basic   30        manual mode    4            /usr/bin/vim.tiny    10        manual mode  Press enter to keep the current choice[*], or type selection number: 3

其次的解决方法,就是通过环境变量修改当前终端的默认编辑器。

# 在.zshrc或.profile文件中  $ export EDITOR=vim;  # 希望执行对visudo生效  $ sudo EDITOR=vim visudo  # 或者修改/etc/sudoers文件的默认编辑器  Defaults editor=/usr/bin/vim
  •  [2] Vim 如何强制保存只读文件?

在使用 vim 的时候,当以普通用户打开一个只有 root 用户才有权限操作的文件时,在编辑完成之后保存时发现,这个文件没有权限修改。好不容易把文件编辑完了,却无法保存,就只能放弃,然后退出,再以 root 权限打开,重新编辑,是在痛苦!那有没有好的方法来解决这个问题呢?咳咳咳,肯定是有的。

# Vim命令模式下执行即可强制保存  # w: 表示保存文件  # !: 表示执行外部命令  # tee: 表示把数据重定向到给定文件和屏幕上  # %: 在执行外部命令时,%会扩展成当前文件名  :w !sudo tee %

上述方式非常完美的解决了不能保存只读文件的问题,但毕竟命令还是有些长,为了避免每次输入一长串的命令,可以将它映射为一个简单的命令加到 .vimrc 中。这样,简单的运行 :w!! 即可,命令后半部分 > /dev/null 作用为显式的丢掉标准输出的内容。

" Allow saving of files as sudo when I forGot to start vim using sudo.  cmap w!! w !sudo tee > /dev/null %
  •  [3] 如何更加安全地编辑文件

Sudoedit 是一个内置命令,允许用户安全地编辑文件。根据 sudo 手册页,sudoedit 等效于使用 -e 命令行选项执行 sudo。

那么这个命令会做什么呢,它会首先创建你要编辑的文件的临时副本。然后,命令将搜索 SUDO_EDITOR,VISUAL 和 EDITOR 环境变量(按此顺序),以确定应调用哪个编辑器来打开刚刚创建的临时副本。用户完成修改工作后,更改将复制回原始文件。

# Sudo命令手册页  -e, --edit  Edit one or more files instead of running a command. In lieu of a path name,  the string "sudoedit" is used when consulting the security policy. If the user  is authorized by the policy, the followingsteps are taken:   1. Temporary copies are made of the files to be edited with   the owner set to the invoking user.   2. The editor specified by the policy is run to edit the   temporary files. The sudoers policy uses the  SUDO_EDITOR, VISUAL and EDITOR environment variables (in   that order). If none of SUDO_EDITOR, VISUAL or EDITOR   are set, the first program listed in the editor   sudoers(5) option is used.   3. If they have been modified, the temporary files are   copied back to their original location and the temporary   versions are removed.  If the specified file does not exist, it will be created. Note that unlike most  commands run by sudo, the editor is run with the invoking user is environment  unmodified. If, for some reason, sudo is unable to update a file with its edited  version, the user will receive a warning and the edited copy will remain in a  temporary file.
  •  [4] 如何让 sudo 会话时间随心所欲?

其中 sudo 命令是权限委派的命令,在生产环境中是非常常用的,默认情况下 sudo 命令会话时间是在 15 分钟。要设置 sudo 密码超时的值,需要使用 passwd_timeout 参数进行设置。

可以以分钟设置为你所需的任何时间,它会在超时之前一直等待。如果要为每个执行的 sudo 命令弹出密码提示,你也可以将时间设置为 0,或者通过设置值 -1 永久禁用密码提示。

# 设置timeout时间  # 意味着sudo密码提示将会在用户使用20分钟后过期  Defaults        env_reset,timestamp_timeout=20
  •  [5] 如何更加安全的授权服务器权限?

如何我们管理的服务器开发或者其他人员需要登录该服务器,进行环境调试或者问题复现等情况。这时,就需要我们给对应的用户开通登录的访问权限。但是如果我们直接编辑 /etc/sudoers 文件的话,之后当对方使用完成之后我就还需要手动进行清理。如果我们忘记的话,该开发或者其他人员将一直可以登录该服务器,会有一定程度的安全问题。

不幸的是,对应临时授权的话,/etc/sudoers 文件中没有对应的配置,可以对某个用户或者用户组进行指定范围的时间授权。当用户到达指定时间点之后,将拒绝该用户再次进行登录了。对应此种情况,我们可以通过 crontab 定时任务与 /etc/sudoers.d 目录的机制可以完美的解决上述问题。

我们通过定时任务的定时执行目录,来定时刷掉 /etc/sudoers.d/ 目录下的用户或者用户组的授权配置文件。比如,我们需要定时每日刷掉今日临时授权的用户或者用户,可以在 /etc/cron.daily 目录下面创建用于删除 /etc/sudoers.d/ 目录的 rm -rf 命令,之后在固定的时间会自动删除。对应授权用户,我们使用在 /etc/sudoers.d/ 目录下创建单独的配置文件,而不是直接修改 /etc/sudoers 文件。

# Crontab有多种定时机制  # 下述分别表示每天、每时、每月、每周定时执行  $ ls -dl /etc/cron.* | grep -v cron.d$  drwxr-xr-x 2 root root 4096 May 15 06:18 /etc/cron.daily  drwxr-xr-x 2 root root 4096 Feb 14  2019 /etc/cron.hourly  drwxr-xr-x 2 root root 4096 Feb 14  2019 /etc/cron.monthly  drwxr-xr-x 2 root root 4096 Jun 18 09:57 /etc/cron.weekly  # 创建单独的授权配置文件  $ ls -lh /etc/sudoers.d/  -r--r----- 1 root root 666 Oct  6  2017 lisi  -r--r----- 1 root root 958 Jan 18  2018 zhangsan   # 查看授权配置文件的内容  $ cat /etc/sudoers.d/zhangsan  ALL ALL = (root) NOPASSWD: zhangsan
  •  [6] 如何解决 sudo 命令找不到环境变量?

我们日常在使用 sudo 命令的时候,常常会遇到,当切换用户之后,发现之前设置的环境变量怎么不见了呢?这是因为,我们执行 sudo 命令之后会切换用户,如果保留环境变量会有一定的安全问题,系统会默认重置环境变量为安全的环境变量。先前设置的变量都会失效,只有少数配置文件中指定的环境变量能够保存下来。

我们可以看一下 sudo 配置文件 /etc/sudoers 来找找作用原因。我们执行如下命令之后,可以看到如下输入(有可能和我这里的不一样)。其中 env_reset 表示默认会重置环境变量,因此我们自定义的变量会在 sudo 命令执行之后失效,也就不会正确获取变量值了。而 env_keep 则表示用于保留部分环境变量不被重置,需要保留的变量就写入双引号之中,可自行追加需要保留的变量。最后就是 secure_path 变量,其作用就是包含的路径将被当做 sudo 环境的 PATH 变量来使用。如果在 sudo 环境无法找到某些命令,那么可以将这些命令的路径加入该配置项之中。

$ sudo sed '/^#/d;/^$/d' /etc/sudoers  Defaults    env_reset  Defaults    env_keep =  "COLORS IDSPLAY HOSTNAME HISTSIZE LS_COLORS"  Defaults    env_keep += "MAIL PS1 PS2 QtDIR USERNAME LANG LC_ADDRESS"  Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

我们知道原因之后,就可以针对上述情况作出不用的处理方式,来解决 sudo 命令找不到环境变量的问题。

第一种解决方法,就是在使用的时候,使用 -E 参数。加上 -E 选项后,用户可以在 sudo 执行时保留当前用户已存在的环境变量,不会被 sudo 重置。另外,如果用户对于指定的环境变量没有权限,则会报错。需要注意的是,在内部测试机器中,安全性要求不高的情况下使用。

$ sudo sudo -E

第二种解决方法,就是修改 sudo 配置文件。可以通过修改 /etc/sudoers 文件的 env_keep 和 secure_path 配置项,来指定 sudo 环境中需要保留的环境变量和路径。当然,我们也可以把配置文件的变量 !env_reset 给去掉,这样就不会有限制了。

$ sudo vim /etc/sudoers  Defaults !env_reset

感谢你能够认真阅读完这篇文章,希望小编分享的“linux中Sudo命令使用技巧有哪些”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网操作系统频道,更多相关知识等着你来学习!

--结束END--

本文标题: linux中Sudo命令使用技巧有哪些

本文链接: https://www.lsjlt.com/news/280580.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • linux中Sudo命令使用技巧有哪些
    这篇文章主要介绍了linux中Sudo命令使用技巧有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。sudo 表示 “superuser do”,它允许已验证的用户以其他用...
    99+
    2023-06-15
  • linux中Sudo命令的使用技巧有哪些
    这篇文章将为大家详细讲解有关linux中Sudo命令的使用技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root ...
    99+
    2023-06-28
  • linux中使用sudo的小技巧有哪些
    这篇文章主要介绍linux中使用sudo的小技巧有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1)sudo !!用法:想要作为root授权来运行一个命令,但是忘记使用“sudo”了不要担心。我们可以使用”sud...
    99+
    2023-06-16
  • Linux上sudo的使用技巧有哪些
    这篇文章主要为大家展示了“Linux上sudo的使用技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux上sudo的使用技巧有哪些”这篇文章吧。许多用户不甚知晓的是sudo可以用来...
    99+
    2023-06-16
  • Linux中VI命令使用技巧有哪些
    这篇文章主要为大家展示了“Linux中VI命令使用技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中VI命令使用技巧有哪些”这篇文章吧。进入vi命令vi filename :打...
    99+
    2023-06-16
  • Linux系统中使用sudo小技巧有哪些
    这篇文章将为大家详细讲解有关Linux系统中使用sudo小技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实用小技巧1) !! 和 ! -1用法:想要允许授权的普通用户作为root用户来执行一个命...
    99+
    2023-06-28
  • Linux中常用技巧命令有哪些
    小编给大家分享一下Linux中常用技巧命令有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 终止操作 【ctrl+c】2. 快速的从命令的尾部切换首部【c...
    99+
    2023-06-28
  • linux中历史命令使用技巧有哪些
    这篇文章主要介绍linux中历史命令使用技巧有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!历史命令使用技巧分享几个历史命令的使用技巧,能够提高你的工作效率。!!:重复执行上条命令;!N:重复执行 history...
    99+
    2023-06-27
  • Linux系统中sudo命令的10个技巧分别是哪些
    今天就跟大家聊聊有关Linux系统中sudo命令的10个技巧分别是哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。sudo 命令与安全策略配合使用,默认安全策略是 sudoers,...
    99+
    2023-06-16
  • Unix/Linux命令技巧有哪些
    这篇文章给大家分享的是有关Unix/Linux命令技巧有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 删除一个大文件我在生产服务器上有一个很大的200GB的日志文件需要删除。我的rm和ls命令已经崩溃,...
    99+
    2023-06-15
  • 有哪些Unix/Linux命令技巧
    这篇文章主要讲解了“有哪些Unix/Linux命令技巧”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“有哪些Unix/Linux命令技巧”吧!> /path/to/file.l...
    99+
    2023-06-09
  • Linux命令行中使用history的技巧有哪些
    这篇文章给大家分享的是有关Linux命令行中使用history的技巧有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.使用 HISTTIMEFORMAT 显示时间戳当在命令行输入history时,它将显示序...
    99+
    2023-06-15
  • Linux中命令补齐技巧有哪些
    这篇文章主要为大家展示了“Linux中命令补齐技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中命令补齐技巧有哪些”这篇文章吧。默认情况下,bash命令行可以自动补全文件或目录...
    99+
    2023-06-13
  • linux的sudo命令有哪些功能
    这篇文章主要介绍“linux的sudo命令有哪些功能”,在日常操作中,相信很多人在linux的sudo命令有哪些功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux的sudo命令有哪些功能”的疑惑有所...
    99+
    2023-06-06
  • Linux的ip命令使用小技巧有哪些
    这篇文章将为大家详细讲解有关Linux的ip命令使用小技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只...
    99+
    2023-06-27
  • Linux下TOP命令使用小技巧有哪些
    这篇文章主要介绍Linux下TOP命令使用小技巧有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 详细显示command按下小写c : 详细显示command列就是这样的效果,启动命令显示的非常全不仅是程序的...
    99+
    2023-06-16
  • 实用的Linux命令行技巧有哪些
    小编给大家分享一下实用的Linux命令行技巧有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!输出显示为一个表有时候,当你看到一个命令的输出,由于过度拥挤的字符...
    99+
    2023-06-16
  • Linux系统中sudo命令的十个技巧总结
    前言 在linux和其他类Unix操作系统中,只有root用户可以运行所有命令并在系统上执行某些关键操作,如安装和更新,删除包,创建用户和组,修改重要的系统配置文件等。 然而,承担root用户角色的系统管理员可以允...
    99+
    2022-06-04
    linux sudo命令 linux的sudo命令 linux中sudo命令
  • SSH命令使用小技巧有哪些
    这篇文章主要介绍了SSH命令使用小技巧有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。SSH 是 Linux 下进行远程连接的基本工具,SSH对常用的用途就是登录,SSH...
    99+
    2023-06-27
  • 有趣的Linux命令行小技巧有哪些
    这篇文章主要为大家展示了“有趣的Linux命令行小技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“有趣的Linux命令行小技巧有哪些”这篇文章吧。1、 在 Linux 中锁定或隐藏文件或...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作