ファイルのアップロード後に予期しないファイルのアクセス許可に関する問題についていくつかのスレッドを見ました。私は運が悪かったので彼らの解決策を試しました、私は自分のやり方で問題を提起しなければなりません。
Debian6でNginxをnobody:nogroup
として実行します。ルートWebフォルダー/usr/share/nginx/html
をnobody:nogroup
に変更しました。現在、WinSCPを使用してファイルをマシンにアップロードしていますが、root
アカウントを使用しています。新しいディレクトリを作成したり、新しいファイルを更新したりすると、所有権はroot:root
になります。私はLinuxの世界に不慣れです。現在、サーバーに何かをアップロードした後、シェルを開いてwwwrootの所有権を変更しています。
ファイルをrootとしてアップロードし、ファイルとディレクトリをnobody:nogroup
に保つためのベストプラクティスは何ですか?誰もアカウントにしないパスワードを設定し、このアカウントを使用してファイルをアップロードしますか?
アップロードディレクトリchgrp nogroup UPLOAD_DIR
のグループを変更してグループIDを設定することができますchmod g+s UPLOAD_DIR
-このディレクトリに作成されたファイルにはグループnogroup
があります。 umask 002
を使用してデフォルトの権限を設定でき(おそらくWinSCPセッションを開始するとき?)、すべてのファイルにグループのrw
権限が与えられます。所有者は引き続きrootになりますが、Nginxプロセスはnogroup
メンバーシップを介してファイルを管理できる必要があります。
新しいファイルの自動解決策を知りません。ただし、所有権を手動で変更し続ける必要がある場合は、さまざまなWinSCP機能を利用して作業を楽にすることができます。
WinSCPでは、GUIで 所有権の変更 が許可されます(ただし、OpenSSHサーバーを使用する場合は、数値のGID/UIDを使用する必要があります)。
または、WinSCP自体からchown
コマンドを実行して、個別のシェル端末を開かないようにすることもできます。 WinSCPで カスタムコマンドchown nobody:nogroup .
を設定して、これを高速化することもできます。
コマンドにキーボードショートカットを割り当てて、これをさらに簡単にすることもできます。
ファイルを更新する場合は、転送設定を無効にしてください一時ファイル名に転送これにより、転送ごとに新しいファイルが効果的に作成されます(デフォルトでは100 KiBを超えるファイルの場合)のみ)。無効にすると、WinSCPは既存のファイルのみを更新するため、所有権は保持されます。
https://winscp.net/eng/docs/resume#automatic
https://winscp.net/eng/docs/ui_pref_resume