Potrzebuję wget
czegoś (powoduje skompresowanie pliku w cwd), następnie muszę go wyodrębnić, a następnie wykonać kilka operacji kopiowania / przenoszenia / modyfikacji i być może w końcu wykonanie skryptu (z pobranego archiwum).
Teraz wszystkie te zadania, bezpośrednio ( wget
wyodrębnij itp.) Lub pośrednio (uruchamiając skrypt), powodują tworzenie plików i katalogów (wszystkie w bieżącym katalogu roboczym). Robię to wszystko jako root
(nie ma możliwości, aby zrobić to z końcowym, pożądanym użytkownikiem).
Problem polega na tym, że wszystko, co powstało w tym procesie, jest własnością użytkownika root lub użytkownika sudo. Kiedy skończę (a czasem w połowie), muszę wydać szereg poleceń chmod
i chown
, aby wszystko naprawić.
Byłoby miło, gdyby w jakiś sposób mógł powiedzieć systemowi, że „Odtąd wszelkie pliki lub katalogi, które utworzysz, gdy wydam polecenia jako root, tworzysz z takimi i takimi prawami własności i uprawnieniami”.
chown
przesyłać pliki do innego użytkownika, a ustawienie domyślne w ten sposób może powodować błędy użytkownika, dając uprawnienia innym użytkownikom, bez wiedzyroot
użytkownika.Jest inny sposób, jak sądzę, dość elegancki. Korzystanie z instalacji (1)
Na przykład zabbix-agentd potrzebuje podfolderu wewnątrz / var / run, ale ostatnie dystrybucje używają tmpfs dla / var / run, więc katalog nie przetrwa ponownego uruchomienia. Rozwiązałem go, tworząc plik / etc / sysconfig / zabbix-agentd zawierający:
źródło
-m 0700
na przykład. Odpowiedź.install
tworzy katalog, a następnie zmienia właściciela / grupę. Jest więc krótki czas, w którym katalog nie ma określonego właściciela / grupy. W niektórych kontekstach może to mieć znaczenie.W systemach uniksowych nowo utworzone pliki i katalogi są własnością właściciela procesu, który je utworzył. Standardowe narzędzia zwykle nie mają opcji zmiany właściciela utworzonych plików.
Zmienne z UID i GID pierwotnego użytkownika
Jeśli kilkakrotnie uruchamiasz niektóre polecenia, możesz użyć zmiennych
$SUDO_UID
i$SUDO_GID
odnieść się do użytkownika, który wywołałsudo
:Automatyczne pobieranie listy utworzonych plików i katalogów
Jeśli chcesz automatycznie uzyskać listę utworzonych (i ewentualnie zmodyfikowanych) plików i katalogów, możesz uruchamiać swoje polecenia pod
strace
nadzorem opartym naptrace()
wywołaniu systemowym:lub możesz użyć na przykład Installwatch, który jest oparty na
LD_PRELOAD
mechanizmie.Pomysły na dalszą pracę
W oparciu o metody wspomniane powyżej możliwe jest stworzenie narzędzia, które automatycznie zmienia właściciela i ewentualnie prawa dostępu do utworzonych / zmodyfikowanych plików. Użycie może być tak proste, jak:
źródło