解决docker镜像(centos系统)中无sudo命令问题

 更新时间:2023年11月13日 10:15:05   作者:江畔独步  
这篇文章主要介绍了解决docker镜像(centos系统)中无sudo命令问题,具有很好的参考价值,希望对大家有所帮助,

问题

最新在协助同事在docker中安装app时,提供的container使用了centos基础镜像(某些功能阉割版):

[root@server111-111 admin]# docker images
REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos                  latest              75835a67d134        6 months ago        200 MB

经检查发现普通用户需要执行一些yum 安装命令,提示权限不足,如下:

[Errno 13] Permission denied: ‘/var/lib/rpm/__db.002’
You need to be root to perform this command.

解决方案步骤

1. 查看docker container os版本

给docker容器安装lsb_release后,检查centos版本如下:

yum -y install net-tools vim redhat-release
[root@container /]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.5.1804 (Core)
Release: 7.5.1804
Codename: Core

原生centos、ubuntu中提升普通用户为root权限,自然能想到是通过sudo方式,然而输入sudo却报命令不存在,看来docker中官方centos镜像已是精简到不能在精简的核心基础OS。

2. 安装sudo服务

安装sudo服务:

yum -y install sudo

3. sudoers list中添加普通用户

添加普通用户到sudoers列表中:

切换到root下:

Step ①、为/etc/sudoers文件增加写权限(原为440)

chmod 640 /etc/sudoers

Step ②、添加用户到sudoers list中(最后一行),同时修改属性:

vim /etc/sudoers 或使用 visudo命令修改:

## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL

## Allows members of the 'sys' group to run networking, software, 
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
%docker_backuper    ALL=(ALL)    NOPASSWD: ALL

Step ③、/etc/sudoers文件改回原权限(440)

chmod 440 /etc/sudoers

4. 校验

功能可行性检查:

在普通用户docker_backuper下,执行

sudo su

命令,看能否切换回root。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker镜像压缩与优化操作

    Docker镜像压缩与优化操作

    这篇文章主要介绍了Docker镜像压缩与优化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker打包自定义镜像的实现

    Docker打包自定义镜像的实现

    本文主要介绍了在Docker中打包自定义镜像,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • 使用Docker安装phabricator的配置和使用方法

    使用Docker安装phabricator的配置和使用方法

    今天小编就为大家分享一篇关于使用Docker安装phabricator的配置和使用方法的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • docker与firewalld冲突问题及解决过程

    docker与firewalld冲突问题及解决过程

    文章指出firewalld与Docker竞争iptables转发链规则,导致互相覆盖,解决方案一是先重启firewalld再重启Docker;二是针对Docker 20.10.0以上版本,将docker0接口移至docker区域以避免冲突
    2025-09-09
  • Docker容器/bin/bash start.sh无法找到not found问题解决

    Docker容器/bin/bash start.sh无法找到not found问题解决

    最近在学习联系中遇到一个问题,百度后发现这个需求还是挺常见的,所以下面这篇文章主要给大家介绍了关于Docker容器/bin/bash start.sh无法找到not found问题的解决方法,需要的朋友可以参考下
    2022-08-08
  • 如何搭建配置Docker私有仓库的实现步骤

    如何搭建配置Docker私有仓库的实现步骤

    本文主要介绍了如何搭建配置Docker私有仓库的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Docker部署MySQL镜像的保姆级教程

    Docker部署MySQL镜像的保姆级教程

    docker是一种容器化技术,可以将应用程序及其依赖项打包成一个独立的可移植容器,mysql是一个流行的关系型数据库管理系统,在Docker中部署MySQL镜像可以方便地创建和管理MySQL数据库实例,本文给大家介绍了Docker部署MySQL镜像的教程,需要的朋友可以参考下
    2025-06-06
  • Docker如何使用OpenvSwitch网桥

    Docker如何使用OpenvSwitch网桥

    本篇文章主要介绍了Docker如何使用OpenvSwitch网桥,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • docker Desktop安装WSL --update报错问题成功解决办法

    docker Desktop安装WSL --update报错问题成功解决办法

    这篇文章主要介绍了如何在Windows 11上设置WSL2为默认版本,解决WSL2安装和卸载过程中遇到的问题,包括强制中断命令、wsl--uninstall命令无效以及手动删除Linux发行版的方法,需要的朋友可以参考下
    2025-02-02
  • Docker入门安装教程(小白篇)

    Docker入门安装教程(小白篇)

    这篇文章主要介绍了Docker入门安装教程(小白篇),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01

最新评论