2009-04-07 15 views
6

Mam więc mały problem z Linuksem, geez, który nauczy mnie spędzać wiele lat na Windowsie. W każdym razie zrobiłem trochę aplikacja Java, zapakowane ładnie ze skryptem Java Usługa Wrapper, ale kiedy uruchomić ten skrypt:Odmowa dostępu do systemu Linux po chmod a = rwx

sh ./wrapper.sh console 

uzyskać pozwolenie zaprzeczył od razu. Komunikat odmowy zgody jest następujący:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied 

Mój mały plik wrapper.sh funkcjonuje w folderze MyApp/bin. myapp katalogu/bin/otoki zawiera 2 pliki:

  • wrapper-linux-x86-32
  • wrapper-linux-x86-64

Jako test Pobiegłem następującą komendę chmod :

chmod a=rwx MyApp -R 

i sprawdzeniu, że wszystko było rwx, nawet w podfolderach i próbował ponownie uruchomić skrypt, z dokładnie tego samego wyniku ... odmówiono zgody.

Ktoś ma pojęcie o tym, co mógłbym spróbować, aby uruchomić to dziecko?

Dzięki, Lancelot

+0

Jaka jest zawartość opakowania? Czy to możliwe, że wywołuje polecenie o nazwie _eval_? Mój człowiek mówi mi, że istnieje polecenie eval - konstruuj komendę, łącząc argumenty. Być może w skrypcie opakowania występuje problem. – lothar

+0

Ufam, że usunąłeś uprawnienia do publicznego zapisu dla plików i katalogów. Bardzo trudno jest pozostawić pliki lub katalogi z publicznym prawem zapisu -/tmp jest szczególnym przypadkiem i wymaga bezpiecznego zestawu bitów. –

Odpowiedz

8

Właśnie zauważyłem komunikat o błędzie odwołuje się do nazwy katalogu hosting plik:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied 

Wiemy, że jest to katalog ponieważ wspomniane „The MojaApl katalog/bin/otoki zawiera pliki 2” .

Czy możesz sprawdzić swój skrypt na przykład, gdzie używasz nazwy katalogu jako polecenia? Takich jak użycie wrappera (który jest nazwą katalogu) zamiast wrapper/wrapper-linux-x86-32 (który byłby nazwą pliku) lub podobnych błędów?

Podobne błędy pojawiają się często przy użyciu spacji w nazwach plików i zapominając cytatem powiedział nazw (prawdopodobnie nie przypadek tutaj, choć.)

W przeciwnym razie, można edytować swoje pytanie obejmują zawartość skryptu otoki ty dzwonisz?

(Nowa odpowiedź, ponieważ jest to całkowicie niezwiązane z poprzednim noexec pomysłu, i że można zatrzymać się jako odniesienie.)

+0

You da man. Dokładnie to się działo. System był zdezorientowany i próbował wykonać folder zamiast pliku. Zauważ, że gdyby moja struktura była zabezpieczona przed kulami, system nie byłby zdezorientowany. Maszyny robią tylko to, co im każemy! Dzięki milion razy moocha. – Lancelot

+0

Nie wspominaj o tym, cieszę się, że mogę Ci pomóc. –

+0

+1 za genialne parsowanie pytania :) –

0

może trzeba również przyznać wykonanie skryptu do owinięcia

chmod + x wrapper.sh

EDIT: Właśnie zauważyłem, że znajduje się w wrapper.sh folder MojaApl /EDIT

także, jeśli u upewnij się że masz

#!/bin/sh 

na górze pliku .sh, można wykonać ją tak:

.wrapper.sh

+0

Cześć Roy, kiedy robię ls -Al tutaj jest to, co drukuje dla mojego opakowania.sh: -rwxrwxrwx 1 użytkownik1 użytkownik1 19035 2009-04-07 15:32 otoki.sh – Lancelot

+0

chmod with = jest całkiem do przyjęcia, jest już ustawiony bit execute. – paxdiablo

0

Najpierw spróbuj otworzyć go w edytorze tekstowym, aby upewnić się, że masz dostęp do odczytu. Jeśli tak, to

chmod +x wrapper.sh 

I upewnij się że masz #!/bin/sh na początku skryptu

+0

Cześć Zifre, #!/Bin/sh jest właśnie sprawdziłem. – Lancelot

5

System plików hosting skrypt może być montowany z flagą noexec. Sprawdź swój/etc/wpis fstab dla tego systemu plików i czy jest tam noexec spróbuj usunąć go następnie ponownego montażu tego systemu plików poprzez mount /path/to/mountpoint -o remount

Na drugim myśli, sprawdź wyjście komendy mount NOEXEC przypadkach zamiast/etc/fstab (system plików mógł zostać zamontowany dynamicznie.)

+0

no nie ma opcji "noexec" w żadnym systemie plików. Ale dzięki za wskazanie tego pliku, warto wiedzieć, gdzie są te informacje. – Lancelot

+0

To bardzo prosta instalacja systemu Ubuntu. Nic nie jest montowane po uruchomieniu. Napędy dysków i cdrom są montowane automatycznie po uruchomieniu systemu. – Lancelot

0

Możesz spróbować uruchomić plik, który był tam w katalogu domowym innego użytkownika, można wyrazić zgodę na "użytkownik"

chmod Ra + x/Home/użytk1 lub chmod -R o + x/Home/użytk1 chmod -R g + x/Home/użytk1

0

Chociaż mój problem był nieco inny w tym zadaniu Jon pojawiał się w moich poszukiwaniach kilka razy podczas poszukiwania podobnego problemu, więc opublikuję moje ustalenia tutaj.

Mój problem polegał na tym, że nie mogłem uzyskać dostępu do magazynu/folderu po poleceniu chmod.

Po komendzie wykonującym:

sudo chmod -755 storage -R //notice -755 is wrong, it should be 755 

nie może uzyskać dostępu do pamięci masowej/folderu więcej.

Próbowałem ls -l:

storage permissions d---------

Również po git status:

storage/.gitignore: Permission denied

Po wykonaniu odpowiedniego polecenia:

sudo chmod 755 storage -R // without - 

e wszystko wróciło do normy.