Wpis z mikrobloga

#linux #git
Mam takie coś w hooku, co ma rzekomo izolować bezpiecznie tymczasowy katalog:

TARGET_USER='git'
TARGET_CMD='/bin/bash' # but it can be any command
NEWTMP="$(mktemp -d)" # securely create a new empty tmp folder

chown "root:$TARGET_USER" "$NEWTMP"
chmod 770 "$NEWTMP"

unshare --mount -- /bin/bash -c "mount -o bind,noexec,nosuid,nodev '$NEWTMP' /tmp && sudo -u '$TARGET_USER' $TARGET_CMD"
Problem jest taki:

remote: chown: changing ownership of '/tmp/tmp.Zo6g31fp6f': Operation not permitted
remote: unshare: unshare failed: Operation not permitted

Nie mam pojęcia co z tym zrobić.

Jeszcze rsync kopiujący do docelowego katalogu:

rsync -pogtuva --delete --delete-excluded --recursive "$NEWTMP/" "$2"
...też gada o uprawnieniach:

remote: rsync: chgrp "/var/www/domena.ma/." failed: Operation not permitted (1)
remote: rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1189) [sender=3.1.3]
Jakie uprawnienia? W ogóle o co chodzi?
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@plushy: Tym hookiem wrzucam projekt w odpowiednie miejsce na serwerze, żeby odpalić projekt.
rsync jest po to, żeby sensownie aktualizować projekt.

A co zły pomysł?

Ja takie rozwiązanie znalazłem w sieci ale nie do końca działa jak widać.
  • Odpowiedz
@secondreality:
Ogólnie uruchamiam poprzez lokalne git push, które uruchamia hook post-receive na serwerze.

Sprawdziłem że właścicielem katalogu NEWTMP="$(mktemp -d)" jest git.
To chyba użytkownik git odpala ten skrypt?

Albo powiedz jak to sprawdzić.
  • Odpowiedz