dockerfile 中的user
dockerfile中可以通过user指定username/uid来设置docker中运行程序在linux主机上的用户。这样设置的好处是避免docker命令默认情况下使用linux中root用户作为运行者,从而拥有过高的权限的不安全性。
但在通过user设置用户名时,需要注意:
- 在linux上对docker镜像使用的资源(volume挂载文件夹等)设置用户权限。
- 尽量使用uid配置,因为docker作为虚拟容器,用户名若出现冲突/命名不一致,会导致权限不足的情况,linux的用户uid则可以在docker-linux之间进行传递。(这里的传递机制是linux默认使用uid进行用户验证的)
linux添加用户并配置权限
-
useradd
useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd
文本文件中。
文件说明:- /etc/passwd 用户的配置文件,内容格式
root:x:0:0:root:/root:/bin/bash
,用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
- /etc/shadow 用户配置的补充:
root:!:17043:0:99999:7:::
,登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
- /etc/group 账户组配置
root:x:0:
,组名:口令:组标识号:组内用户列表
- /etc/passwd 用户的配置文件,内容格式
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
参数详解:
参数简写 | 全称 | 说明 |
---|---|---|
-c | comment 备注信息 | 加上备注文字,备注文字保存在passwd的备注栏中。 |
-d | home 用户的主目录 | 指定用户登入时的主目录,替换系统默认值/home/<用户名> |
-D | 变更预设值。 | |
-e | expire 过期时间 | 指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。 |
-f | inactive 过期关闭 | 指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1. |
-g | group 用户所属的组 | 指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users。 |
-G | group 附加群组 | 指定用户所属的附加群组。 |
-m | 不跟后缀命令单独使用 | 自动建立用户的登入目录。 |
-M | 不跟后缀命令单独使用 | 不要自动建立用户的登入目录。 |
-n | nogroup | 取消建立以用户名称为名的群组,不指定-g/-G时,会自动创建与名字相同的group,使用-n则不创建group。 |
-r | 建立系统账号。 | |
-s | shell 指定登录用户后的shell命令常用为 /bin/bash /sbin/nologin | 指定用户登入后所使用的shell。默认值为/bin/bash。 |
-u | uid 用户的uid值 | 指定用户ID号。该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499。 |
其中的 -d -g -s -u为常用选项
权限相关
- 查看文件/文件夹权限
使用 ll或者 ls -l命令可以查看文件夹下的文件/文件夹的权限相关信息
[root@localhost redisdata]# ll
total 0
-rw-r--r--. 1 redistest root 0 Nov 4 09:26 appendonly.aof
`权限 文件数量 所有者 组群 大小 创建日期 名称`
-rw-r--r--.
表示的是文件夹/文件的权限相关信息,第一位 -
、d
表示是文件 还是文件夹,后面每三位一组分别表示 所有者(user)、组群(group)、其他人(other)的权限项目。
rwx
三位数字的顺序表示为 r=read读取权限,w=write写入权限,x=executable可执行文件执行权限,若无此权限,则使用-
代替,表示无。
其中的rwx也可以用数字来代替
r=4、w=2、x =1、-=0,这样的话,对于ug0的权限可以使用754这样的位表示法简写。
-rw------- (600) 只有所有者才有读和写的权限
-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------ (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限
修改权限chmod
chmod 选项 参数
chmod [{ugoa}{+-=}{rwx}] [文件或目录]
在chmod中使用linux中权限和用户相关的tag来表示。
tag | 说明 |
---|---|
u | 代表所有者(user) |
g | 代表所有者所在的组群(group) |
o | 代表其他人,但不是u和g (other) |
a | 代表全部的人,也就是包括u,g和o |
r | 表示文件可以被读(read) |
w | 表示文件可以被写(write) |
x | 表示文件可以被执行(如果它是程序的话) |
- 选项 选项一般使用下方所示的格式指定权限
<权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置;
<权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置;
<权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;
- 参数 参数一般就是指定的文件/文件夹
chmod u+x file //为文件设置:所有者可以执行的权限
chmod u=rwx,g=rw,o=r dir //为文件夹设置:所有者读写执行权限,组群读写权限,其他人读权限
chmod 764 dir //修改权限为 读写执行、读写,读
chmod a+x file //对文件的u,g,o都设置可执行属性