質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.83%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Q&A

解決済

Apacheのumask値を変更したい

Rod
Rod

総合スコア1

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

1回答

0グッド

0クリップ

334閲覧

投稿2023/03/26 02:25

実現したいこと

Apacheで生成したファイルのパーミッションを変更したい。

前提

現在Webサーバの構築に調整しているのですがPHPのfile_put_contents()やZipArchive()などをつかってファイルの生成、Zip解凍を行ったところ
所有者がApacheとなりパーミッションが0644となってしまったためFTPユーザーで出力ファイルの削除等ができない状況です。
調べたところによるとApacheのumask値を変更すれば良いとのことで色々試してみたものの一向に変化がありません。
どなたか解決方法がわかる方が居られましたらお力をお貸しください。

環境とサーバ状況

下記の通りです。

# cat /etc/redhat-release CentOS Stream release 8 # httpd -v Server version: Apache/2.4.37 (centos) Server built: Jan 31 2023 21:56:20 # systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/httpd.service.d └─override.conf /usr/lib/systemd/system/httpd.service.d └─php-fpm.conf Active: active (running) since Sun 2023-03-26 10:26:42 JST; 27min ago Docs: man:httpd.service(8)

試したこと

まずは適当にググった結果

/etc/sysconfig/httpd

に「umask 002」を追記せよと出てきたので試そうと思ったのですが
そもそもファイルが無い状況だったのでさらに調べたところ
CentOS7以降、systemdで管理されているということを知りまして
下記サイトの内容をそのまま試したがApacheの挙動に変化はありませんでした。(その後ファイルを削除)
https://www.dondari.com/Apache%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%AEumask%E5%80%A4%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B-systemd%E7%B7%A8

さらに調べていくと下記のサイトにサービスファイルの場所の確認方法とオーバーライドの方法について記載があったため
https://qiita.com/natsu_san/items/f6618c545a30a29d30a0

参考にしてumask変更を設定(ついでに文字コードも変更)

# systemctl edit httpd [Service] UMask=002 Environment=LANG='ja_JP.UTF-8'

念のため再起動してエラーが無いか確認

# journalctl -eu httpd.service Mar 26 10:13:07 160-251-97-158 systemd[1]: Stopping The Apache HTTP Server... Mar 26 10:13:08 160-251-97-158 systemd[1]: httpd.service: Succeeded. Mar 26 10:13:08 160-251-97-158 systemd[1]: Stopped The Apache HTTP Server. Mar 26 10:13:08 160-251-97-158 systemd[1]: Starting The Apache HTTP Server... Mar 26 10:13:08 160-251-97-158 httpd[2705631]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::1:a0ff:fefb:619e. Set the 'ServerName' directive globally to suppress this message Mar 26 10:13:10 160-251-97-158 systemd[1]: Started The Apache HTTP Server. Mar 26 10:13:10 160-251-97-158 httpd[2705631]: Server configured, listening on: port 443, port 80 Mar 26 10:24:16 160-251-97-158 systemd[1]: Stopping The Apache HTTP Server...

特にsystemdに関するエラーも出ておりませんでした。

ここ3日ほど解決策を探し続けているのですがいくらやっても変わりません。。。
どうかお知恵をお貸しください。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

0

ベストアンサー

PHPのfile_put_contents()やZipArchive()

ということであれば、PHPでファイル作成前に、umask関数で`umask値を変更すれば良いかと思います。
umask 2 だと、作成されたファイルは 664 になりますが、それで良いのでしょうか?

投稿2023/03/26 03:31

otn

総合スコア81800

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

otn

2023/03/26 08:42

> 調べたところによるとApacheのumask値を変更すれば良いとのことで が正しいかどうかは、PHPをどうやって起動させているかによります。 例えば、手元の環境では、php-fpmで動いているのでApacheのumask値は影響しません。 なお、プロセスのumask値は grep Umask /proc/プロセスID/status でわかります。
Rod

2023/03/26 11:11

> 例えば、手元の環境では、php-fpmで動いているのでApacheのumask値は影響しません。 そうだったんですね!ありがとうございます!! php-fpmにumask値を設定したら見事に反映されました! ありがとうございます!

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.83%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

systemd

systemdは、Linuxの起動処理及びシステム管理を行う技術です。他にも多くのサービス管理機能を備えており、ユーザープロセスを並列に起動しシステムの起動処理に要する時間を短縮できるなどの特徴があります。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。