原创

Linux: sudo小技能

阅读陈同学 博客原文,格式更佳

背景:购买云服务器后服务商不会提供root账户,但很多操作需root权限。本文介绍几个sudo常用小技能,以下介绍均基于Ubuntu 16.04 x64。

sudo简介

sudo 允许一个权限受限用户在指定的安全策略下以root用户或其它用户执行一条命令(不需要知道root用户密码也不需要切换到root用户)。出于安全考虑,当你以sudo执行命令时,系统会为你创建一个全新的会话,这个环境中一些配置会被初始为默认值,例如PATH环境变量会被重置。

  • sudo并非全能,不能执行所有命令,例如:cd
  • sudo配置文件 /etc/sudoers需以 visudo 编辑以确保编辑之后文件格式正确
  • 安全策略可以在 /etc/sudoers中配置

使用场景

没有root用户,但需要以root权限执行某些命令。例如:安装程序、查看没有权限的目录等。

小技能

如何处理command not found

场景:假如你使用ubuntu用户安装了maven,但是用sudo执行mvn命令时却报 command not found

原因:参考本文sudo简介,sudo执行时所有环境变量已重置为默认值

解决:修改sudo会话初始值。

修改 /etc/sudoers 中的 Defaults secure_path 值,将你的配置加进去即可,当初始化sudo会话时会读取该配置作为PATH变量。此处以maven为例:

Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/apache-maven-3.3.9/bin"

如何设置sudo免输密码

对于运维人员,经常使用sudo,每次输入密码非常繁琐,可以通过以下配置解决。

以下为 ubuntu用户在/etc/sudoers中的免密设置,设置 NOPASSWD 即可

ubuntu  ALL=(ALL:ALL) NOPASSWD: ALL

如何cd到没有权限的目录

演示两条命令:

cd /root 		# 会报:-bash: cd: /root: Permission denied
sudo cd /root 	# 会报:sudo: cd: command not found, 原因:sudo仅对应用程序有用,cd是linux内置命令

你可以用 sudo -s 切换到root用户,并保留当前用户环境信息。此时就可以用root用户查看没有权限的目录了。

ubuntu@ubuntu:~$ sudo -s
root@ubuntu:~# cd /root # 使用exit命令退出当前会话

如何切换到没有密码的用户

在安装一些应用后(如jenkins/mysql等),应用会创建自己的用户来管理其数据,但我们并不知道这些用户的密码。在没有root用户时,可以用以下方式切换到这些用户:

sudo su - jenkins # sudo 和 su 结合使用

拓展阅读

su 和 su - 有什么区别

假设用root用户执行以下命令:

su ubuntu	# 切换用户后保持当前用户环境,即保持root用户环境
su - ubuntu # 提供一个和目标用户即ubuntu用户相似的环境

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring Cloud 源码学习之 Hystrix 入门

    Hystrix 译为 "豪猪",豪猪以棘刺闻名,集肉用、药用、欣赏价值于一体。刺猬的小短刺和豪猪长矛比起来,根本不在同一个level。超市中70块一斤的猪肉指不...

    码代码的陈同学
  • Java中的类加载器

    Class loaders属于JRE的一部分,负责在运行时将Java类动态加载到JVM。得益于class loaders,JVM在无需知晓底层文件或文件系统时就...

    码代码的陈同学
  • jstack是如何获取threaddump的?

    JDK提供了许多命令行工具用于监视JVM,让我们可以了解其异常堆栈、GC日志、threaddump、heapdump等信息。一时好奇,想看看jstack是如何实...

    码代码的陈同学
  • 高阶干货|如何用gperftools分析深度学习框架的内存泄漏问题

    本系列为高阶干货,面向深度学习从业者,栏目会定期分享PaddlePaddle研发工程师和产品经理的行业经验。本篇和内存泄漏分析相关,适合中高阶深度学习工程师仔细...

    用户1386409
  • CentOS7.4中Docker以rw方式挂载volume报Permission denied的解决思路

    版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

    耕耘实录
  • 8 比对及找变异步骤的质控

    完成后会生成SRR8517856_bqsr_stats类似的文件夹 现在建立一个qualimap文件夹,把上面这种文件夹都移动到里面

    Y大宽
  • Linux设置本地yum源

    linux系统:CentOS-6.7 系统镜像:CentOS-6.7-x86_64-bin-DVD1.iso、CentOS-6.7-x86_64-bin-DV...

    CoderJed
  • 第3阶段——内核启动分析之prepare_namespace()如何挂载根文件系统和mtd分区介绍(6)

    内核启动并初始化后,最终目的是像Windows一样能启动应用程序,在windows中每个应用程序都存在C盘、D盘等,而linux中每个应用程序是存放在根文件系统...

    张诺谦
  • Linux堡垒机Jumpserver安装

    Jumpserver是一款由python编写, Django开发的开源跳板机/堡垒机系统, 助力互联网企业高效 用户、资产、权限、审计 管理。jumpserve...

    菲宇
  • 第十章:Shiro的Cache——深入浅出学Shiro细粒度权限开发框架

    Shiro开发团队明白在许多应用程序中性能是至关重要的。Caching 是Shiro 中的一个重要功能,以确保安全操作保持尽可能的快。

    MonroeCode

扫码关注云+社区

领取腾讯云代金券