Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
linux sudo命令的知识点有哪些_创想鸟

linux sudo命令的知识点有哪些

“Sudo”是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他 特许用户才能完成的任务,比如:运行一些像mount,halt,su之类的命令,或者编辑一些系统配置文件,像/etc/mtab,/etc /samba/smb.conf等。这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性。

一. sudo的特点

sudo扮演的角色注定了它要在安全方面格外谨慎,否则就会导致非法用户攫取root权限。同时,它还要兼顾易用性,让系统管理员能够更有效,更方便地使用它。sudo设计者的宗旨是:给用户尽可能少的权限但仍允许完成他们的工作。所以,sudo
有以下特点:

  # 1. sudo能够限制指定用户在指定主机上运行某些命令。
   # 2. sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。
   # 3. sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。
   # 4.sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码。

二. sudo命令

sudo程序本身就是一个设置了SUID位的二进制文件。我们可以检查一下它的权限:

$ls -l /usr/bin/sudo    ---s--x--x 2 root root 106832 02-12 17:41 /usr/bin/sudo

sudo的配置都记录在/etc/sudoers文件中,我们下面将会详细说明。配置文件指明哪些用户可以执行哪些命令。要使用sudo,用户 必须提供一个指定用户名和密码。注意:sudo需要的不是目标用户的密码,而是执行sudo的用户的密码。如果不在sudoers中的用户通过sudo执 行命令,sudo会向管理员报告这一事件。用户可以通过sudo -v来查看自己是否是在sudoers 之中。如果是,它还可以更新你的“入场券”上的时间;如果不是,它会提示你,但不会通知管理员。

sudo命令格式如下:

