Loguję się do systemu Linux, używając swojego identyfikatora, np. „A”. następnie wykonam sudo do użytkownika „B” bez wprowadzania hasła, a następnie skopiuję niektóre pliki z folderu X do folderu Y, używając użytkownika SUdo „B”.
Próbuję wykonać tę czynność za pomocą skryptu powłoki, aby umieścić ją w cronjob ... jak dotąd bez powodzenia.
Każda pomoc w tym zakresie będzie naprawdę wdzięczna ...
to właśnie próbuję ...
#!/bin/sh
sudo /usr/local/sbin/deploy
cp -r /tmp/test /tmp/deploy
/tmp/deploy
?Odpowiedzi:
Musisz również uruchomić
cp
zsudo
. W przeciwnym raziedeploy
tworzy pliki z właścicielem,B
a następniecp
nie może ich odczytać (ponieważ powłoka zwraca użytkownika pierwotnemu użytkownikowi po zakończeniusudo
skryptowania).Możesz też uruchomić za
chmod
pomocą przycisku,sudo
aby pliki były czytelne,A
a następnie wykonać kopię.źródło
sudo uruchamia polecenie tylko w wierszu poleceń, a następnie wraca z powrotem do konta wywołującego. jeśli chcesz uruchomić wiele poleceń jako inny użytkownik, lepiej byłoby utworzyć skrypt i uruchomić ten skrypt za pomocą sudo.
źródło
sudo to interaktywne polecenie. Używanie go w zadaniach crona nie ma sensu. Utwórz skrypt superużytkownika, aby skopiować wszystkie pliki, a następnie zmień własność, lub uruchom skrypt przez wymaganego użytkownika.
źródło