1. 了解sudo的作用

日常操作中为了避免一些误操作,更加安全的管理系统,我们一般使用普通用户登录系统,而非root。当需要执行一些管理员命令操作时,再切换成root用户身份去执行。

普通用户切换到root用户的方式有:su和sudo。

sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

sudo是一种权限管理机制,管理员可以授权于一些普通用户去执行一些root执行的操作,而不需要知道root的密码,它依赖于/etc/sudoers这个文件,可以授权于那个用户在那个主机上能够以管理员的身份执行什么样的管理命令,而且是有限的。这个文件相当于就是一个授权表。

Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

使用权限:在 /etc/sudoers 中有出现的使用者。

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

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

2. 配置sudo用户

修改sudo的配置文件,使zcwyou用户也可以通过sudo调用root权限。让用户zcwyou可以通过sudo执行所有root可执行的命令。

以root身份用visudo打开配置文件

[zcwyou@zcwyou ~]$ visudo

可以看到类似下面几行:

# Runas alias specification

# User privilege specificationroot ALL=(ALL)ALL

加入一行,针对zcwyou用户:

zcwyou ALL=(ALL) ALL

保存退出

root root用户

ALL 所有的主机上都可以

(ALL) 是以谁的身份来执行,ALL就代表root可以任何人的身份来执行命令

ALL 所有的命令,也可以限制只能执行某些指令。

验证:

切换到zcwyou用户,我们用它的身份执行命令:

[zcwyou@zcwyou ~]$ su - zcwyou

[zcwyou@zcwyou ~]$ ls /root

ls: /root: 权限不够

[zcwyou@zcwyou ~]$ sudo ls /root

PassWord:

anaconda-ks.cfg Desktop install.log install.log.syslog

3. 限制sudo用户的权限

只让zcwyou像root那样使用ls和ifconfig

[zcwyou@zcwyou ~]$ visudo

修改为以下内容:

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

再来执行命令:

[zcwyou@zcwyou ~]$ sudo head -5 /etc/shadow

Password:

Sorry, user zcwyou is not allowed to execute ‘/usr/bin/head -5 /etc/shadow’ as root on localhost.localdomain.

提示没有权限,证明设置成功。

[zcwyou@zcwyou ~]$ sudo /sbin/ifconfig eth0

ifconfig可正常使用。

4. 借用其他用户身份

例如,我们想让zcwyou用户在linux主机上以user1或user2的身份执行date命令,这样编写配置文件:

zcwyou linux=(user1,user2) /usr/bin/date

那么,zcwyou到底以user1还是user2的身份执行?需要把user1或user2设为默认的目标用户即可。比如,再加一行,以user1为默认用户:

Defaults:zcwyou runas_default=user1

当然,我们可以使用sudo -u user1 date或者sudo -u user2 date灵活切换用户。但这样比较麻烦。

再来看一条里面的规则:

%users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

user321 192.168.100.0/24=(root) /usr/sbin/useradd

%users 就是代表users这个组里面的所有成员

ALL 代表可以这所有的主机上

= 后面没有括号,也就是代表默认是以root身份

/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom 可以执行挂载的命令

用户是user321

5. 查看用户可以执行的命令

已经授权的普通用户可以使用命令:

[zcwyou@zcwyou ~]$ sudo -l

显示可以执行那些命令

要执行命令要在执行命令之前加上 sudo ,然后输入用户自己的密码,这是因为要验证,执行命令的用户确实是该用户。

sudo命令还有这个机制,就是在你正确输入密码并成功执行命令的5分钟内,再执行命令是不需要输入密码的,过了5分钟,就需要再次验证该用户的自己的密码,当然也可以手动让该期限过期,请看最后的sudo语法。

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

Defaults env_reset

6. sudo免密码:

默认情况下,每次使用sudo都要求输入密码(相隔大于5分钟),通过修改配置免密。针对用户user123设置

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

7. sudo选项说明

-V 显示版本编号

-h 会显示版本编号及指令的使用方式说明

-l 显示出自己(执行 sudo 的使用者)的权限

-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码

-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)

-b 将要执行的指令放在背景执行

-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称

-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)

-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell

-H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )

command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令

-b 在后台执行指令。

-h 显示帮助。

-H 将HOME环境变量设为新身份的HOME环境变量。

-k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。

-l 列出目前用户可执行与无法执行的指令。

-p 改变询问密码的提示符号。

-s 执行指定的shell。

-u 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。

-v 延长密码有效期限5分钟。

-V 显示版本信息。

-S 从标准输入流替代终端来获取密码

