2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Docker】USER=rootの代わりにsudoを使う

Last updated at Posted at 2024-08-19

背景

docker runの実行時に管理者権限が必要だったのでUSER=rootを使う代わりにsudoを使うことにしたのでその方法を記載します。

なぜ管理者権限が必要だったか

scapyでSYNパケットを生成してポートスキャンするツールを作っていたのですが,SYNパケットの作成にsudoが必要なようです。

管理者アカウントでnmapを使うとsyn scanになるという記載が公式ドキュメントにありますが,nmapでも管理者アカウントでSYNパケットは作成できません。

So when running Nmap as root or Administrator, -sS is usually omitted.

nmap -sS localhost
You requested a scan type which requires root privileges.
QUITTING!

実際のやりかた

該当部分だけ抜粋してますが全体を見たい方はこちら

ARG USER_NAME="sigma"
RUN <<EOF
apt-get update -y
apt-get install -y --no-install-recommends sudo
echo 'Creating ${USER_NAME} group.'
addgroup ${USER_NAME}
echo 'Creating ${USER_NAME} user.'
adduser --ingroup ${USER_NAME} --gecos "my_portscanner user" --shell /bin/bash --no-create-home --disabled-password ${USER_NAME}
echo 'using sudo'
usermod -aG sudo ${USER_NAME}
echo "${USER_NAME} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
rm -rf /var/lib/lists
EOF

COPY --from=devcontainer --chown=${USER_NAME}:${USER_NAME} ["/app/dist/my_portscanner-${VERSION}-py3-none-any.whl", "/app/dist/my_portscanner-${VERSION}-py3-none-any.whl"]

# install app
RUN <<EOF
python3 -m pip install /app/dist/my_portscanner-${VERSION}-py3-none-any.whl
EOF

USER ${USER_NAME}

ENTRYPOINT ["sudo", "my_portscanner"]

ポイント解説

  1. sudoをインストール
  2. 新しいユーザsigmaを作成する。この際,HOMEディレクトリは作成せず,ログインパスワードなしにしている。
  3. sigmaユーザがsudoを使えるようにsudoグループに追加する。
  4. sudo時のパスワードを求められるとめんどくさいのでpasswordなしでsudoできるように設定
  5. USERで sigmaをコンテナ実行ユーザにする。
  6. ENTRYPOINTをsudo付きにする。

最後に

もっといい方法がありましたらコメント欄等でご指摘いただけると幸いです。

2
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?