Pracuję jako użytkownik i chciałbym utworzyć archiwum tar, które po rozpakowaniu (przez roota) wyodrębnia swoje pliki z prawami roota (w przeciwnym razie root musiałby ręcznie zmienić własność każdego pliku, po wyodrębnieniu plików) do miejsca docelowego).
Znalazłem, fakeroot
co wydaje się dokładnie to robić. Ale nie jestem w stanie znaleźć składni, której muszę użyć do utworzenia mojego archiwum.
Jak mogę utworzyć archiwum tar.xz, aby pliki miały własność root po rozpakowaniu przez root?
do something with fakeroot ...
tar cfpJ foo.tar.xz foo/
files
permissions
tar
użytkownik1968963
źródło
źródło
tar --owner=root --group=root cfpJ files.tar.xz files/
daje mi błądtar: You must specify one of the
-Acdtrux 'lub--test-label' options Try
tar --help' lubtar --usage' for more information.
-
krótkiego ciągu opcji:tar --owner=root --group=root -cfpJ ...
tzn .-cfpJ
NiecfpJ
.tar --owner=root --group=root -cfpJ files.tar.xz files/
daje mi kolejny błąd:tar: files.tar.xz: Cannot stat: No such file or directory tar: Exiting with failure status due to previous errors
a ponadto tworzy plik o nazwiepJ
.f
na końcu (ponieważ ma to bardziej sensowny, intuicyjny) i niski, a oto dostaję taką samą awarię z-cfpJ
ALE-cpJf
działa.Fakeroot
Narzędzie fakeroot lub nowsze narzędzie fakeroot-ng (ten sam cel, inna technika implementacji) uruchamia program i udaje, że program działa jako root i że wywołania systemowe są
chown
udane. Tylko program uważa, że wywołania te się powiodły, nic nie jest odzwierciedlone w systemie plików (nie może być inaczej, ponieważfakeroot
nie ma żadnych dodatkowych uprawnień). Jeśli jednak program zmieni własność pliku, a następnie podejmie pewne działania w oparciu o własność tego pliku, może to zmienić zachowanie programu.Typowy sposób na uzyskanie użytecznej pracy z fakeroot poprzez uruchomienie środowiska fakeroot, w którym zdarzają się:
Przykład:
Musisz użyć pojedynczego wywołania
fakeroot
, ponieważ między wywołaniami nie ma pamięci.Przestrzenie nazw systemu Linux
Dla kompletności wspomnę, że jeśli masz jądro Linuksa ≥3,8, to przestrzenie nazw są innym sposobem na stworzenie środowiska root- pretend . Wsparcie dla użytkowników nie jest jeszcze dostępne, więc nie będę wchodził bardziej szczegółowo.
Zamontuj archiwum
Innym sposobem rozwiązania problemu jest zamontowanie archiwum jako katalogu. Możesz użyć archivemount , który może modyfikować kilka formatów archiwów poprzez libarchive , w tym skompresowaną tar.
źródło
archivemount
, ale nadal wymaga podniesienia uprawnień, a nawet jeśli użytkownik należy do zaufanej grupy, której wolno montować i odmontowywać, proces kończy się niepowodzeniemchown
, więcfakeroot
należy użyć narzędzi innych firm, takich jak lub przestrzenie nazw , też.