sudo -K -L -V -h -k -l -vsudo [-HPSb] [-a auth_type] [-c class-] [-p prompt] [-u username#uid] {-e file [...] -i -s command}     下面我们再来看一下sudo其它常用的一些参数:   选项     含义     作用   sudo -h     Help     列出使用方法,退出。   sudo -V     Version     显示版本信息,并退出。   sudo -l     List     列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。   sudo -u username#uid     User     以指定用户的身份执行命令。后面的用户是除root以外的,可以是用户名,也可以是#uid。   sudo -k     Kill     清除“入场卷”上的时间,下次再使用sudo时要再输入密码。   sudo -K     Sure kill     与-k类似,但是它还要撕毁“入场卷”,也就是删除时间戳文件。   sudo -b command     Background     在后台执行指定的命令。   sudo -p prompt command     Prompt     可以更改询问密码的提示语,其中%u会代换为使用者帐号名称,%h会显示主机名称。非常人性化的设计。    sudo -e file     Edit     不是执行命令,而是修改文件,相当于命令sudoedit。

还有一些不常用的参数,在手册页sudo(8)中可以找到。

三. 配置sudo

配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。之所以使用visudo有两个原因,一是它能够防止
两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。

visudo默认的是在vi里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理,就像:

>>> sudoers file: syntax error, line 22 <<

此时我们有三种选择:键入“e”是重新编辑,键入“x”是不保存退出,键入“Q”是退出并保存。如果真选择Q,那么sudo将不会再运行,直到错误被纠正。

现在,我们一起来看一下神秘的配置文件,学一下如何编写它。让我们从一个简单的例子开始:让用户Foobar可以通过sudo执行所有root可执行的命令。以root身份用visudo打开配置文件,可以看到类似下面几行:

# Runas alias specification   # User privilege specificationroot    ALL=(ALL)ALL

我们一看就明白个差不多了,root有所有权限,只要仿照现有root的例子就行,我们在下面加一行(最好用tab作为空白):

foobar ALL=(ALL)    ALL

保存退出后,切换到foobar用户,我们用它的身份执行命令:

[foobar@localhost ~]$ ls /root   ls: /root: 权限不够   [foobar@localhost ~]$ sudo ls /root   PassWord:   anaconda-ks.cfg Desktop install.log install.log.syslog

好了,我们限制一下foobar的权利,不让他为所欲为。比如我们只想让他像root那样使用ls和ifconfig,把那一行改为:

foobar localhost=    /sbin/ifconfig,   /bin/ls

再来执行命令:

[foobar@localhost ~]$ sudo head -5 /etc/shadow   Password:   Sorry, user foobar is not allowed to execute '/usr/bin/head -5 /etc/shadow' as root on localhost.localdomain.   [foobar@localhost ~]$ sudo /sbin/ifconfigeth0      Linkencap:Ethernet HWaddr 00:14:85:EC:E9:9B...

现在让我们来看一下那三个ALL到底是什么意思。第一个ALL是指网络中的主机,我们后面把它改成了主机名,它指明
foobar可以在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个
ALL当然就是指命令名了。例如,我们想让foobar用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件:

foobar    linux=(jimmy,rene)    /bin/kill

但这还有个问题,foobar到底以jimmy还是rene的身份执行?这时我们应该想到了sudo -u了,它正是用在这种时候。 foobar可以使用sudo -u jimmy kill PID或者sudo -u rene kill PID,但这样挺麻烦,其实我们可以不必每次加-u,把rene或jimmy设为默认的目标用户即可。再在上面加一行:

Defaults:foobar    runas_default=rene

Defaults后面如果有冒号,是对后面用户的默认,如果没有,则是对所有用户的默认。就像配置文件中自带的一行:

Defaults    env_reset

另一个问题是,很多时候,我们本来就登录了,每次使用sudo还要输入密码就显得烦琐了。我们可不可以不再输入密码呢?当然可以,我们这样修改配置文件:

foobar localhost=NOPASSWD:     /bin/cat, /bin/ls

再来sudo一下:

[foobar@localhost ~]$ sudo ls /rootanaconda-ks.cfg Desktop install.log   install.log.syslog

当然,你也可以说“某些命令用户foobar不可以运行”,通过使用!操作符,但这不是一个好主意。因为,用!操作符来从ALL中“剔出”一些命令一般是没什么效果的,一个用户完全可以把那个命令拷贝到别的地方,换一个名字后再来运行。

四. 日志与安全

sudo为安全考虑得很周到,不仅可以记录日志,还能在有必要时向系统管理员报告。但是,sudo的日志功能不是自动的,必须由管理员开启。这样来做:

# toUCh /var/log/sudo   # vi /etc/syslog.conf

在syslog.conf最后面加一行(必须用tab分割开)并保存:

local2.debug                    /var/log/sudo

重启日志守候进程,

ps aux grep syslogd

把得到的syslogd进程的PID(输出的第二列是PID)填入下面:

kill –HUP PID

这样,sudo就可以写日志了:

[foobar@localhost ~]$ sudo ls /rootanaconda-ks.cfg   Desktop install.log   install.log.syslog   $cat /var/log/sudoJul 28 22:52:54 localhost sudo:   foobar :   TTY=pts/1 ; PWD=/home/foobar ; USER=root ; COMMAND=/bin/ls /root

不过,有一个小小的“缺陷”,sudo记录日志并不是很忠实:

[foobar@localhost ~]$ sudo cat /etc/shadow > /dev/null   [foobar@localhost ~]$   cat /var/log/sudo...Jul 28 23:10:24 localhost sudo:   foobar : TTY=pts/1 ;   PWD=/home/foobar ; USER=root ; COMMAND=/bin/cat /etc/shadow

重定向没有被记录在案!为什么?因为在命令运行之前,shell把重定向的工作做完了,sudo根本就没看到重定向。这也有个好处,下面的手段不会得逞:

[foobar@localhost ~]$ sudo ls /root > /etc/shadowbash: /etc/shadow: 权限不够

sudo 有自己的方式来保护安全。以root的身份执行sudo
-V,查看一下sudo的设置。因为考虑到安全问题,一部分环境变量并没有传递给sudo后面的命令,或者被检查后再传递的,比如:PATH,HOME,
SHELL等。当然,你也可以通过sudoers来配置这些环境变量。

以上就是linux sudo命令的知识点有哪些的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/242307.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何在Java中遍历数组 Java数组遍历技巧和示例
上一篇 2026年10月6日 02:27:16
从传统煤锅炉到地暖机:中国采暖市场的升级正在发生
下一篇 2025年11月5日 00:30:31

相关推荐

  • linux是否自带有ssh

    linux是否自带有sshlinux是否自带有sshlinux是否自带有sshlinux是否自带有ssh

    linux自带有ssh。linux系统会自带ssh软件,默认就是OpenSSH相关软件包,并将ssh服务添加为开机自启动,可以通过“ssh -V”命令来查看安装的ssh版本信息。要启动sshd服务,只需执行命令“systemctl start sshd”,它使用默认端口22。 linux自带有ssh…

    2026年10月6日 • 用户投稿
    100
  • Linux系统中怎么安装NSQ的Go语言客户端

    一、安装Go语言环境 在安装NSQ前,需先安装Go语言环境。在Linux系统中安装Go语言环境的步骤如下: 1.下载安装包官方网站https://golang.org/dl/提供了各种操作系统的安装包,下载对应Linux系统的安装包。 2.解压安装包将下载的安装包解压至Linux系统的指定目录,例如…

    2026年10月6日
    100
  • 怎么将Django项目迁移到linux系统中

    怎么将Django项目迁移到linux系统中怎么将Django项目迁移到linux系统中怎么将Django项目迁移到linux系统中怎么将Django项目迁移到linux系统中

    Django项目配置修改 我们需要把原先的django项目进行修改才能更好地进行项目迁移工作,首先需要修改的是settings.py文件。 由于项目上线之后不能让用户看到后台的运行逻辑,所以我们要把DEBUG改成False,把ALLOWED_HOSTS写成‘*’,这样是为了允许从不同主机进行访问。 …

    2026年10月6日 • 用户投稿
    300
  • linux中acpi是什么意思

    linux中acpi是什么意思linux中acpi是什么意思linux中acpi是什么意思linux中acpi是什么意思

    linux中acpi是“Advanced Configuration and Power Interface”的缩写,意思是高级配置与电源管理接口,这是微软、英特尔和东芝共同开发的一种工业标准。ACPI是提供操作系统与应用程序管理所有电源管理接口,包括了各种软件和硬件方面的规范。 本教程操作环境:l…

    2026年10月6日 • 用户投稿
    100
  • Linux目录结构的意义是什么

    / root — 启动linux时使用的一些核心文件。如操作系统内核、引导程序grub等。home — 存储普通用户的个人文件 ftp — 用户所有服务 httpd samba user1 user2bin — 系统启动时需要的执行文件(二进制)sbi…

    2026年10月6日
    100
  • 专属Python开发者的完美终端工具

    专属Python开发者的完美终端工具专属Python开发者的完美终端工具专属Python开发者的完美终端工具专属Python开发者的完美终端工具

    大家好,我是小编。 今天我为大家推荐一款非常精致的终端工具 – Rich。 Rich 是一个 Python 库,可以在终端中为您提供富文本和美观、精致的格式。 通过 Rich API,您可以轻松地在终端输出中添加各种颜色和不同的样式。它能绘制精美的表格、进度条、Markdown、语法高亮…

    2026年10月6日 • 用户投稿
    700
  • VSCode 怎样快速复制当前行或选中内容 VSCode 快速复制行或内容的快捷键方法​

    vscode中快速复制当前行最常用的是shift + alt + down(向下复制)或shift + alt + up(向上复制),该操作直接将当前行复制到下一行或上一行,无需经过剪贴板;2. 若需复制选中内容到剪贴板,则使用ctrl + c(windows/linux)或cmd + c(maco…

    2026年10月6日
    400
  • linux中如何查找php的安装路径

    一、使用which命令查找PHP 使用which命令可以快速的找到你安装的PHP路径,具体命令如下: which php 输入命令后会输出当前系统中的PHP程序安装路径,如下所示: /usr/bin/php 二、使用whereis命令查找PHP 立即学习“PHP免费学习笔记(深入)”; 使用wher…

    2026年10月6日
    300
  • linux发行版本多的原因是什么

    所有基于Linux内核的操作系统都被称为“Linux发行版”,而Linux本身只是一个内核。Linux内核在GNU通用公共许可证下获得许可,该许可证赋予任何人查看、编辑和分发内核的任何应用程序的权利;免费创建自己的操作系统的能力鼓励了许多开发人员开始创建自己的发行版。 什么是 Linux 发行版? …

    2026年10月6日
    100
  • Linux SHELL中sh和bash的区别是什么

    什么是SHELL?  shell的中文意思就是贝壳,其实比较类似于我们内核的壳。简而言之就是只要能够操作应用程序的接口都能够称为SHELL。狭义的shell指的是命令行方面的软件,广义的SHELL则包括图形界面。 SHELL的版本  在鸟哥的私房菜的一书中,介绍了UNIX的版本以及众多的SHELL版…

    用户投稿 2026年10月5日
    100
  • Linux操作系统中如何修改环境变量

    方法一:在/etc/profile文件中添加变量【对所有用户生效(永久的)】   用vi在文件/etc/profile文件中增加变量,该变量将会对linux下所有用户有效,并且是“永久的”。   要让刚才的修改马上生效,需要执行以下代码 复制代码 代码如下: # source /etc/profil…

    2026年10月5日
    100
  • Cursor永久免费攻略:无限邮箱注册+重置机器码+Cursor试用期重置工具实现永久免费使用

    Cursor永久免费攻略:无限邮箱注册+重置机器码+Cursor试用期重置工具实现永久免费使用Cursor永久免费攻略:无限邮箱注册+重置机器码+Cursor试用期重置工具实现永久免费使用Cursor永久免费攻略:无限邮箱注册+重置机器码+Cursor试用期重置工具实现永久免费使用Cursor永久免费攻略:无限邮箱注册+重置机器码+Cursor试用期重置工具实现永久免费使用

    全新攻略:cursor pro 无限续杯技巧,全自动化工具,兼容cursor 0.46 此前苏米分享过几篇关于Cursor的教程文章,如今眼看Cursor的免费额度即将耗尽,升级至PRO需花费20美元/月,这对初学者而言成本偏高,那么普通用户该如何持续使用呢?苏米整理了目前较为可靠的四种方案,供正在…

    2026年10月5日 • 用户投稿
    200
  • linux能不能用鼠标

    linux能不能用鼠标linux能不能用鼠标linux能不能用鼠标linux能不能用鼠标

    linux能用鼠标。linux图形化界面下,可以使用鼠标经常操作,和windows一样;而linux命令行界面下就不用鼠标操作了。Linux主要用于服务器端运行,因此其使用方式以命令行为主,鼠标使用相对较少。为了充分利用Linux,熟悉命令行操作是必要的,因为Linux大多数程序都是运行在命令行下的…

    2026年10月5日 • 用户投稿
    200
  • 如何挂载Linux ISO镜像文件 临时挂载与自动挂载方案

    如何挂载Linux ISO镜像文件 临时挂载与自动挂载方案如何挂载Linux ISO镜像文件 临时挂载与自动挂载方案如何挂载Linux ISO镜像文件 临时挂载与自动挂载方案如何挂载Linux ISO镜像文件 临时挂载与自动挂载方案

    挂载 %ignore_a_1% iso 镜像文件的方法有两种:1. 临时挂载,适用于一次性使用,通过 sudo mount -o loop 指定 iso 文件和挂载点实现;2. 自动挂载,需编辑 /etc/fstab 文件并添加对应条目,适合长期使用;操作时需要注意权限、iso 文件完整性、挂载点权…

    2026年10月5日 • 用户投稿
    200
  • linux怎么查看文件类型

    linux怎么查看文件类型linux怎么查看文件类型linux怎么查看文件类型linux怎么查看文件类型

    linux查看文件类型的方法是:1、通过按下 `Ctrl+Alt+T` 键同时打开终端;2、使用 `cd` 命令进入到包含要查看文件的目录中;3、在终端中输入“file filename”命令并按下回车键;4、终端输出该文件的类型即可。 本教程操作系统:Linux5.18.14系统、Dell G3电…

    2026年10月5日 • 用户投稿
    100
  • linux服务器文件同步软件有哪些

    linux服务器文件同步软件有哪些linux服务器文件同步软件有哪些linux服务器文件同步软件有哪些linux服务器文件同步软件有哪些

    linux服务器文件同步软件有:1、Rsync,速度快,支持多种数据传输协议,可增量同步;2、Unison,简单易用,具备增量同步功能,能够检测并合并冲突文件,同时具备图形化界面;3、yncthing,基于P2P协议,数据传输加密,安全性高,同步速度也较快,支持多平台;4、Lsyncd,能够实时同步…

    2026年10月5日 • 用户投稿
    200
  • linux使用lv可以查看什么

    linux使用lv可以查看什么linux使用lv可以查看什么linux使用lv可以查看什么linux使用lv可以查看什么

    linux使用lv可以查看LVM卷组和逻辑卷的详细信息,“lv”命令是Linux系统下LVM的一种工具,LVM是一种磁盘管理技术,可以将多个物理磁盘抽象成为统一的逻辑存储空间,在这个逻辑存储空间上创建卷组、逻辑卷等。 本教程操作系统:Linux5.18.14系统、LVM 1.0.5版本、Dell G…

    2026年10月5日 • 用户投稿
    100
  • 安卓为什么可以运行linux

    安卓为什么可以运行linux安卓为什么可以运行linux安卓为什么可以运行linux安卓为什么可以运行linux

    安卓可以运行linux原因在于Android系统就是由Google公司把Linux内核移植到移动设备上并加以开发而成的,Linux是一种开源且免费的操作系统内核,不仅适用于PC或服务器等计算机系统,还可以移植到其他平台,如手机、嵌入式设备等。 本教程操作系统:Android 13系统、小米 2手机。…

    2026年10月5日 • 用户投稿
    100
  • linux重定向有几种方式

    linux重定向有几种方式linux重定向有几种方式linux重定向有几种方式linux重定向有几种方式

    linux重定向常见方式有:1、标准输入输出重定向,使用 ‘>’ 或 ‘>>’ 符号实现;2、标准错误重定向,使用 ‘2>’ 符号来实现;3、输入流重定向,使用 ‘<' 符号实…

    2026年10月5日 • 用户投稿
    100
  • lotus系统可以在linux下运行吗

    lotus系统可以在linux下运行吗lotus系统可以在linux下运行吗lotus系统可以在linux下运行吗lotus系统可以在linux下运行吗

    Lotus系统可以在Linux下运行,因为Lotus是一个基于Go语言构建的分布式存储系统,可以在多种操作系统平台上运行,其中包括Windows、Mac和Linux等。 本教程操作系统:Linux5.18.14系统、Lotus 1.11.0版本、Dell G3电脑。 Lotus系统可以在Linux下…

    2026年10月5日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信