useradd 添加普通用户

  • name:

            ueradd- create a new user or update default new user information

  • synopsis:

 useradd [options] login

useradd [-c comment] [-d home_dir] [-e expire_date] [ -f inactive_time] [ -g initial_group] [-G group[,...] ] [-m [-k skeleton_dir]| -M] [-s shell][ -u uid [-o]] [-n] [-r] login
 

  •  常用选项(options):使用 man 8 useradd 查看更多详细信息
    1. -c comment                     新用户的说明

    2. -d home_dir                     用户主目录

    3. -e expire_date                  用户过期时间,时间格式:YYYY-MM-DD

    4. -f  inactive_time                用户过期指定天数后禁止用户登录

    5. -g initial_group                  用户默认组,只能有一个, initial_group 必须存在,否则会出错

    6. -G group[,...]                     用户附加组,可以有多个

    7. -m                                     用户主目录不存在时自动创建;若同时使用-k skeleton_dir 则该目录下的所有文件会被复制到用户主目录

    8. -s shell                               用户默认使用shell

    9. -u uid                                 用户 uid

    10. login                                  用户登录名 

相关信息:

[centos@laizili ~]$ cat /etc/default/useradd 
# useradd defaults file
GROUP=100                            #用户默认组,GID 100 为users组
HOME=/home                           #默认主目录
INACTIVE=-1                          #不激活
EXPIRE=                              #过期
SHELL=/bin/bash                      #默认shell
SKEL=/etc/skel                       #用户skel
CREATE_MAIL_SPOOL=yes                

 

<think>好的,用户的问题是关于如何在Dockerfile中创建非特权用户。我需要先理解用户的具体需求,然后结合提供的引用内容来给出正确的步骤。 首先,用户提到“添加一个普通用户”,也就是非root用户。根据引用[4],里面提到了使用groupadduseradd命令来创建用户组。应该确保用户没有sudo权限,并且属于一个特定的组。 接下来,我需要考虑Dockerfile的步骤顺序。通常在Dockerfile中,先安装必要的软件,然后创建用户组,再切换用户。同时,需要复制应用程序文件并设置正确的权限,确保新用户有访问权。引用[4]中的例子使用了COPYchown命令,这里可能需要调整路径文件名。 另外,用户可能希望以非root用户运行容器进程,所以需要使用USER指令来切换用户。同时,设置WORKDIR可以指定工作目录,避免权限问题。要注意的是,如果应用程序需要监听特权端口(如80),可能需要调整,但用户可能已经知道这点,或者可以在答案中提及。 可能的疑问点包括:用户是否需要在容器中执行其他需要特权的操作?如果不需要,那么按照标准步骤创建用户即可。如果有需要,可能还是需要以root用户运行,但用户明确要求创建普通用户,所以应该强调避免使用root。 还需要检查是否有语法错误,比如groupadduseradd的参数是否正确。例如,使用-r参数创建系统用户组,--no-log-init来避免某些系统问题,比如在Debian系镜像中的问题。 最后,给出完整的Dockerfile示例,确保每一步都解释清楚,并提醒用户注意事项,比如文件权限端口需求。同时,根据用户要求生成相关问题,可能涉及安全性、权限管理或Dockerfile优化等方面。</think>在 Dockerfile 中创建非特权用户可通过以下步骤实现,既能提升容器安全性,又能遵循最小权限原则: 1. **创建用户组用户** ```dockerfile RUN groupadd -r mygroup && \ useradd --no-log-init -r -g mygroup -m -d /home/myuser myuser ``` - `-r` 参数创建系统用户/组 - `--no-log-init` 避免日志文件初始化问题[^4] - `-m -d` 创建用户主目录 2. **设置工作目录与权限** ```dockerfile WORKDIR /app RUN chown -R myuser:mygroup /app ``` 3. **文件复制与权限设置** ```dockerfile COPY --chown=myuser:mygroup app_files/ /app/ ``` 4. **切换用户身份** ```dockerfile USER myuser ``` **完整示例**: ```dockerfile FROM ubuntu:22.04 # 创建非特权用户 RUN groupadd -r mygroup && \ useradd --no-log-init -r -g mygroup -m -d /home/myuser myuser # 设置工作目录并赋权 WORKDIR /app RUN chown -R myuser:mygroup /app # 复制应用文件(自动设置所有权) COPY --chown=myuser:mygroup . . # 切换用户 USER myuser CMD ["python", "app.py"] ``` **注意事项**: 1. 如果应用需要监听`1024`以下的端口,需在启动容器时添加`--cap-add=NET_BIND_SERVICE`参数 2. 文件系统权限需与用户UID/GID匹配,可通过`docker run -u $(id -u):$(id -g)`动态指定[^4] 3. 避免在容器内执行需要root权限的操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值