Uprawnienie do pliku jest wykonywane tylko


12

Jak ustawić plik tak, aby był wykonywalny tylko dla innych użytkowników, ale nie do odczytu / zapisu, dlatego wykonuję coś z moją nazwą użytkownika, ale nie chcę podawać hasła. Próbowałem :

chmod 777 testfile
chmod a=x
chmod ugo+x

Nadal dostaję odmowę dostępu podczas wykonywania jako inny użytkownik.


Co powiesz na wykonanie go NIE jako inny użytkownik? I czy to jest skrypt, czy program binarny? Tłumacze muszą czytać skrypty.
psusi

Czy masz shebang u góry pliku? #! / bin / sh
J Baron

Odpowiedzi:


10

Musisz mieć uprawnienia do odczytu i wykonywania skryptu, aby móc go wykonać. Jeśli nie możesz odczytać zawartości skryptu, nie możesz go również uruchomić.

tony@matrix:~$ ./hello.world
hello world
tony@matrix:~$ ls -l hello.world
-rwxr-xr-x 1 tony tony 17 Jul 13 22:22 hello.world
tony@matrix:~$ chmod 100 hello.world
tony@matrix:~$ ls -l hello.world
---x------ 1 tony tony 17 Jul 13 22:22 hello.world
tony@matrix:~$ ./hello.world
bash: ./hello.world: Permission denied

Rzeczywiście, zaktualizowano, aby odzwierciedlić, że jest to prawdą w przypadku skryptów, które biorąc pod uwagę pierwotne pytanie, tak właśnie podejrzewam.
EightBitTony,

13

W poprzednich stwierdzeniach jest połowa prawdy. Możesz skonfigurować skrypt, aby nie był czytelny dla użytkownika, ale nadal był wykonywalny. Proces ten jest nieco przeciągnięty, ale można go zrobić, robiąc wyjątek w / etc / sudoer, aby użytkownik mógł tymczasowo uruchomić skrypt jak sam, bez pytania o hasło. Przykład poniżej:

Niektóre skrypty, które chcę udostępnić użytkownikowi:

me@OB1:~/Desktop/script/$ chmod 700 somescript.pl
me@OB1:~/Desktop/script/$ ls -l somescript.pl
-rwx------ 1 me me 4519 May 16 10:25 somescript.pl

Utwórz skrypt powłoki, który wywołuje „somescript.pl” i zapisz go w / bin /:

me@OB1:/bin$ sudo cat somescript.sh
[sudo] password for me: 
#!/bin/bash
sudo -u me /home/me/Desktop/script/somescript.pl $@

OPCJONALNY KROK Utwórz dowiązanie symboliczne do somescript.sh w / bin /:

sudo ln -s /bin/somescript.sh /bin/somescript

Upewnij się, że skrypt powłoki jest czytelny / wykonywalny dla użytkownika (brak dostępu do zapisu):

sudo chmod 755 /bin/somescript.sh
me@OB1:/bin$ ls -l somescript*
lrwxrwxrwx 1 root root  14 May 28 16:11 somescript -> /bin/somescript.sh
-rwxr-xr-x 1 root root 184 May 28 18:45 somescript.sh

Zrób wyjątek w / etc / sudoer, dodając następujące linie:

# User alias specification
User_Alias  SCRIPTUSER = me, someusername, anotheruser

# Run script as the user 'me' without asking for password
SCRIPTUSER ALL = (me) NOPASSWD: /home/me/Desktop/script/somescript.pl

DOWÓD W PUDDINGU:

someuser@OB1:~$ somescript
***You can run me, but can't see my private parts!***

someuser@OB1:~$ cat /home/me/Desktop/script/somescript.pl
cat: /home/me/Desktop/script/somescript.pl: Permission denied

