Jenkinsを使用しており、Jenkinsディレクトリのファイルを次の場所にコピーしたいと思います。私の世界ユーザーディレクトリにありますが、実行するときなど、この問題を解決する方法がわかりません。
cp build/versions/*.info /home/*minecraft*/www/files/Minecraft/versions
「権限が拒否されました」というメッセージが表示されます。
答え1
伝統的なアプローチは、グループを使用することです。ユーザーJenkinsがMinecraftグループ(ユーザーMinecraftに対応するグループ)に追加されます。その後、Minecraft-userはchmod g+w ~minecraft/some_directory
Minecraft-groupに関連ディレクトリへの書き込み権限を付与します。もちろん(ルートの場合)、このディレクトリでのみ機能するカスタムグループ(新しいグループMinewritersや他のグループ)を作成することもできます。 MinecraftユーザーがMinecraftグループの管理者である場合は、gpasswd -a user group
(gpasswd -a jenkins minecraft
)を使用してユーザーをグループに追加できます。それ以外の場合、rootはユーザーをグループに追加する必要があります。
もう少し複雑ですが、より新しい、より良い、より洗練されたアプローチは、アクセス制御リスト(ACL)を使用することです。 ACLは、ファイルまたはディレクトリの所有者が特定のユーザーおよび/またはグループにファイルまたはディレクトリへのアクセスを許可できます。 Minecraft ユーザーは、関連ディレクトリの「アクセスリスト」に jenkins を追加し、そのディレクトリに jenkins 書き込み権限を付与します。
setfacl -m user:jenkins:rwx ~minecraft/some_directory
これにより、ユーザージェンキンに新しいファイルの作成(w)、ls(r)を使用してコンテンツを一覧表示し、ディレクトリ変更(x)を許可します。
+++
ファイルとディレクトリへのアクセスは、そのディレクトリへのユーザーアクセスによってある程度異なります。ユーザー jenkins がユーザー Minecraft のホーム ディレクトリ (/home/minecraft) に入らない場合、そのディレクトリの下のディレクトリにアクセスできません。 chmod
特定のディレクトリに対する権限が付与されていても同様です。setfacl
したがって、ユーザーMinecraftは暗黙的または明示的にユーザーjenkinsを提供する必要があります。少なくともホームディレクトリへの実行(x)権限(ホームディレクトリとjenkinsディレクトリ間のすべてのディレクトリへの書き込みを許可する必要があります)ディレクトリに対する権限を実行して、ディレクトリに「入力」する権限を付与します。使用cd
)。ほとんどのユーザーにも読み取り権限(r)が必要です。これは、ディレクトリの内容の一覧表示などのコマンドを使用する権限を付与するため、自分自身をターゲットにすることができls
ます。
Minecraftホームディレクトリの権限がすでに「rwxr-x---」または「rwxr-xr-x」(通常)であれば十分です...「rwx----」であれば必要です。変更 少なくとも Minecraft グループのメンバーまたはユーザー jenkins アクセス権を付与するアクセス権。
+++
chmod a+t ~minecraft/some_directory
Jenkinsが書き込みを許可する必要があるディレクトリ(たとえば)に固定ビットを追加するのも良い考えです。これにより、そのディレクトリに対する書き込み権限を持つユーザーがそのディレクトリに属するファイルを削除するのを防ぎます。その他ユーザー(ファイルを削除できるディレクトリ所有者を除く)