Otwórz edytor oparty na konsoli z ograniczonym dostępem

6

Mam skrypt, który zostanie wykonany przez SSH. Mój serwer SSH jest skonfigurowany tak, aby zawsze uruchamiał ten skrypt, więc użytkownik nie ma dostępu do rzeczywistej maszyny.

Jedną z cech tego skryptu jest edycja pliku, zastanawiam się, czy istnieje sposób na wywołanie VIM (lub innego edytora opartego na konsoli) bez umożliwienia mu edycji innych plików lub wykonywania poleceń. Chcę, aby VIM był zmuszony do edycji tylko otwartego pliku.

André Puel
źródło
1
Wygląda na to, że mogą istnieć lepsze rozwiązania ogólnego problemu. Proszę podać, jaki problem rzeczywiście próbujesz rozwiązać.
Daniel Beck
Podobnie jak @DanielBeck, może istnieć lepsze rozwiązanie. Widzieć chroot . Sprawdź mój post. superuser.com/a/430427/67952
nelaaro

Odpowiedzi:

3

Nie sądzę, żeby można było ograniczyć samego Vima tak, jak chcesz.

Ale możesz ograniczyć wszystkie prawa użytkownika tylko do jednego określonego pliku / katalogu. W ten sposób nigdy nie byłby w stanie czytać ani pisać do żadnego innego pliku / katalogu. Należy pamiętać, że użytkownik powinien nadal mieć możliwość wykonywania programów znajdujących się w innym miejscu ( /usr/bin/vim, na przykład).

Szybki Google prawdopodobnie zwróci dziesiątki samouczków. To narzędzie może pomóc: pozwala skonfigurować rodzaj piaskownicy na serwerze.

romainl
źródło
2
Uruchomienie Vima z opcją -Z wyłącza możliwość uruchamiania poleceń zewnętrznych.
Heptite
To super. To nie przeszkadza :w /some/other/file, czy to?
romainl
Nie, dotyczy tylko działających poleceń zewnętrznych.
Heptite
Czy wiesz, czy mogę to zrobić za pomocą innego narzędzia?
André Puel
3

Możesz zbudować kopia vima dla konkretnego użytkownika i ogranicz użytkownika tylko do tych części FS, do których potrzebuje dostępu - więc tylko uprawnienia do odczytu / zapisu do tego pliku, i Nie inne grupy dodane do jego konta. To powinno skutecznie ograniczyć go tylko do tych plików.

Inną możliwą rzeczą byłoby ograniczenie użytkownika do więzienia chroot po wykonaniu powyższego - aby widział tylko vima i ten plik.

Journeyman Geek
źródło
1

Posługiwać się Nano w trybie ograniczonym .

rnano to ograniczona wersja nano, która edytuje tylko określone pliki i nie pozwala użytkownikowi na dostęp do systemu plików lub powłoki poleceń .

W trybie ograniczonym nano nie będzie:

  • czytać lub zapisywać do dowolnego pliku nie określonego w wierszu poleceń
  • przeczytaj dowolne pliki nanorc
  • zezwolić na zawieszenie
  • zezwolić na dołączenie pliku, dodanie go lub zapisanie pod inną nazwą
  • używaj plików kopii zapasowych lub sprawdzania pisowni
Jeremy W
źródło
0

Nie do końca to, czego szukasz, ale rvim tak trochę tego, czego chcesz. Być może można zrobić kilka sztuczek za pomocą chroot. Nie wiem

Nie będzie możliwe uruchamianie poleceń powłoki ani zawieszanie Vima.

ReyCharles
źródło
rvim jest taki sam jak „vim -Z”, jak skomentowano wcześniej.
harrymc
0

Moim zaleceniem jest stworzenie pełnego środowiska logowania do systemu chroot dla użytkowników podczas logowania. Jest to podobne do tego, co producenci urządzeń Apple i OEM robią dla swoich urządzeń. http://en.wikipedia.org/wiki/Chroot . Pozwala to stworzyć określone środowisko dla każdego użytkownika, który loguje się z ograniczonymi uprawnieniami.

W ten sposób możesz zablokować je tylko do określonej sekcji dostępnych narzędzi. Nawet jeśli mają dostęp do zapisu, nie będą mogli wpływać na główny system plików i wszystko, co tam działa, bez większego wysiłku.

Poniższe linki pomogą Ci po drodze http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229

http://allanfeid.com/content/creating-chroot-jail-ssh-access

Podobnie jak zakorzenienie, czy więzienie łamiące iPhone'a, urządzenia z systemem Android, wymaga zaawansowanej wiedzy na temat programowania, aby wykorzystać uprzywilejowany proces, nie jest to zbyt proste.

Ten samouczek dla Ubuntu wyjaśnia, czym jest środowisko root root / chroot i jak je utworzyć. https://help.ubuntu.com/community/BasicChroot

nelaaro
źródło
0

Możesz po prostu użyć dowolnego edytora tekstu i zrobić mały skrypt do pisania w następujący sposób:

#!/bin/sh
case "$1" in
  /an/acceptable.file|/another/file)texteditor "$1";;
  *)echo you don't have permission to edit this file
    exit;;
esac

ustaw odpowiednio uprawnienia

(Uwaga: Ta metoda może być używana do wielu rzeczy i jest powszechna w skryptach cgi)

technosaurus
źródło