Ta metoda powinna być lepsza niż próba zaciemnienia za pomocą Filter::Cryptolub PAR::Filter::Cryptolub Acme::Bleachktóra może zostać odwrócona przez określonego użytkownika. To samo dotyczy kompilowania skryptu do pliku binarnego. Daj mi znać, jeśli znajdziesz coś złego w tej metodzie. Bardziej zaawansowani użytkownicy mogą chcieć całkowicie usunąć sekcję User_Alias ​​i zastąpić SCRIPTUSER '% groupname'. W ten sposób możesz zarządzać użytkownikami skryptu za pomocą usermodpolecenia.


6

Jeśli zezwolisz innym użytkownikom na uruchomienie programu, będą mogli wiedzieć wszystko, co robi program, niezależnie od tego, czy plik programu jest czytelny, czy nie. Wszystko, co muszą zrobić, to wskazać debugger (lub program podobny do debuggera, taki jak strace). Binarny plik wykonywalny może działać, jeśli jest wykonywalny i nieczytelny (skrypt nie może, ponieważ interpreter musi być w stanie odczytać skrypt), ale nie zapewnia to żadnego bezpieczeństwa.

Jeśli chcesz, aby inni mogli wykonywać Twój program jako czarną skrzynkę, nie pozwalając im zobaczyć dokładnie, co robi program, musisz dać swojemu skryptowi podwyższone uprawnienia: ustaw go jako bezpieczny dla użytkownika. Tylko root może używać narzędzi do debugowania w programach setuid. Zauważ, że pisanie bezpiecznych programów setuid nie jest łatwe i większość języków nie jest odpowiednia; zobacz Zezwalaj na setuid w skryptach powłoki, aby uzyskać więcej wyjaśnień. Jeśli masz zamiar napisać program setuid, zdecydowanie polecam Perla, który ma tryb (tryb skażenia), który wyraźnie ma na celu umożliwienie bezpiecznych skryptów setuid.


-1

Możesz ustawić uprawnienia do plików za pomocą komendy chmod. Zarówno użytkownik root, jak i właściciel pliku mogą ustawiać uprawnienia do pliku. chmod ma dwa tryby, symboliczny i numeryczny.

Najpierw decydujesz, czy ustawisz uprawnienia dla użytkownika (u), grupy (g), innych (o), czy wszystkich trzech (a). Następnie albo dodajesz uprawnienie (+), usuwasz je (-), albo wymazujesz poprzednie uprawnienia i dodajesz nowe (=). Następnie decydujesz, czy ustawisz uprawnienia do odczytu (r), uprawnienia do zapisu (w) czy uprawnienia do wykonania (x). Na koniec powiedz chmod, które uprawnienia do pliku chcesz zmienić.

Oto kilka przykładów.

Wymaż wszystkie uprawnienia, ale dodaj uprawnienia odczytu dla wszystkich:

$ chmod a=r filename

Po poleceniu uprawnienia do pliku będą następujące: -r - r - r--

Dodaj uprawnienia do wykonywania dla grupy:

$ chmod g+x filename

Teraz uprawnienia do pliku to -r - r-xr--

Dodaj uprawnienia do zapisu i wykonywania dla właściciela pliku. Zwróć uwagę, jak możesz ustawić więcej niż jedno uprawnienie jednocześnie:

$ chmod u + nazwa pliku wx

Następnie uprawnienia do plików będą następujące: -rwxr-xr--

Usuń uprawnienie do wykonywania zarówno od właściciela pliku, jak i grupy. Zwróć też uwagę, jak możesz ustawić je jednocześnie:

Nazwa pliku $ chmod ug-x

Teraz uprawnienia są następujące: -rw-r - r--

To jest szybkie odniesienie do ustawiania uprawnień do plików w trybie symbolicznym:

Which user?
u   user/owner
g   group
o   other
a   all
What to do?
+   add this permission
-   remove this permission
=   set exactly this permission
Which permissions?
r   read
w   write
x   execute

Z pytania wynika, że ​​PO rozumie, jak korzystać chmod . To nie odpowiada na pytanie.
Scott
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.