前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux: sudo小技能

Linux: sudo小技能

原创
作者头像
码代码的陈同学
发布2018-05-30 12:46:15
6.3K3
发布2018-05-30 12:46:15
举报
文章被收录于专栏:码代码的陈同学

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

背景:购买云服务器后服务商不会提供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为例:

代码语言:txt
复制
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 即可

代码语言:txt
复制
ubuntu  ALL=(ALL:ALL) NOPASSWD: ALL

如何cd到没有权限的目录

演示两条命令:

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

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

代码语言:txt
复制
ubuntu@ubuntu:~$ sudo -s
root@ubuntu:~# cd /root # 使用exit命令退出当前会话

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

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

代码语言:txt
复制
sudo su - jenkins # sudo 和 su 结合使用

拓展阅读

su 和 su - 有什么区别

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

代码语言:txt
复制
su ubuntu	# 切换用户后保持当前用户环境,即保持root用户环境
su - ubuntu # 提供一个和目标用户即ubuntu用户相似的环境

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • sudo简介
  • 使用场景
  • 小技能
    • 如何处理command not found
      • 如何设置sudo免输密码
        • 如何cd到没有权限的目录
          • 如何切换到没有密码的用户
          • 拓展阅读
            • su 和 su - 有什么区别
            相关产品与服务
            云服务器
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档