精华内容
下载资源
问答
  • 通常我们在Android应用中执行某个命令时会使用...”这种方式,但是当我们执行抓包操作时,使用这条命令无论如何都不行,通过下面代码打印结果发现,该命令一定要在root权限下才能执行,具体实现思路,请参考本教程
  • centos 非root安装nginx

    2019-01-28 15:48:59
    非root下,离线安装nginx依赖加nginx安装包,需要先装gcc-c++
  • NULL 博文链接:https://listen-raining.iteye.com/blog/2316558
  • 非root用户的服务器安装两个不同版本的jdk,且安装指定jdk版本的tomcat。
  • docker基础:使用非root用户操作docker

    千次阅读 2019-03-18 23:19:35
    这篇文章用于介绍使用非root用户操作docker。根据企业的安全策略,有一些情况下无法获取root用户的直接使用方式,通过docker或者sudo的方式使用docker变成了这种情况下的选择之一。

    这篇文章用于介绍使用非root用户操作docker。

    场景

    根据企业的安全策略,有一些情况下无法获取root用户的直接使用方式,通过docker或者sudo的方式使用docker变成了这种情况下的选择之一。

    参考内容

    根据参考文章中的docker的官方内容,有如下信息说明。

    Manage Docker as a non-root user
    The Docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The Docker daemon always runs as the root user.
    
    If you don’t want to preface the docker command with sudo, create a Unix group called docker and add users to it. When the Docker daemon starts, it creates a Unix socket accessible by members of the docker group.
    

    从上述信息可以清楚地看到,关于如何使用非root用户对docker进行管理,由于Docker的守护进程会绑定Unix Socket而不是使用TCP端口方式,而缺省情况下Unix socket为root用户所有,其他用户只能通过sudo来进行访问,所以Docker的守护进程只能以root用户进行启动。
    如果不希望在docker命令前面添加sudo进行执行,这时可以创建一个名为docker的Unix Group并向这个Group中添加用户,当Docker守护进程启动的时候,守护进程会创建一个Unix Socket文件,而docker这个group的成员对于该文件具有访问权限。

    场景1:使用sudo方式操作docker

    以用户appman为示例,来说明一下如何使用sudo方式操作docker。

    • 事前确认信息如下:不存在/var/lib/docker目录和appman用户
    [root@host118 ~]# ls -ld /var/lib/docker
    ls: cannot access /var/lib/docker: No such file or directory
    [root@host118 ~]# id appman
    id: appman: no such user
    [root@host118 ~]# 
    

    Step 1: 创建appman用户和group

    如下创建该appman用户和group并初始化用户密码

    [root@host118 ~]# useradd appman
    [root@host118 ~]# id appman
    uid=1003(appman) gid=1003(appman) groups=1003(appman)
    [root@host118 ~]# passwd appman
    Changing password for user appman.
    New password: 
    BAD PASSWORD: The password is shorter than 7 characters
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    [root@host118 ~]# 
    

    Step 2: 添加appman的sudo用户权限

    修改/etcsudoers文件,添加如下信息

    appman  ALL=(ALL)       ALL
    

    Step 3: 使用sudo命令操作docker

    切换到sudo用户appman,通过添加sudo前缀操作docker

    [appman@host118 ~]$ id
    uid=1003(appman) gid=1003(appman) groups=1003(appman) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    [appman@host118 ~]$ 
    
    • 启动docker
    [appman@host118 ~]$ sudo systemctl restart docker
    [sudo] password for appman: 
    [appman@host118 ~]$
    
    • 确认启动状态
    [appman@host118 ~]$ sudo docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [appman@host118 ~]$ sudo docker version
    Client:
     Version:      1.13.1
     API version:  1.26
     Go version:   go1.7.5
     Git commit:   092cba3
     Built:        Wed Feb  8 08:47:51 2017
     OS/Arch:      linux/amd64
    
    Server:
     Version:      1.13.1
     API version:  1.26 (minimum version 1.12)
     Go version:   go1.7.5
     Git commit:   092cba3
     Built:        Wed Feb  8 08:47:51 2017
     OS/Arch:      linux/amd64
     Experimental: false
    [appman@host118 ~]$ 
    

    而如果不加sudo,则会提示错误

    [appman@host118 ~]$ docker ps
    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.26/containers/json: dial unix /var/run/docker.sock: connect: permission denied
    [appman@host118 ~]$
    

    继续确认文件权限,会发现此种方式和直接使用docker没有区别,因为毕竟sudo就是切换到root用户而已。

    [appman@host118 ~]$ ls -l /var/run/docker.sock
    srw-rw----. 1 root root 0 Mar 12 08:39 /var/run/docker.sock
    [appman@host118 ~]$ ls -l /var/lib/docker
    ls: cannot open directory /var/lib/docker: Permission denied
    [appman@host118 ~]$ sudo ls -l /var/lib/docker
    total 0
    drwx------. 2 root root  6 Mar 12 08:39 containers
    drwx------. 3 root root 21 Mar 12 08:39 image
    drwxr-x---. 3 root root 19 Mar 12 08:39 network
    drwx------. 2 root root  6 Mar 12 08:39 overlay
    drwx------. 4 root root 32 Mar 12 08:39 plugins
    drwx------. 2 root root  6 Mar 12 08:39 swarm
    drwx------. 2 root root  6 Mar 12 08:39 tmp
    drwx------. 2 root root  6 Mar 12 08:39 trust
    drwx------. 2 root root 25 Mar 12 08:39 volumes
    [appman@host118 ~]$ sudo ls -ld /var/lib/docker
    drwx--x--x. 11 root root 134 Mar 12 08:39 /var/lib/docker
    [appman@host118 ~]$ 
    

    场景2: 使用非root用户管理docker但是不希望直接使用sudo执行操作

    事前准备:停止docker,并删除docker的缺省数据目录/var/lib/docker

    [root@host118 ~]# systemctl stop docker
    [root@host118 ~]# rm -rf /var/lib/docker
    [root@host118 ~]# 
    

    事前准备:删除appman的sudo权限

    [root@host118 ~]# vi /etc/sudoers
    [root@host118 ~]# grep appman /etc/sudoers
    [root@host118 ~]# 
    

    可以看到appman没有了sudo权限

    [appman@host118 ~]$ sudo ls
    [sudo] password for appman: 
    appman is not in the sudoers file.  This incident will be reported.
    [appman@host118 ~]$ 
    

    Step 1: 添加group并设定用户

    [appman@host118 ~]$ id
    uid=1003(appman) gid=1003(appman) groups=1003(appman) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    [appman@host118 ~]$ sudo groupadd docker
    [appman@host118 ~]$ sudo gpasswd -a ${USER} docker
    Adding user appman to group docker
    [appman@host118 ~]$ groups
    appman
    [appman@host118 ~]$ newgrp docker
    [appman@host118 ~]$ groups
    docker appman
    [appman@host118 ~]$
    

    Step2: 启动docker

    启动docker,并确认结果

    [appman@host118 ~]$ systemctl restart docker
    ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
    Authentication is required to manage system services or units.
    Authenticating as: root
    Password: 
    ==== AUTHENTICATION COMPLETE ===
    [appman@host118 ~]$
    
    • 进行启动后的docker数据目录确认
    [appman@host118 ~]$ ls -l /var/lib/docker
    ls: cannot open directory /var/lib/docker: Permission denied
    [appman@host118 ~]$ sudo ls -l /var/lib/docker
    total 0
    drwx------. 2 root root  6 Mar 12 08:52 containers
    drwx------. 3 root root 21 Mar 12 08:52 image
    drwxr-x---. 3 root root 19 Mar 12 08:52 network
    drwx------. 2 root root  6 Mar 12 08:52 overlay
    drwx------. 4 root root 32 Mar 12 08:52 plugins
    drwx------. 2 root root  6 Mar 12 08:52 swarm
    drwx------. 2 root root  6 Mar 12 08:52 tmp
    drwx------. 2 root root  6 Mar 12 08:52 trust
    drwx------. 2 root root 25 Mar 12 08:52 volumes
    [appman@host118 ~]$ sudo ls -ld /var/lib/docker
    drwx--x--x. 11 root root 134 Mar 12 08:52 /var/lib/docker
    [appman@host118 ~]$
    

    Step 3: 确认其他命令和docker.sock文件

    确认docker.sock文件,发现docker在其group设定中,这一点也和官方说明一致。而执行其他命令,也无需再加前缀sudo即可

    [appman@host118 ~]$ docker version
    Client:
     Version:      1.13.1
     API version:  1.26
     Go version:   go1.7.5
     Git commit:   092cba3
     Built:        Wed Feb  8 08:47:51 2017
     OS/Arch:      linux/amd64
    
    Server:
     Version:      1.13.1
     API version:  1.26 (minimum version 1.12)
     Go version:   go1.7.5
     Git commit:   092cba3
     Built:        Wed Feb  8 08:47:51 2017
     OS/Arch:      linux/amd64
     Experimental: false
    [appman@host118 ~]$ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [appman@host118 ~]$ 
    

    参考文章

    https://docs.docker.com/install/linux/linux-postinstall/

    展开全文
  • 如何以非root用户运行Docker容器

    千次阅读 2020-04-07 07:16:16
    原文发表于kubernetes中文社区,为作者原创 原文地址 需要用root用户运行Docker? 组织中,经常以Root用户...实际上,如果以root用户运行容器内部的进程,就是以root用户身份运行主机的进程。这就为那些恶意访问主...

    原文发表于kubernetes中文社区,为作者原创 原文地址

    需要用root用户运行Docker?

    组织中,经常以Root用户运行Docker中的容器。但是你的工作负载真的需要root权限吗?显然很少。尽管如此,默认情况下,你的容器仍将以root用户身份运行。但这可能会带来严重的安全问题。实际上,如果以root用户运行容器内部的进程,就是以root用户身份运行主机的进程。这就为那些恶意访问主机的攻击者,提供了机会。

    只需在常用的任何镜像上使用以下命令,你就可以自己查看它使用的用户身份,

    $ kubectl run -i --tty hello-world --image=hello-world --restart=Never -- sh
    # ps aux
    PID   USER     TIME  COMMAND
      1   root     0:10  sh
    

    显然,作为最佳实践,我们应该避免以超级用户身份运行容器。因此,让我们看看如何以非root用户身份运行容器。

    将非root用户添加到Dockerfile

    你可以在Dockerfile中使用RUN命令创建用户,这个用户仅具有容器内工作负载所需的权限。

    RUN groupadd --gid 5000 newuser \
        && useradd --home-dir /home/newuser --create-home --uid 5000 \
            --gid 5000 --shell /bin/sh --skel /dev/null newuser
    

    上面的命令行创建了一个用户newuser, 并指定了用户登录后使用的主目录和shell 。如下所示,将用户添加到你的Dockerfile中:

    FROM ubuntu:18.04
    COPY . /myapp
    RUN make /myapp
    ...
    USER newuser
    CMD python /myapp/hello.py
    

    **从第5行开始,每个命令都是以newuser身份而不是root身份运行。**是不是很简单?

    但是,我们并不总是仅使用自定义镜像。我们还使用了许多第三方镜像,因此我们无法像上面那样将root权限的用户注入其中。

    这些第三方Docker镜像默认情况下将以root用户身份运行,除非我们对其进行处理。如果你使用不知名来源中的镜像,那么该镜像很可能嵌入了恶意命令,这就可能会影响集群的安全性。

    Kubernetes中Pod安全上下文和Pod安全策略,可以帮助我们以非root身份运行三方镜像。

    使用Pod安全上下文

    你可以使用Pod安全上下文,将Pod的执行限制为特定的非root用户。通过在Pod规范中添加一个字段securityContext,就可以为Pod指定这些安全设置 。

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      securityContext:
        runAsUser: 5000
        runAsGroup: 5000
      volumes:
      - name: my-vol
        emptyDir: {}
      containers:
      - name: my-container
        image: hello-world
        command: ["sh", "-c", "sleep 10 m"]
        volumeMounts:
        - name: my-vol
          mountPath: /data/hello
        securityContext:
          allowPrivilegeEscalation: false
    

    在以上规范中,我们创建了一个为非root的用户,runAsUser指定Pod内的任何容器 仅以userID为5000的运行。runAsGroup 指定的容器内所有进程的组ID。否则,则组ID将是0。

    现在,你可以创建此pod并检查容器中运行的进程:

    $ kubectl apply -f my-pod.yaml
    $ kubectl exec -it my-pod – sh
    ps
    PID   USER     TIME  COMMAND
      1   5000     0:00  sleep 10 m
      6   5000     0:00  sh
    

    如上所示,PID 1正在以userID为5000的用户而不是root用户身份运行。

    使用Kubernetes Pod安全策略

    Kubernetes Pod安全策略定义了Pod必须运行的条件。换句话说,如果不满足这些条件,Kubernetes将阻止Pod运行。

    PodSecurityPolicy示例:

    apiVersion: policy/v1beta1
    kind: PodSecurityPolicy
    metadata:
      name: my-psp
    spec:
      privileged: false
      #Required to prevent escalations to root.
      allowPrivilegeEscalation: false
      allowedCapabilities:
      - '*'
      volumes:
      - 'nfs'
      hostNetwork: true
      hostPorts:
      - min: 8000
        max: 8000
      hostIPC: true
      hostPID: true
      runAsUser:
        #Require the container to run without root.
        rule: 'MustRunAsNonRoot'
      seLinux:
        rule: 'RunAsAny'
      supplementalGroups:
        rule: 'RunAsAny'
      fsGroup:
        rule: 'RunAsAny'
    

    该安全策略实现以下目的:

    • 限制容器在特权模式下运行。
    • 限制需要根目录的容器。
    • 仅允许容器NFS存储卷。
    • 仅允许容器访问主机端口8000。

    应用:

    kubectl create -f my-psp.yaml
    

    查看:

    $ kubectl get psp
    NAME    PRIV   RUNASUSER         FSGROUP   SELINUX   VOLUMES
    My-psp  false  MustRunAsNonRoot  RunAsAny  RunAsAny  [nfs]
    

    现在已经创建了策略,你可以通过尝试以root特权运行容器来对其进行测试。

    $ kubectl run --image=my-root-container
    

    pod安全策略将禁止其运行,并给出错误消息:

    $ kubectl get pods
    NAME         READY    STATUS     
    my-root-pod  0/1      container has runAsNonRoot and image will run as root
    

    结论

    在这篇文章中,我强调了默认设置下,使用root用户运行Docker容器有着固有风险。我还提出了多种方法来克服这种风险。

    • 如果你正在运行自定义镜像,请创建一个新的非root用户并在Dockerfile中指定它。
    • 如果使用的是第三方镜像,则可以在容器或容器级别设置安全上下文。
    • 还有一种方法是创建一个Pod安全策略,该策略将不允许任何容器以root特权运行。

    译文链接: https://dzone.com/articles/docker-without-root-privileges

    展开全文
  • 非root用户随开机而启动mysql服务

    千次阅读 2021-01-18 23:02:21
    非root用户随开机而启动mysql服务今天验证了一下,非root用户随开机而启动msyql服务的脚本执行效果,特此简要记录如下:环境:192.168.142.130mysql 5.6.41 源码安装数据和安装目录都是mysql用户需求:需要在关机...

    非root用户随开机而启动mysql服务

    今天验证了一下,非root用户随开机而启动msyql服务的脚本执行效果,特此简要记录如下:

    环境:

    192.168.142.130

    mysql 5.6.41 源码安装

    数据和安装目录都是mysql用户

    需求:

    需要在关机开机启动后,能自动启动mysql数据库服务

    重点是:

    开机自动运行脚本,可以将脚本的执行命令放在

    /etc/rc.d/rc.local 文件中,但是这样开机自动运行这个脚本的用户默认为root。

    如果想以某个非root用户运行脚本,可以使用如下命令:

    su - user -c /home/user/run.sh

    注意格式: su(空格)-(空格)-c(空格)命令路径....

    1、脚本内容

    [mysql@db130 scripts]$ cat /data/mysql/scripts/is_start_status_mysql.sh

    #!/bin/bash

    #

    # Author: Created by lww

    # filename: /data/mysql/scripts/is_start_status_mysql.sh

    # Date: 2019-05-14

    # Description: This script is used to start mysql server.

    # Version:1.1

    #

    #####################################################################################

    is_start_status=`ps -ef|grep -Ew 'mysqld|mysqld_safe' | grep -vw 'grep' |  wc -l`

    if [[ "$is_start_status" -ne 2 ]]; then

    sleep 10

    /data/mysql/percona_server/bin/mysqld_safe --defaults-file=/data/mysql/percona_server/conf/my.cnf &

    fi

    [mysql@db130 scripts]$

    2、开启启动服务文件修改

    [root@db130 ~]# cat /etc/rc.local

    #!/bin/sh

    #

    # This script will be executed *after* all the other init scripts.

    # You can put your own initialization stuff in here if you don't

    # want to do the full Sys V style init stuff.

    touch /var/lock/subsys/local

    echo never > /sys/kernel/mm/transparent_hugepage/enabled

    # 以非root用户启动随开机启动mysql服务

    su - mysql -c /data/mysql/scripts/is_start_status_mysql.sh

    [root@db130 ~]#

    3、reboot测试验证。

    linux非root用户执行开机启动程序

    问题 开机启动其他用户的程序或者说非root用户执行开机启动 编写开机启动脚本 编写开机启动脚本apple_tree,放到/etc/init.d,系统启动时会自动执行. 例如,/etc/init.d/ ...

    linux安装mongodb(设置非root用户和开机启动)

    官网地址:https://www.mongodb.com/ 在官网上选择不同的linux系统得到不同的下载地址,我们用的下载地址是:https://fastdl.mongodb.org/linux/m ...

    linux系统非ROOT用户80端口不能启动tomcat问题的变通办法——通过Iptables端口转发

    2010-07-17 13:21:42 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{ ...

    linux指定某非root用户执行开机启动项的方法(gogs git)

    以linux指定git用户在linux开机时执行启动gogs git为例: 以root登录linux 执行vi /etc/rc.d/rc.local 在文档末尾添加一行语句:su git -c &qu ...

    Centos6.4 设置开机自动以某个非root用户启动脚本

    开机自动运行脚本,可以将脚本的执行命令放在 /etc/rc.d/rc.local 文件中,但是这样开机自动运行这个脚本的用户默认为root. 如果想以某个非root用户运行脚本,可以使用如下命令: s ...

    设置开机启动时指定非ROOT用户执行相应的脚本

    [root@MSJTVL-MJSP-A01 sm01]# vim /etc/rc.d/rc.local #!/bin/sh # # This script will be executed *afte ...

    CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动

    CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动1.关于mysql?MySQL是一个关系型数据库管理 ...

    短网址资料-nginx非root用户启动-systemctl启动脚本-分割root权限

    https://www.cnblogs.com/aspnethot/articles/3492191.htmlhttps://www.cnblogs.com/aspnethot/articles/34 ...

    【出错记录】Tomcat非root用户启动无法拥有权限读写文件

    简单记录下,如有必要,将深入补充: 一.非root用户运行Tomcat及原因 由于项目中,为了安全需要,Tomcat将禁止以root形式启动,原因很简单,举个例子,一旦有人恶意将jsp文件透过某个别的 ...

    随机推荐

    HDU1250 高精度斐波那契数列

    Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

    kuangbin_ShortPath R (HDU 4370)

    出题人真是脑洞堪比黑洞 (然后自己也被吸进去了 理解一遍题意 三个条件可以转化为 1的出度是1, n的入度是1, 2~n-1的出度等于入度 不难发现1-n的最短路符合题意 然而其实还有另一种情况 1为 ...

    Android常用控件之FragmentTabHost的使用

    最近在学TabHost时发现TabActivity在API level 13以后不用了,所以就去寻找它的替换类,找到FragmentActivity,可以把每个Fragment作为子tab添加到Fra ...

    两年的坚持,最后还是决定将ISoft开源

    还记得2011年9月份,我在上大四,本来想着考研能上个好点的学校,可我怎么就不愿去自习室上自习.每天晚上睡觉前都告诉自己明天早晨一定早起去上自习,但又每次醒来都不想起床啊,懒,没办法.睡到不想再睡了才 ...

    一些.net开源项目

    强大的插件系统,通过Addin构建成一个功能齐全的.net开发IDE.核心是AddInTree.跟随这个项目开发许多有用的组件,比如功能文本编辑器(ICSharpCode.TextEditor),Sh ...

    jQuery中的index方法介绍

    从jq api手册摘过来的内容,index这个方法在写 tab silder 之类的组件还是比较有用的说. js没有传统的函数重载的概念,但是根据传入参数的不同,js的函数可以完成不同的功能,也可说是 ...

    【转】解决Windows不能在本地计算机启动apache tomcat

    http://blog.163.com/ftskwsg@126/blog/static/5623853020094494117827/ 这个方法解决了我的问题. 在windows下以服务的方式启动时提 ...

    LeetCode(42):接雨水

    Hard! 题目描述: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度 ...

    Linux:配置samba服务

    配置samba服务  一.简略教程 1.挂载系统 mount /dev/cdrom /mnt/cdrom2.创建用户:useradd linlin3.创建用户密码:passwd linlin4.在用户 ...

    Android 拍照或从相册取图片并裁剪

    在Android中,Intent触发Camera程序,拍好照片后,将会返回数据,但是考虑到内存问题,Camera不会将全尺寸的图像返回给调用的Activity,一般情况下,有可能返回的是缩略图,比如1 ...

    展开全文
  • 本文记录一下如何使用非root用户进行docker操作,并将数据目录从其他机器进行nfs mount。

    本文记录一下如何使用非root用户进行docker操作,并将数据目录从其他机器进行nfs mount。

    场景说明

    安装docker所在机器由于磁盘空间不足,将数据目录/var/lib/docker进行mount,使用别的机器的空间。在一些企业中由于标准虚机的大小可能已经规范,会产生类似的问题。

    环境模拟

    hostip用途软件安装进程启动
    host118192.168.163.118安装了docker的机器docker与nfs-utilssystemctl start docker
    host131192.168.163.131NFS服务器,提供docker的数据目录的空间nfs-utils与rpcbindsystemctl start rpcbind 与systemctl start nfs

    事前准备

    NFS服务器

    事前准备

    使用非root用户appman进行操作,事先准备该用户与sudo权限

    [root@host131 ~]# useradd appman
    [root@host131 ~]# passwd appman
    Changing password for user appman.
    New password: 
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    [root@host131 ~]# vi /etc/sudoers
    [root@host131 ~]# grep appman /etc/sudoers
    appman	ALL=(ALL) 	ALL
    [root@host131 ~]#
    

    创建用于mount的目录

    创建/opt/lib/docker目录用于mount,可以看到此目录所在卷仍有一些使用空间。

    [appman@host131 ~]$ id
    uid=1000(appman) gid=1000(appman) groups=1000(appman) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    [appman@host131 ~]$ sudo mkdir -p /opt/lib/docker
    [sudo] password for appman: 
    [appman@host131 ~]$ sudo ls -l /opt/lib/docker
    total 0
    [appman@host131 ~]$ sudo ls -ld /opt/lib/docker
    drwxr-xr-x. 2 root root 6 Feb 16 12:58 /opt/lib/docker
    [appman@host131 ~]$ df /opt/lib/docker
    Filesystem              1K-blocks    Used Available Use% Mounted on
    /dev/mapper/centos-root  17811456 1304176  16507280   8% /
    [appman@host131 ~]$ 
    

    注:本文mount源使用了root所在卷,这不是一个好的习惯,仅用于示例使用方式。

    设定NFS服务器侧exports

    [appman@host131 ~]$ cat /etc/exports
    [appman@host131 ~]$ ls -l /etc/exports
    -rw-r--r--. 1 root root 0 Jun  7  2013 /etc/exports
    [appman@host131 ~]$ sudo vi /etc/exports
    [sudo] password for appman: 
    [appman@host131 ~]$ cat /etc/exports
    /opt/lib/docker 192.168.163.118(rw,sync,no_root_squash)
    [appman@host131 ~]$ 
    [appman@host131 ~]$ sudo exportfs
    [appman@host131 ~]$
    

    确认nfs

    [appman@host131 ~]$ sudo showmount -e localhost
    Export list for localhost:
    /opt/lib/docker 192.168.163.118
    [appman@host131 ~]$ 
    

    docker服务所在机器

    事前准备

    停下原有docker服务,为了显示此目录为nfs mount之后的目录,演示时删除了原有内容,请根据需要进行备份

    [appman@host118 ~]$ id
    uid=1003(appman) gid=1003(appman) groups=1003(appman),1004(docker) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    [appman@host118 ~]$ sudo ls -l /var/lib/docker
    [sudo] password for appman: 
    total 0
    drwx------. 2 root root  6 Mar 12 08:52 containers
    drwx------. 3 root root 21 Mar 12 08:52 image
    drwxr-x---. 3 root root 19 Mar 12 08:52 network
    drwx------. 2 root root  6 Mar 12 08:52 overlay
    drwx------. 4 root root 32 Mar 12 08:52 plugins
    drwx------. 2 root root  6 Mar 12 08:52 swarm
    drwx------. 2 root root  6 Mar 12 08:52 tmp
    drwx------. 2 root root  6 Mar 12 08:52 trust
    drwx------. 2 root root 25 Mar 12 08:52 volumes
    [appman@host118 ~]$ systemctl status docker
    ● docker.service - Docker Application Container Engine
       Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
       Active: active (running) since Tue 2019-03-12 08:52:19 CST; 53min ago
         Docs: http://docs.docker.com
     Main PID: 7641 (dockerd)
       CGroup: /system.slice/docker.service
               ├─7641 /usr/bin/dockerd -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock --selinux-enabled=false --log-opt max-size=1g...
               └─7644 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeo...
    [appman@host118 ~]$ systemctl stop docker
    ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
    Authentication is required to manage system services or units.
    Authenticating as: root
    Password: 
    ==== AUTHENTICATION COMPLETE ===
    [appman@host118 ~]$ sudo rm -rf /var/lib/docker
    [appman@host118 ~]$ 
    

    创建挂载点

    [appman@host118 ~]$ sudo ls -l /var/lib/docker
    ls: cannot access /var/lib/docker: No such file or directory
    [appman@host118 ~]$ sudo mkdir -p /var/lib/docker
    [appman@host118 ~]$ sudo ls -l /var/lib/docker
    total 0
    [appman@host118 ~]$
    

    执行挂载

    可以使用如下一次性方式进行挂载

    mount命令:mount -t nfs 192.168.163.131:/opt/lib/docker /var/lib/docker

    但建议写到fstab中,避免因重启导致问题

    [appman@host118 ~]$ grep docker /etc/fstab
    [appman@host118 ~]$ sudo vi /etc/fstab
    [appman@host118 ~]$ grep docker /etc/fstab
    192.168.163.131:/opt/lib/docker /var/lib/docker nfs rw
    [appman@host118 ~]$ df /var/lib/docker
    Filesystem              1K-blocks     Used Available Use% Mounted on
    /dev/mapper/centos-root  36805060 34040224   2764836  93% /
    [appman@host118 ~]$
    
    • 确认是否可进行挂载
    [appman@host118 ~]$ showmount -e 192.168.163.131
    Export list for 192.168.163.131:
    /opt/lib/docker 192.168.163.118
    [appman@host118 ~]$
    
    • 执行挂载
    [appman@host118 ~]$ sudo mount /var/lib/docker
    [sudo] password for appman: 
    [appman@host118 ~]$ df /var/lib/docker
    Filesystem                      1K-blocks    Used Available Use% Mounted on
    192.168.163.131:/opt/lib/docker  17811456 1304064  16507392   8% /var/lib/docker
    [appman@host118 ~]$ ls -l /var/lib/docker
    total 0
    [appman@host118 ~]$ 
    
    • 启动docker
    [appman@host118 ~]$ systemctl start docker
    ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
    Authentication is required to manage system services or units.
    Authenticating as: root
    Password: 
    ==== AUTHENTICATION COMPLETE ===
    [appman@host118 ~]$ docker version
    Client:
     Version:      1.13.1
     API version:  1.26
     Go version:   go1.7.5
     Git commit:   092cba3
     Built:        Wed Feb  8 08:47:51 2017
     OS/Arch:      linux/amd64
    
    Server:
     Version:      1.13.1
     API version:  1.26 (minimum version 1.12)
     Go version:   go1.7.5
     Git commit:   092cba3
     Built:        Wed Feb  8 08:47:51 2017
     OS/Arch:      linux/amd64
     Experimental: false
    [appman@host118 ~]$ 
    [appman@host118 ~]$ ls -l /var/lib/docker
    ls: cannot open directory /var/lib/docker: Permission denied
    [appman@host118 ~]$ sudo ls -l /var/lib/docker
    total 0
    drwx------. 2 root root  6 Feb 17 02:01 containers
    drwx------. 3 root root 21 Feb 17 02:01 image
    drwxr-x---. 3 root root 19 Feb 17 02:01 network
    drwx------. 2 root root  6 Feb 17 02:01 overlay
    drwx------. 4 root root 32 Feb 17 02:01 plugins
    drwx------. 2 root root  6 Feb 17 02:01 swarm
    drwx------. 2 root root  6 Feb 17 02:01 tmp
    drwx------. 2 root root  6 Feb 17 02:01 trust
    drwx------. 2 root root 25 Feb 17 02:01 volumes
    [appman@host118 ~]$
    
    • 同样此时确认NFS服务器的/opt/lib/docker目录,也会发现刚刚生成的内容
    [appman@host131 ~]$ sudo ls /opt/lib/docker
    containers  image  network  overlay  plugins  swarm  tmp  trust  volumes
    [appman@host131 ~]$ 
    
    • 使用docker load验证一下docker动作
      如下所示,动作可以正常执行。
    [appman@host118 ~]$ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    [appman@host118 ~]$ docker load -i /tmp/alpine.tar
    503e53e365f3: Loading layer [==================================================>] 5.793 MB/5.793 MB
    Loaded image: alpine:3.9
    [appman@host118 ~]$ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    alpine              3.9                 caf27325b298        5 weeks ago         5.52 MB
    [appman@host118 ~]$
    

    总结

    虽然验证了这种方式,建议不要做的这么纠结。

    展开全文
  • linux下非root权限的mysql安装
  • Linux非root用户安装rpm包

    千次阅读 2020-12-02 10:53:02
    文章目录情况安装rpm包 情况 使用root用户,因为权限足够大,所以做...非root用户,权限低时,连yum install都没法使用,那怎么安装软件呢 安装rpm包 1、以安装wget工具为例 首先在windows浏览器上下载一个wget的rpm包 ...
  • Linux非root用户登录

    千次阅读 2019-07-16 21:26:06
    Linux非root用户登录 1.创建非root用户 例如:useradd -m lhl_1 2.给lhl_1用户设置密码 passwd lhl_1 3.切换用户到lhl_1 su lhl_1 4.cd到lhl_1的当前目录 cd 5.在lhl_1的目录下创一个.ssh的文件夹并给它的...
  • Linux非root用户执行root权限命令

    千次阅读 2020-09-27 10:12:53
    非root用户有时需要执行root才能执行的命令,可以通过配置sudoers文件实现 ##修改sudoers文件 vim /etc/sudoers ##增加user1 user1 ALL=(ALL:ALL) ALL # This file MUST be edited with the 'visudo' command as ...
  • nginx非root用户使用1024以下端口

    千次阅读 2021-11-23 16:55:28
    nginx非root用户使用1024以下端口 nginx应用需要使用80和443端口,但是非root用户,nginx -t 检查文件是会报错: [majd@majd nginx]$ /home/majd/nginx/sbin/nginx -t nginx: the configuration file /home/majd/...
  • Linux非root用户安装JDK

    万次阅读 2021-02-03 18:40:11
    前言 假期在家连接学校服务器,想在服务器上安装JDK跑java程序,于是做了教程供大家参考。 1.下载JDK1.8压缩包 如果不知道怎么把包传给Linux,可以先把包放到QQ邮箱中转站,然后服务器上网页下载即可。...
  • Linux配置SSH免密码登录(非root账号)

    万次阅读 多人点赞 2019-02-08 00:45:33
    设置多台linux服务器之间以非root账号的身份免密码ssh登录
  • 前提:linux环境下,其它unix环境应该是类似。我在8.1 SP5上测试没有问题,测试了LINUX solaris linux unix不能用非root用户启用1024以下端口的服务
  • Linux非root用户配置安装screen

    千次阅读 2019-04-01 21:47:00
    Linux远程节点非root用户配置安装screen简介安装screenscreen使用相关 简介   我们经常使用ssh或telnet远程登陆到Linux服务器,而执行一些长时间任务如ftp传输,深度学习等任务时常常使我们感到头疼,因为我们不能...
  • 导航:一. 下载并解压1.1 创建nodejs文件夹1.2 下载包1.3 解压二. 安装并配置2.1 添加环境变量2.2 修改配置...非root用户输入此命令的时候,会提示输入密码,直接输入连接服务器的用户密码即可; 1.2 下载包 sudo ...
  • 非root用户更新glibc版本的悲惨故事

    千次阅读 2019-11-21 16:50:06
    非root用户更新glibc版本的悲惨故事前言查看现有版本和软件依赖查看glibc版本 前言 作为一个大集群里的一个没有root权限的小用户,最近在使用一个生信软件时,要求GLIBC库的版本在2.27以上。众所周知,对于没有...
  • linux下非root用户安装软件

    千次阅读 2019-05-23 17:20:24
    从windows转移到Linux的用户最开始有各种不适,因使用习惯水土不服而放弃Linux的不在少数。还没有领略到Linux的美好就退却,对于这... 提示用root”的死循环,不免感到沮丧和抓狂。本文主要面向对象第二类人,简要介...
  • 非root用户挂载NFS

    千次阅读 2020-08-28 15:42:34
    第二步,确认一个非root用户用于挂载。第三步、以root帐号登录弹性云主机。第四步、给非root的普通用户添加root权限。第五步、切换到普通用户kyc登录弹性云主机,执行挂载。第六步、挂载完成后,执行mount -l,查看...
  • 非root权限安装gcc到自己路径

    千次阅读 2020-05-26 15:44:13
    非root权限安装gcc到自己路径 很多实验室服务器公用,gcc版本低导致有些依赖编译不通过,非root权限用户可以在自己目录安装需要的gcc,不会影响别人。 1.下载 从GCC网站里下载GCC传到服务器,右侧有个Mirror里面的...
  • Docker安全策略--非root用户运行

    万次阅读 2018-09-27 15:20:48
    3、docker 已经支持非root 权限运行了,所以我们可以利用linux 的安全策略给 docker再加一层保护 4、容器对外暴露的资源默认仅有指定的端口,所以我们竟可能的减少端口映射。 非root运行: 1、创建新用户 ...
  • 关于mysql root 和非root登录的问题

    千次阅读 2019-05-30 08:30:16
    我在使用xmapp时,启动mysql,并通过Navicat连接了数据库后,创建了一些...原因:是我在使用Navicat连接mysql时,使用的是root身份,但通过xmapp shell 进入mysql,我是直接启动的mysql,并没有使用root 进登录的。...
  • 在 rc.local中加入 如下执行语句 sudo -u username /usr/bin/sshReversepenetration.sh
  • 非root用户下安装supervisor并使用supervisor和gunicorn部署项目 背景: 使用实验室的服务器部署Flask项目的时候,打算使用supervisor+gunicorn来部署,之前按照网上部署Flask项目的教程,其中gunicorn可以使用pip...
  • 非root用户启动docker

    千次阅读 2019-12-11 10:11:50
    https://www.cnblogs.com/informatics/p/8276172.html
  • 一、root用户远程登录 1. 首先你得有个阿里云服务器(笑 2. 进入云服务器管理控制台 3. 在网络与安全栏下选择密钥对进入 4. 右上角创建密钥对,点击进入 5. 设置密钥对名称,点击确定,就会生成密钥对文件让你下载...
  • 非root用户Linux最简MongoDB单机版配置

    千次阅读 2019-05-07 18:55:22
    前言:记述过去的点点滴滴是一件意义非凡的事情,即是回顾,亦是成长,本篇主要讲述以非root身份搭建最简单的MongoDB单机版 一、环境准备 1、Centos7 2、非root用户 二、MongoDB数据库的安装 1、准备MongoDB安装包,...
  • linux下非root用户安装Anaconda

    千次阅读 2020-07-09 19:33:47
    3、配置环境变量: 因为是非root用户,所以此时修改的并不是大家最熟悉的/etc/profile,而是自己目录下的.bashrc(隐藏文件)可以通过ls -a命令查看,输入以下命令: ]$ cd ~ ]$ vim .bashrc ]$ source .bashrc ]$ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 555,204
精华内容 222,081
关键字:

非root

友情链接: MCA.zip