問題があります。非常に古いシステム(UNIX)を新しいシステムに接続したいです。以前のシステムはscp
ハードコードされたユーザーとしてログインし、oldsystemaccess
新しいサーバーのwebrootサブディレクトリにファイルをコピーしました/var/www/newserver/test/import
。新しいシステムはApacheの高度な設定なしでUbuntu 18 LAMPスタックを実行しており、www-data
同じグループにあるかのように実行されます。
新しいサーバーでこのユーザーをグループoldsystemaccess
に追加し、ディレクトリの権限をに変更しました。この変更後、ファイルは新しいシステムに正常にコピーされました。www-data
sudo usermod -aG www-data oldsystemaccess
rwxrwxr-x
sudo chmod 775 /var/www/newserver/test/import
今私が解決しようとしている実際の問題は、oldsystemaccess
私のPHPスクリプトがファイルを所有している場合、ファイルを正しく読み取ったり処理したりすることができず、古いサーバーからファイルをコピーする方法を変更できないため、次の場合に実行できないことです。ファイルがコピーされます。その他のコマンド。ディレクトリに作成されたファイルを作成したユーザーとグループが所有するようにimport
変更する方法を探しています。www-data
crontab
1分ごとに実行される項目を追加しましたが、chown -R www-data:www-data /var/www/newserver/test/import
これが本当に悪い解決策のようです。umask
似ていますが、ファイルの所有権があるものを探しています。
答え1
一部のシステムでは(FreeBSDなどの場合)ウィキペディア)、setuid
ディレクトリのビットは私が望む動作を持つようになります(協会)。しかし、私が実行しているUbuntuのデフォルトの動作ではないため、私が経験している問題の解決策は次のとおりです。
このグループは、新しいファイルを所有するようにこのsetgid
ビットを設定するために使用されます。chmod
www-data
sudo chmod 2775 /var/www/newserver/test/import
明らかに、ファイルをコピーしたスクリプトには、権限のあるファイルが生成されるようにする一連の権限がありましたが、umask
質問するときにこれを見落としました。007
rwxrwx---
ディレクトリ内のファイルの書き込み許可ビットを設定する必要がある場合は、ACLを設定して、そのファイルを所有するグループが自動的にファイルを書き込むことができます。
sudo setfacl -d -m group:www-data:rwx /var/www/newserver/import