Chciałbym stworzyć użytkownika, który może zrobić tylko jedną rzecz: poprzez ssh podaj skrypt (i argumenty wiersza polecenia do skryptu), który znajduje się w jednym określonym folderze (na potrzeby tego pytania nazwijmy go /local/remote_only_scripts/foo
) i niech ten skrypt zostanie wykonany i zwraca wynik.
Aby wyjaśnić niektóre przykłady rzeczy, których nie chcę, aby użytkownik mógł:
- Lokalnie zaloguj się na konto. Aplikacja do logowania to
/bin/login
. To nie jest skrypt w/local/remote_only_scripts/foo
folderze, więc użytkownik nie powinien go wywoływać. - Zdalne logowanie do konta. Znowu logowanie (czy to się nazywa ssh?) Nie jest skryptem w odpowiednim folderze.
- Wyświetl zawartość katalogu. Ls jest w środku
/bin/ls
. To nie jest skrypt w odpowiednim katalogu. - Edytuj plik w tym katalogu. emacs, vi, gedit większość innych edytorów nie jest skryptami w tym directoy.
- Wyświetl zawartość pliku w tym katalogu.
- Wykonaj plik w tym katalogu, którego nie ma uprawnień do wykonania.
Zauważ, że są to przykłady, istnieje wiele innych działań, których nie chcę, aby użytkownik mógł wykonać. Zastanawiając się nad działaniem, zapytaj „czy robi to skrypt w /local/remote_only_scripts/foo
?” jeśli odpowiedź jest przecząca, użytkownik nie powinien być w stanie tego zrobić. Jeśli odpowiedź brzmi „tak”, użytkownik powinien móc to zrobić.
PS: Pozwól mi wyjaśnić, co rozumiem przez „dodanie użytkownika”. Nie mam na myśli dodawania użytkownika do jakiegoś podsystemu ssh. Chodzi mi raczej o dodanie użytkownika do systemu komputerowego. Na przykład mam system z stabilną wersją Debiana, nazwij go jego adresem, www.hg.bar.com. Chcę dodać użytkownika (przez kuser, users-admin lub useradd lub w podobny sposób) nazwać go hg_guest. hg_guest nie może zalogować się lokalnie ani wykonać żadnej z powyższych czynności. Wszystko, co może zrobić hg_guest, to wykonywanie skryptów „zdalnie”. Powiedziałem, że powinien być w stanie to zrobić za pośrednictwem ssh, ale myślenie o tym teraz, być może pozwolenie mu na użycie ssh może pozwolić mu zalogować się lokalnie, więc może być wymagany jakiś inny mechanizm.