Zainstalowałem Debiana w VirtualBox (dla różnych eksperymentów, które zwykle zepsuły mój system) i próbowałem uruchomić skrypt addonu VirtualBox dla gości. Zalogowałem się jako root i próbowałem uruchomić autorun.sh
, ale otrzymałem „Odmowę zezwolenia”. ls -l
pokazuje, że skrypt ma prawa do wykonywania.
Przepraszam, że nie mogę skopiować danych wyjściowych - VirtualBox absolutnie nie ma sensu bez dodatku, ponieważ ani współdzielony katalog, ani współdzielony schowek nie działają. Ale dla pewności skopiowałem prawa ręcznie:
#ls -l ./autorun.sh
-r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh
Na początku myślałem, że może być tak, że skrypt wykonuje coś, co spowodowało błąd. Próbowałem zastąpić /bin/sh
czymś takim #/pathtorealsh/sh -xv
, ale nie otrzymałem danych wyjściowych - wygląda na to, że skrypt nie może nawet zostać wykonany.
Nie mam nawet pojęcia, co może to spowodować.
źródło
mount | grep noexec
?noexec
zestaw. Prawdopodobnie możesz to opublikować jako odpowiedź; tymczasem próbuję ponownie zamontować go z uprawnieniami do wykonywania. Hm, nawet nie wiedziałem, że system plików może mieć taki atrybut.sh ./autorun.sh
co się stanie?Odpowiedzi:
Być może twój system plików jest zamontowany z
noexec
zestawem opcji, więc nie możesz uruchamiać żadnych plików wykonywalnych. Z dokumentacji montażu :Próbować:
Następnie sprawdź, czy twój system plików jest wymieniony na wyjściu.
Jeśli tak, możesz rozwiązać ten problem, ponownie instalując system plików z
exec
opcją:źródło
noexec
Otrzymywałem bardzo dziwną wiadomość, która okazała się być następująca : „sh: 75: script.sh: Odmowabash -x ./filename.filetype
powinno działać. Zadziałało, gdy odmówiono mi uprawnień jako użytkownik root.źródło
noexec
opcją montowania, to nie zadziała, ponieważ może być więcej plików do wykonania; tzn.filename.filetype
wstrzymałby się, próbując uruchomić inne pliki z tego samego systemu plików. Możesz to łatwo sprawdzić za pomocą uproszczonego testu: utwórz dwuwierszowy skrypt, który wypisuje „cześć”, a następnie po prostu wywołuje się ponownie, ale nie ustawia praw do plików wykonywalnych. Wykonanie go-x
spowoduje wydrukowanie „cześć”, ale wówczas rekurencyjna linia wywołania spowoduje błąd.Moim rozwiązaniem tego problemu jest użycie źródła . Byłem na wolumenie bardzo ważnych danych. Ten wolumin jest montowany jako noexec. Mam prosty skrypt powłoki, który jest wykonywalny, ale mam problem z uprawnieniami.
Testowane tylko na moim Ubuntu.
źródło