linux用root权限执行命令,Linux root权限获取之sudo命令详解相关推荐

  1. linux上连接ftp服务器,linux下lftp连接ftp服务器进行上传与下载的方法详解

    摘要 腾兴网为您分享:linux下lftp连接ftp服务器进行上传与下载的方法详解,中英翻译,中建在线,掌上看家,银行帮等软件知识,以及微信一键转发工具,小学英语冀教版,正是在下表情包,易问电信,万能 ...

  2. linux内核移植与开发板,Linux 2.6.36内核移植飞凌OK6410开发板完整步骤详解

    Linux 2.6.36内核移植飞凌OK6410开发板完整步骤详解 [复制链接] 今天终于让Linux内核在飞凌的板子上跑起来了,想来也是艰辛,为了移植成功,断断续续做了将近两个月的努力,期间郁闷不可 ...

  3. SpringSecurity权限管理框架系列(六)-Spring Security框架自定义配置类详解(二)之authorizeRequests配置详解

    1.预置演示环境 这个演示环境继续沿用 SpringSecurit权限管理框架系列(五)-Spring Security框架自定义配置类详解(一)之formLogin配置详解的环境. 2.自定义配置类 ...

  4. Linux 命令(17)—— su 与 sudo 命令

    1.su 命令 1.1 命令简介 su 用于临时切换身份到另一个指定的用户,未指定用户名默认为 root.使用 su 切换用户身份后,默认情况下不改变当前工作目录,但会改变 HOME.SHELL.US ...

  5. linux命令sudu,Linux命令 sudo用法详解

    sudo 命令用来以其他身份来执行命令,Linux系统下的sudo命令主要是用来分配系统的权限,使用sudo命令可以提高普通用户的权限,来执行一些操作.预设的身份为root.在/etc/sudoers ...

  6. Linux Vim三种工作模式(命令模式、输入模式和编辑模式)详解

    通过前面的学习我们知道,Linux 系统中所有的内容都以文件的形式进行存储,当在命令行下更改文件内容时,常会用到文本编辑器. 我们首选的文本编辑器是 Vim(至于为什么,可查看<Vi和Vim的区 ...

  7. 【Linux】一步一步学Linux——sudo配置文件详解(106)

    00. 目录 文章目录 00. 目录 01. sudo的配置文件 02. sudo命令别名规则 03. sudo命令授权规则 04. 实战演练 05. 附录 01. sudo的配置文件 sudo默认配 ...

  8. Linux内核 eBPF基础:perf(4)perf_event_open系统调用与用户手册详解

    Linux内核 eBPF基础 perf(4)perf_event_open系统调用与用户手册详解 荣涛 2021年5月19日 本文相关注释代码:https://github.com/Rtoax/lin ...

  9. [Samba] Linux(Centos)samba服务安装,Samba文件共享及Samba配置详解

    本片博客主要介绍了[Samba] Linux(Centos)samba文服务器安装案例,samba共享,samba服务,samba配置详解及网页配置samba工具samba-swat 的使用方法等. ...

最新文章

  1. Node.js + Express 4.x + MongoDB 构建登录注册-简易用户管理(四)
  2. IOS响应式编程框架ReactiveCocoa(RAC)使用示例
  3. Java客户端操作elasticsearch--添加文档
  4. Python 多进程pool.map()方法的使用
  5. C++STL的vector中front(),back(),begin(),end()的用法
  6. python数据结构中文版_Python官方入门教程_中文版_5.数据结构
  7. 第十四周学习进度报告
  8. python数组去重函数_Python科学计算库Numpy之 数组操作
  9. sql数据库查询聚合函数_如何使用SQL Server数据质量服务确保正确的数据聚合
  10. Gephi教程【1】安装
  11. 常用元器件使用方法3:电平转换芯片74LVC1T45的使用方法
  12. java oracle sqlldr,oracle sqlldr
  13. java io 和nio_java对比IO和NIO的文件读写性能测试
  14. 知道吗?借助InterSystems Caché数据库,欧洲航天局正在绘制银河系最大的地图
  15. 判断一个数是否是素数
  16. ubuntu更改网卡设置等出现输入default keyring密码的解决方法
  17. manjaro 更新失败
  18. 2022年第一季度保险服务数字化跟踪分析
  19. 如何通过两步验证来保护您的Apple ID
  20. 外包怎么了?请不要“妖魔化”它。

热门文章

  1. 在 Excel 中创建强大图表的三个技巧
  2. “404x5”年Java技术报告
  3. 微信小程序-仿今日头条客户端
  4. Java实现MD5加密、验证
  5. Spring?Spring?Spring到底是啥?
  6. 《图神经网络综述》Graph Neural Networks: A Review of Methods and Applications
  7. [译] 苹果公司如何弯道超车颠覆传统瑞士制表业
  8. mysql索引怎么设计,MySQL如何设计索引
  9. dnf加物理攻击的卡片有哪些_dnf加物理攻击力的宝珠有哪些
  10. 关于mysql数据库索引 说法正确的是_关于MySQL索引 ,下面说法正确的是()(1)B+...