権限を変更せずにrysncファイルとフォルダを場所にコピーする

権限を変更せずにrysncファイルとフォルダを場所にコピーする
  • 私はrsyncを使ってnginxが提供するいくつかの静的HTMLを配布しています。
  • rysncを実行しているユーザーは「jenkins」です。
  • nginxはwww-dataグループを使用してこのフォルダにアクセスします。
  • Jenkinsはwww-dataのメンバーです。

ssh問題のUbuntu 14.04サーバーに入り、実行しました。

sudo chown -R jenkins:www-data /home/jenkins/thesite

その後、別のコンピュータで実行します。

rsync -rtzh --delete --omit-dir-times _site/ jenkins@the_server.com:/home/jenkins/thesite

完了すると、一部(すべてではない)ファイルグループがJenkinsに設定されます。したがって、nginxアクセスできません。

私が変更したファイルにのみ権限の問題があるのではなく、Jekyllを使用してファイルを作成していますが、これは影響を及ぼす可能性があります。

Windows の世界では、親フォルダの権限を設定し、サブフォルダを継承するように指示します。 Linuxにも似ていますか?それとも私が何か愚かなことをしているのでしょうかrsync

答え1

これには少なくともいくつかの方法があります。しかし、まずLinux/Unixの権限の世界がWindowsの世界とどのように対応するかを説明します。

Windowsには継承可能な権限がありますが、Linuxシステムは伝統的にそうではありません(ただし、ACLを使用できるため、今は無視します)。 Linux権限は、所有者、グループ、その他(「その他」)の3つの部分に分けられます。それぞれ読み取り、書き込み、実行(ファイル)/検索(フォルダ)が可能です。ファイルの所有者はファイル作成者です。所有者は自分が属するグループをグループに設定できます。

rsyncを使用すると、次のことを試して達成する必要があります。

  1. 所有者はJenkinsです。 (これは変更できないようです。)
  2. グループはwww-dataです(したがって、nginxがファイルを読み取ることができることを確認できます)。
  3. ファイル宛先の権限はユーザー:読み取り+書き込み、グループ:読み取り、その他:読み取り、フォルダに対する権限はユーザー:読み取り+書き込み+検索("実行")、グループ:読み取り+検索、その他:読み取り+検索です。必要に応じて他の権限を削除できます。

次のようにファイルを回復できるので、既存のファイルが適切であるとします。

chown -R jenkins:www-data /home/jenkins/thesite
chmod -R u+rw,g=u,g+s,o=u /home/jenkins/thesite

rsyncコマンドの場合は、Windowsファイルの権限を無視して独自の基準を適用する必要があります。

rsync -rptzh --delete --omit-dir-times --chmod=u+rw,go=rX,Dg+s _site/ jenkins@the_server.com:/home/jenkins/thesite

rsyncのフラグはchmod次のとおりです。

  • u=rw- 所有者(「ユーザー」)には(少なくとも)読み取りおよび書き込み権限があります。
  • go-rX- グループおよびその他(「その他」)の書き込み権限が削除されます。
  • Dg+s- グループ名がツリールートから継承されるように、フォルダ( "ディレクトリ")にgroup-setgidビットを追加しました。

関連情報