Tout pwosesis nan veso a pral kouri kòm itilizatè rasin, sof si ou presize li nan yon fason espesyal. Sa a sanble trè pratik, paske itilizatè sa a pa gen okenn restriksyon. Se poutèt sa travay kòm rasin pa bon nan yon pwen de vi sekirite. Si pa gen moun ki nan bon lide travay sou òdinatè lokal la ak dwa rasin, Lè sa a, anpil kouri pwosesis anba rasin nan resipyan.
Gen toujou pinèz ki pral pèmèt malveyan yo chape soti nan veso a epi jwenn sou òdinatè lame a. Si nou sipoze pi move a, nou dwe asire ke pwosesis andedan veso a ap kouri pa yon itilizatè ki pa gen okenn dwa sou machin nan lame.
Kreye yon itilizatè
Kreye yon itilizatè nan yon veso pa diferan de kreye li nan distribisyon Linux. Sepandan, kòmandman yo ka varye pou imaj baz diferan.
Pou distribisyon ki baze sou Debian, ou bezwen ajoute sa ki annapre yo nan Dockerfile la:
RUN groupadd --gid 2000 node
&& useradd --uid 2000 --gid node --shell /bin/bash --create-home node
Pou alpine:
RUN addgroup -g 2000 node
&& adduser -u 2000 -G node -s /bin/sh -D node
Kouri pwosesis soti nan itilizatè a
Pou kouri tout pwosesis ki vin apre yo kòm yon itilizatè ki gen UID 2000, kouri:
USER 2000
Pou kouri tout pwosesis ki vin apre yo kòm itilizatè a ne, kouri:
USER node
Li plis nan
Monte volim
Lè w ap monte volim andedan yon veso, bay itilizatè a kapasite pou li ak/oswa ekri fichye yo. Pou fè sa, UID (GID) itilizatè a nan veso a ak itilizatè a deyò veso a ki gen otorizasyon apwopriye pou jwenn aksè nan dosye a dwe matche. Nan ka sa a, non itilizatè pa gen pwoblèm.
Souvan sou yon òdinatè Linux, UID ak GID itilizatè a egal a 1000. Idantifyan sa yo bay premye itilizatè òdinatè a.
Chèche konnen idantifyan ou yo fasil:
id
Ou pral resevwa enfòmasyon konplè sou itilizatè ou an.
Ranplase 2000 nan egzanp yo ak idantifyan ou ak tout bagay pral anfòm.
Bay yon UID ak GID pou yon itilizatè
Si itilizatè a te kreye deja, men ou bezwen chanje idantifyan yo, ou ka fè li tankou sa a:
RUN usermod -u 1000 node
&& groupmod -g 1000 node
Si w ap itilize imaj baz alpine a, ou bezwen enstale pake lonbraj la:
RUN apk add —no-cache shadow
Pase ID itilizatè a andedan veso a lè w ap bati imaj la
Si idantite w ak idantite tout moun k ap travay sou pwojè a matche ak, jis presize idantite sa a nan Dockerfile la. Sepandan, souvan ID itilizatè yo pa matche.
Ki jan yo reyalize sa ou vle pa imedyatman klè. Pou mwen, sa a te bagay ki pi difisil nan pwosesis la nan metrize Docker. Anpil itilizatè docker pa reyalize ke gen diferan etap nan lavi yon imaj. Premyèman, imaj la reyini lè l sèvi avèk yon Dockerfile. Lè w ap kouri yon veso ki soti nan yon imaj, Dockerfile a pa itilize ankò.
Kreyasyon itilizatè dwe fèt lè imaj la bati. Menm bagay la tou aplike nan detèmine itilizatè a anba ki pwosesis yo te lanse. Sa vle di ke nou dwe yon jan kanmenm pase UID a (GID) andedan veso a.
Direktiv yo itilize pou itilize varyab ekstèn nan Dockerfile la
dockerfile
ARG UID=1000
ARG GID=1000
ENV UID=${UID}
ENV GID=${GID}
RUN usermod -u $UID node
&& groupmod -g $GID node
Ou ka pase agiman atravè docker-compose tankou sa a:
docker-konpoze
build:
context: ./src/backend
args:
UID: 1000
GID: 1000
PS Pou metrize tout sibtilite Docker, li pa ase pou li dokiman an oswa atik yo. Ou bezwen pratike anpil, ou bezwen jwenn yon santiman pou Docker.
Sous: www.habr.com