Jogosultságok és timestamp megváltoztatása

Fórumok

(bizonytalan vagyok, hogy ez linux-kezdő, vagy haladó téma)

Sziasztok. Adott egy teszt szerver, ezen Amazon Linux fut. A szerveren a /var/www, és alatta minden web:web tulajdonában áll, setgid bit belőve minden könyvtárra, az oldal feltöltésére jogosult userek hozzárendelve a web csoporthoz.

A PhpStorm deploy funkcióját használom a fájlok feltöltésére, sftp-vel, a saját useremet használva. Egy érdekes hibát tapasztalok, idézem: "Failed to change timestamp of the file ...". Részletes logokból kiderül, hogy Permission denied a hiba oka.

A probléma akkor jön elő, ha a fájl már létezik, a tulaj nem én vagyok. A módosítás megtörténik sikeresen, de a fenti hibát is kapom. Feltételezem hogy a timestamp változtatást gond nélkül meg kellene hgoy tudjam tenni akkor is, ha nem én vagyok a tulaj, mivel helyben a szerveren touch paranccsal sikerült.

Egyébként workaround van, ki tudom kapcsolni a "Preserve timestamps" opciót a deploy options-ben, de furdalja az oldalam a téma :)

Az sftp protokollban, a PhpStorm megoldásában, vagy bennem van a hiba? :)

Hozzászólások

Feltételezem hogy a timestamp változtatást gond nélkül meg kellene hgoy tudjam tenni akkor is, ha nem én vagyok a tulaj, mivel helyben a szerveren touch paranccsal sikerült.

Ez nem így van. A touch parancs két üzemmóddal rendelkezik, az egyiknél "hozzányúl" a fájlhoz, és az aktuális időpontra változtatja a rendszer a timestampet - ehhez elég írásjog, hiszen ha bárki beleír a fájlba, pont ez történik. A másik üzemmódban konkrét fix időpontra változik a timestamp - ehhez viszont tulajdonosnak kell lenni.

man utime:

If times is NULL, then the access and modification times of the file are set to the current time.
Changing timestamps is permitted when: either the process has appropriate privileges, or the effective user ID equals the user ID of the file, or times is NULL and the process has write permission for the file.