• 【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
  • 相关阅读:
    Gitlab合并代码并解决冲突演示
    vue框架的基础语法之方法和事件的绑定,样式绑定,循环渲染,条件渲染
    【LeetCode】第 387 场周赛
    (附源码)springboot超市仓库管理系统 毕业设计164555
    JavaCTF记录
    使用卷积神经网络训练手写数字识别模型(CNN)
    PlacementTools...
    基于python编写的excel表格数据标记的exe文件
    个人秋招面经——百度
    传输层-TCP 的安全机制和高效策略
  • 原文地址:https://blog.csdn.net/qq_22938603/article/details/126059855