• 【Linux operation 41】配置普通用户无需sudo使用docker命令


    1、创建新用户

    创建一个用户名为:test

    [root@localhost /]# useradd test
    
    • 1

    为这个用户初始化密码,linux会判断密码复杂度,不过可以强行忽略:

    [root@localhost /]# passwd test
    Changing password for user test.
    New password: 
    BAD PASSWORD: The password is shorter than 8 characters
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2、授权

    个人用户的权限只可以在本home下有完整权限,其他目录要看别人授权。而经常需要root用户的权限,这时候sudo可以化身为root来操作。我记得我曾经sudo创建了文件,然后发现自己并没有读写权限,因为查看权限是root创建的。

    新创建的用户并不能使用sudo命令,需要给他添加授权。

    sudo命令的授权管理是在sudoers文件里的。可以看看sudoers:

    [root@localhost /]# sudoers
    -bash: sudoers: command not found
    [root@localhost /]# whereis sudoers
    sudoers: /etc/sudoers /etc/sudoers.d /usr/share/man/man5/sudoers.5.gz
    
    • 1
    • 2
    • 3
    • 4

    找到这个文件位置之后再查看权限:

    [root@localhost /]# ls -l /etc/sudoers
    -r--r-----. 1 root root 4328 Sep 30  2020 /etc/sudoers
    
    • 1
    • 2

    是的,只有只读的权限,如果想要修改的话,需要先添加w权限:

    [root@localhost /]# chmod -v u+w /etc/sudoers
    mode of ‘/etc/sudoers’ changed from 0440 (r--r-----) to 0640 (rw-r-----)
    
    • 1
    • 2

    然后就可以添加内容了,在下面的一行下追加新增的用户:

    [root@localhost ~]# vim /etc/sudoers
    
    • 1
    ## Allow root to run any commands anywhere 
    root    ALL=(ALL)       ALL
    test   ALL=(ALL)   ALL   #这个是新增的用户
    
    • 1
    • 2
    • 3

    wq保存退出,这时候要记得将写权限收回:

    [root@localhost /]# chmod -v u-w /etc/sudoers
    mode of ‘/etc/sudoers’ changed from 0640 (rw-r-----) to 0440 (r--r-----)
    [root@localhost /]# ls -l /etc/sudoers
    -r--r-----. 1 root root 4349 Jul 29 17:06 /etc/sudoers
    
    • 1
    • 2
    • 3
    • 4

    这时候使用新用户登录,使用sudo:

    [root@localhost /]#  cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    test:x:1000:1000::/home/test:/bin/bash
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    [test@localhost /]$ sudo cat /etc/passwd
    [sudo] password for test: 
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    test:x:1000:1000::/home/test:/bin/bash
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    3、新安装docker后无法普通用户无法使用docker命令

    原因分析:
    docker进程的socket用户试用了root.root属主和属组,导致需要sudo才可以链接服务端socket

    [test@localhost /]$ sudo ls -l /var/run/docker.sock
    srw-rw----. 1 root root 0 Jul 29 16:30 /var/run/docker.sock
    
    • 1
    • 2

    4、配置无需sudo

    #此时直接执行docker xxx命令会报以下错误:

    [test@localhost system]$ docker images
    Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json: dial unix /var/run/docker.sock: connect: permission denied
    
    • 1
    • 2

    执行sudo docker xxx命令,会提示输入当前账号密码,然后可以成功:
    每次执行docker命令都要输入密码不方便,并且在IDEA中无法启动docker,也么有找到可以sudo的地方;
    #检测是否有docker组

    [root@localhost /]# grep docker /etc/group
    
    • 1

    #没有就添加,创建名为docker的组

    [test@localhost /]$ sudo groupadd docker
    
    • 1

    #再次检测是否有docker组

    [test@localhost /]$ grep docker /etc/group
    docker:x:1001:
    
    • 1
    • 2

    #将当前用户添加至docker组

    [test@localhost /]$ sudo usermod -aG docker test
    
    • 1

    #重启docker服务:

    sudo systemctl restart docker
    
    • 1

    #添加访问和执行权限:

    [test@localhost system]$ sudo chmod a+rw /var/run/docker.sock
    [sudo] password for test: 
    
    • 1
    • 2

    #操作完毕,验证一下,现在可以不用带sudo了:

    [test@localhost system]$ docker images
    REPOSITORY                  TAG       IMAGE ID       CREATED         SIZE
    vertiv/phoenix_frontend     latest    379986ffeb87   2 months ago    413MB
    vertiv/phoenix_backend      latest    0d09d16536d7   2 months ago    310MB
    lsassiteweb                 latest    9913a8de3bd3   2 months ago    696MB
    sitewebwinservicehost       latest    f3b9f2a5ce6f   2 months ago    192MB
    influxdb                    2.2       6d3691d1aa45   2 months ago    341MB
    datahub                     latest    f1524d3a16e6   2 months ago    352MB
    vertiv/phoenix_indicators   latest    0efad158bd20   2 months ago    171MB
    zookeeper                   latest    fd9ec0e72783   4 months ago    278MB
    wurstmeister/kafka          latest    2dd91ce2efe1   7 months ago    508MB
    vertiv/redisbash            latest    ce47d4a0a382   8 months ago    110MB
    vertiv/robin-m              latest    7eef79eaf226   9 months ago    179MB
    mysql                       8.0.22    d4c3cafb11d5   18 months ago   545MB
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    参考:

    Add the docker group if it doesn’t already exist
    sudo groupadd docker
    
    Add the connected user $USER to the docker group
    Optionally change the username to match your preferred user.
    sudo gpasswd -a $USER docker
    IMPORTANT: Log out and log back in so that your group membership is re-evaluated.
    
    Restart the docker daemon
    sudo service docker restart
    If you are on Ubuntu 14.04-15.10, use docker.io instead:
    sudo service docker.io restart
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    ubuntu 22.04 深度学习环境配置
    函数式接口 ( Java 8新特性 )
    Tailwind CSS功能类优先
    ue4c++【基础知识】
    spring boot 中使用minio
    复盘:手推SVM支持向量机二分类超平面,求解目标函数原问题,kkt条件,对偶问题求q,核函数、hinge loss损失函数,硬间隔,软间隔,最后得到w和b
    【Vue3 Antdv】Ant Design Vue文字溢出鼠标滑上显示tooltip。不溢出,鼠标滑上不显示tooltip
    案例丨低代码快速开发平台在信息安全企业里的应用
    【用unity实现100个游戏之9】使用Unity制作类八方旅人、饥荒风格的俯视角2.5D游戏
    关于元宇宙的六七八你知道多少?
  • 原文地址:https://blog.csdn.net/qq_22938603/article/details/126059855