Brak dostępu do zapisu pliku przez skrypt bash

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
civi
Sędziwy Jeż
Sędziwy Jeż
Posty: 38
Rejestracja: 24 sie 2005, 19:24
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: KDE Plasma
Architektura: x86_64
Lokalizacja: Lublin
Kontakt:

Brak dostępu do zapisu pliku przez skrypt bash

Post autor: civi »

Witam
Mam problem. Muszę nadpisać jeden plik, jednakże mam problem z powodu braku dostępu.

Kod: Zaznacz cały

[civi@Dell ~]$ su -c "echo "disable" > /sys/firmware/acpi/interrupts/gpe11"
Hasło: 
bash: linia 0: echo: błąd zapisu: Zły argument
[civi@Dell ~]$ su -c 'echo "disable" > /sys/firmware/acpi/interrupts/gpe11'
Hasło: 
bash: linia 0: echo: błąd zapisu: Zły argument
[civi@Dell ~]$ sudo echo "disable" > /sys/firmware/acpi/interrupts/gpe11
bash: /sys/firmware/acpi/interrupts/gpe11: Brak dostępu
Staram się zapisać do pliku gpe11 słowo disable, jednakże nie udaje się. Jedyne co działa to zalgowanie się na root i wpisanie polecenia ręcznie, a ja chcę to wrzucić w skrypt. Teoretycznie powinno wszystko działać wg. google, ale praktycznie są same schody.
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4678
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Re: Brak dostępu do zapisu pliku przez skrypt bash

Post autor: jacekalex »

sudo to nie jest pełnowartościowy root.

Spróbuj zamiast samego sudo dać:

Kod: Zaznacz cały

sudo -u root echo "disable" > /sys/firmware/acpi/interrupts/gpe11
Czasami pomaga, choć nie zawsze.
Względnie może pomóc:

Kod: Zaznacz cały

su root -c echo "disable" > /sys/firmware/acpi/interrupts/gpe11
Pozdro
:craz:
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
civi
Sędziwy Jeż
Sędziwy Jeż
Posty: 38
Rejestracja: 24 sie 2005, 19:24
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: KDE Plasma
Architektura: x86_64
Lokalizacja: Lublin
Kontakt:

Re: Brak dostępu do zapisu pliku przez skrypt bash

Post autor: civi »

Sprawdziłem jedną i drugą komendę i obydwie dają wynik brak dostępu.
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

Re: Brak dostępu do zapisu pliku przez skrypt bash

Post autor: Mały 1 »

To pokaż uprawnienia do pliku

Kod: Zaznacz cały

ls -l /sys/firmware/acpi/interrupts/gpe1
civi
Sędziwy Jeż
Sędziwy Jeż
Posty: 38
Rejestracja: 24 sie 2005, 19:24
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: KDE Plasma
Architektura: x86_64
Lokalizacja: Lublin
Kontakt:

Re: Brak dostępu do zapisu pliku przez skrypt bash

Post autor: civi »

Kod: Zaznacz cały

-rw-r--r-- 1 root root 4096 02-28 22:44 /sys/firmware/acpi/interrupts/gpe11
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

Re: Brak dostępu do zapisu pliku przez skrypt bash

Post autor: Mały 1 »

Nadaj uprawnienia do zapisu dla użytkownika grupy i ogółu
Z konta administratora

Kod: Zaznacz cały

chmod ugo+rw /sys/firmware/acpi/interrupts/gpe11
i zobacz czy działa.
Awatar użytkownika
enedil
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1352
Rejestracja: 08 wrz 2012, 16:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: i3
Architektura: x86_64
Kontakt:

Re: Brak dostępu do zapisu pliku przez skrypt bash

Post autor: enedil »

Sudo to pełnowartościowy root. Tylko że działa dla danej komendy, a nie dla całej powłoki. Z tego powodu nic nie zapiszesz w takim pliku, bo strumień idzie na uprawnieniach użytkownika.

Rozwiązanie? tee:

Kod: Zaznacz cały

echo "text" | sudo tee file
Dobrze jest, psiakrew, a kto powie, że nie, to go w mordę!

~moderatorzy
civi
Sędziwy Jeż
Sędziwy Jeż
Posty: 38
Rejestracja: 24 sie 2005, 19:24
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: KDE Plasma
Architektura: x86_64
Lokalizacja: Lublin
Kontakt:

Re: Brak dostępu do zapisu pliku przez skrypt bash

Post autor: civi »

Dzięki za pomoc enedil. NIe wiem jedynie dlaczego powyższe polecenie nie działa (pomimo braku błędu nic się nie zapisało), a zadziałało polecenie

Kod: Zaznacz cały

echo 'disable' | sudo tee /sys/firmware/acpi/interrupts/gpe11
Ostatnio zmieniony 05 mar 2015, 20:22 przez civi, łącznie zmieniany 2 razy.
Awatar użytkownika
enedil
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1352
Rejestracja: 08 wrz 2012, 16:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: i3
Architektura: x86_64
Kontakt:

Re: Brak dostępu do zapisu pliku przez skrypt bash

Post autor: enedil »

Oczywiście masz rację. Tam powinien być znak |. Oznacza to 'pipe', czyli przesłania wyjścia jednego programu jako wejście do drugiego. Natomiast '>' powoduje przekierowanie do pliku. Już poprawiłem, aby nie mylić.
Dobrze jest, psiakrew, a kto powie, że nie, to go w mordę!

~moderatorzy
civi
Sędziwy Jeż
Sędziwy Jeż
Posty: 38
Rejestracja: 24 sie 2005, 19:24
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: KDE Plasma
Architektura: x86_64
Lokalizacja: Lublin
Kontakt:

Re: Brak dostępu do zapisu pliku przez skrypt bash

Post autor: civi »

Jeszcze raz dzięki za pomoc. Temat można zamknąć.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 72 gości