/ var / tmpフォルダの内容を一覧表示したり、PHPで実行されたBashスクリプトからファイルを生成したりすることはできません。

/ var / tmpフォルダの内容を一覧表示したり、PHPで実行されたBashスクリプトからファイルを生成したりすることはできません。

ここでもこの質問を投稿しました。

目的:/ var / tmpフォルダのCUPSサーバーから生成されたスプールデータを削除できるプライベートLinuxシステム(インターネットに接続されていないローカルシステム)でWebフックをトリガーしたいと思います。

これを達成するために

方法1まず、デフォルトのCUPS設定ファイルを確認し、そこでファイルを編集しました。 /etc/cups/cupsd.confのような行

PreserveJobFiles No

そして/etc/cups/cups-files.conf

RequestRoot /var/tmp

PreserveJobをnoに変更すると、印刷が完了した後にカップスプールファイルが自動的に削除されます。

ところで、1番の方法がないので、2番の方法を試してみました。

方法2:ApacheとPHPがインストールされたUbuntu 22.04システムがあります。新しい仮想ホスト「example.io」を設定し、DocumentRootを/var/www/example.io/に設定しました。

このディレクトリには、Webブラウザにコンテンツを正常に提供するindex.phpファイルがあります。

このindex.phpファイルで、私のホームディレクトリにあるbashスクリプトを呼び出します。 Bashスクリプトには次のコマンドが含まれています。

#!/bin/bash

echo "Hello, I am above the ls command"
ls /var/tmp/

echo "Hello, I am below the ls command"
touch example.txt

rm -rf /var/tmp/cn*

echo "I am below the touch command"

Bashスクリプトが実行されており、Webブラウザでechoステートメントの出力を表示できます。ただし、/ var / tmpフォルダの内容を一覧表示したり、そのフォルダにファイルを作成したりすることはできません。

以下は、試しても問題は解決しなかった変更です。

  1. bashスクリプトでls&touchを使用して相対パスと絶対パスを試しました。

  2. sudoersファイルの「%sudo」行の下に「www-data」ユーザーを追加しました。

www-data ALL=(ALL) NOPASSWD: /home/example/script.sh                                                        
www-data ALL=(ALL) NOPASSWD: /var/tmp
  1. 「www-data」ユーザーが所有するようにbashスクリプトの権限を変更しました。
drwxrwxrwx  5 www-data www-data    6 Jun  6 08:39 script.sh
  1. "www-data" ユーザーがアクセスできるように /var/tmp フォルダの権限を変更しました。
drwxrwxrwt  5 www-data www-data    6 Jun  6 08:39 tmp
  1. /var/tmpフォルダから固定ビットを削除し、その権限を777に設定しました。
drwxrwxrwx  5 www-data www-data    6 Jun  6 08:39 tmp

bashスクリプトとその親ディレクトリに対するフルアクセス許可を与えました。

コマンドラインから確認するときは、www-dataユーザーを使用して/ var / tmpにファイルを一覧表示して生成できます。

root@cups-lxc-at-ct:~/instantpost# sudo -u www-data touch /var/tmp/cnijb
root@cups-lxc-at-ct:~/instantpost# sudo -u www-data ls /var/tmp
cnijb
systemd-private-329d46999f134f4a9470ce054ae837e9-apache2.service-iHoe2E
systemd-private-329d46999f134f4a9470ce054ae837e9-systemd-logind.service-lGcUhs
systemd-private-329d46999f134f4a9470ce054ae837e9-systemd-resolved.service-Rqvc7r

/var/tmpのACLは次のとおりです。

root@cups-lxc-at-ct:~/instantpost# getfacl /var/tmp
getfacl: Removing leading '/' from absolute path names
# file: var/tmp
# owner: root
# group: root
# flags: --t
user::rwx
group::rwx
other::rwx

AppArmorを確認しました。

sudo apparmor_status

私はこの出力を得る

root@cups-machine:~# sudo apparmor_status                       
apparmor module is loaded.
11 profiles are loaded.
11 profiles are in enforce mode.
   /usr/bin/man
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/NetworkManager/nm-dhcp-helper
   /usr/lib/connman/scripts/dhclient-script
   /{,usr/}sbin/dhclient
   lsb_release
   man_filter
   man_groff
   nvidia_modprobe
   nvidia_modprobe//kmod
   tcpdump
0 profiles are in complain mode.
0 profiles are in kill mode.
0 profiles are in unconfined mode.
0 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
0 processes are in mixed mode.
0 processes are in kill mode.

=>興味深いことに、/usr、/usr/example、/tmp/example、/home/exampleなどの他のフォルダで同じ方法をテストし、正常に動作しました。

既定の /var/tmp フォルダでこの問題が発生する理由を理解するのが困難です。どんな洞察力や提案でも大変感謝いたします。

ベストアンサー1

おすすめ記事