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.


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.


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.



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

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.


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


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)

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.