解決docker鏡像(centos系統(tǒng))中無sudo命令問題
問題
最新在協(xié)助同事在docker中安裝app時,提供的container使用了centos基礎(chǔ)鏡像(某些功能閹割版):
[root@server111-111 admin]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/centos latest 75835a67d134 6 months ago 200 MB
經(jīng)檢查發(fā)現(xiàn)普通用戶需要執(zhí)行一些yum 安裝命令,提示權(quán)限不足,如下:
[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權(quán)限,自然能想到是通過sudo方式,然而輸入sudo卻報命令不存在,看來docker中官方centos鏡像已是精簡到不能在精簡的核心基礎(chǔ)OS。
2. 安裝sudo服務(wù)
安裝sudo服務(wù):
yum -y install sudo
3. sudoers list中添加普通用戶
添加普通用戶到sudoers列表中:
切換到root下:
Step ①、為/etc/sudoers文件增加寫權(quán)限(原為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文件改回原權(quán)限(440)
chmod 440 /etc/sudoers
4. 校驗
功能可行性檢查:
在普通用戶docker_backuper下,執(zhí)行
sudo su
命令,看能否切換回root。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談docker --privileged=true參數(shù)作用
這篇文章主要介紹了淺談docker --privileged=true參數(shù)作用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12