Main Logo
hero-background.jpg

Ubuntu root以外でソフトの起動

rootユーザー以外でdockerの起動や、www-dataフォルダーの編集方法

rootユーザーなら起動できる。rootじゃなきゃ動かないを解決するにはgroupに追加すれば実行できます。


Ubuntuユーザー設定

Ubuntuのroot以外で操作する際必要な設定。
groupに特定のユーザーを追加します。

環境

  • Ubuntu 22.04 LTS

基本コマンド

ユーザー名

ここではユーザー名はuserAとします。 環境合わせて置き換えて実行してください。

グループの確認

現在のユーザーの所属グループを確認するには、以下のコマンドを使用します。
groups userA
出力例
userA adm cdrom sudo dip plugdev lpadmin sambashare docker www-data
システム上のすべてのグループを表示するには、以下のコマンドを使用します。
cat /etc/group
出力例
root:x:0:
data:x:1:
... (省略)
userA:x:1000:
docker:x:999:userA
www-data:x:33:userA

ユーザーの確認

現在のユーザー名を確認するには、以下のコマンドを使用します。

whoami
出力例
userA

システム上のすべてのユーザーを表示するには、以下のコマンドを使用します。

cat /etc/passwd
出力例
root:x:0:0:root:/root:/bin/bash
... (省略)
userA:x:1000:1000:userA,,,:/home/userA:/bin/bash

ユーザーをグループに追加する方法

既存のユーザーを既存のグループに追加するには、usermodコマンドを使用します。 ユーザーuserAdockerグループに追加する場合

sudo usermod -aG [グループ名] [ユーザー名]
sudo usermod -aG docker userA

変更を有効にするには、一度ログアウトしてから再度ログインするか、newgrpコマンドを使用します。

newgrp [グループ名]

ユーザーをグループから削除する方法

ユーザーをグループから削除するには、deluserコマンドを使用します。 ユーザーuserAdockerグループから削除する場合

sudo deluser [ユーザー名] [グループ名]
sudo deluser userA docker

Dockerの非rootユーザーでの操作

Dockerをroot以外のユーザーで操作するには、そのユーザーをdockerグループに追加する必要があります。

ユーザーをdockerグループに追加

sudo usermod -aG docker userA

このコマンドを実行した後、変更を有効にするために一度ログアウトしてから再度ログインするか、以下のコマンドを実行してください。

newgrp docker

グループ追加の確認

以下のコマンドで、現在のユーザーがdockerグループに属しているか確認できます。

groups userA

dockerが表示されていれば、非rootユーザーでDockerコマンドを実行できるようになります。

NginxのWebルートディレクトリ (/var/www/html) の操作権限

NginxのデフォルトのWebルートディレクトリは/var/www/htmlです。このディレクトリを非rootユーザーで操作するには、適切な権限を設定する必要があります。
方法は2つあります。

  • ディレクトリの所有者を変更する
  • ユーザーをグループに追加する。 nginx,apacheのphpでも操作する可能性があるため、ユーザーをグループに追加する方がいいと思います。
1. ディレクトリの所有者を変更する
sudo chown -R userA:userA /var/www/html

このコマンドにより、/var/www/htmlディレクトリとその中のすべてのファイルの所有者が現在のユーザーに変更されます。これにより、sudoなしでファイルの作成、編集、削除が可能になります。

2. ディレクトリのグループを変更し、グループに書き込み権限を付与する

Webサーバー(Apache)(Nginx)は通常www-dataユーザーで実行されます。ユーザーをwww-dataグループに追加し、ディレクトリにグループ書き込み権限を付与することで、ユーザーとWebサーバーの両方からアクセスできるようにします。

nginx

Nginxはwww-dataではなくnginxの場合もあります。

sudo usermod -aG www-data userA
sudo chown -R userA:www-data /var/www/html #<--ここは人によって異なる。userAではなくrootの場合やwww-dataの場合も
sudo chmod -R 775 /var/www/html

sudo usermod -aG www-data userAで現在のユーザーをwww-dataグループに追加します。その後、sudo chown -R userA:www-data /var/www/htmlでディレクトリの所有者を現在のユーザーに、グループをwww-dataに変更します。最後に、sudo chmod -R 775 /var/www/htmlで所有者とグループに読み書き実行権限を、その他のユーザーには読み・実行権限を付与します。

まとめ

Ubuntu環境でroot以外のユーザーがDocker、Nginx、Apacheを操作するための設定方法を説明しました。
これらの設定を行うことで、rootユーザー以外でも操作することができます。

関連記事

コメントを読み込み中...