2010-06-06 12:40:52 +0000 2010-06-06 12:40:52 +0000
50
50

Maak een SSH gebruiker aan die alleen toegang heeft tot specifieke mappen

Ik heb SSH geïnstalleerd, maar ik ontdekte dat als ik mijn originele account gebruik om in te loggen op Ubuntu, het te veel rechten heeft.

Ik wil de gebruiker beperken om alleen rechten te hebben voor specifieke mappen in Ubuntu. Hoe kan ik zo'n gebruiker configureren?

Antwoorden (2)

53
53
53
2010-06-06 12:49:32 +0000

Dit is eenvoudig. Maak gewoon een nieuwe gebruiker aan met zijn thuismap ingesteld op de map waartoe hij toegang moet hebben (dit commando moet onder sudo of in de root-shell worden uitgevoerd):

adduser --home /restricted/directory restricted_user

Dit maakt een gebruiker restricted_user aan, de map /restricted/directory en dan worden de rechten op de map ingesteld zodat de gebruiker er naar kan schrijven. Hij kan standaard naar geen enkele andere map schrijven.

Als je de directory al hebt, kun je het commando adduser uitvoeren met de optie --no-create-home toegevoegd en de permissies handmatig instellen (ook met root privileges), zoals:

chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory

Als je zelfs world-writable directories ontoegankelijk moet maken voor deze gebruiker, zijn er twee varianten.

1) Als je de gebruiker een interactieve shell sessie wil geven, overweeg dan om deze handleiding te volgen over het maken van een chroot jail (in je /restricted/directory).

Voeg daarna het volgende toe aan je sshd_config:

Match user restricted_user
  ChrootDirectory /restricted/directory

2) Als je hem alleen nodig hebt om bestanden te kopiëren tussen zijn eindpunt van verbinding en je host, is alles veel eenvoudiger. Voeg deze regels toe aan het einde van je sshd_config:

Match user restricted_user
  ForceCommand internal-sftp
  ChrootDirectory /restricted/directory

Subsystem sftp internal-sftp

Dan commentaar uit de Subsystem sftp /usr/lib/openssh/sftp-server door het plaatsen van een hash (#) teken aan het begin.

Na het herstarten van je SSH server (deze doodt geen interactieve sessies bij het herstarten, dus het is veilig, zelfs als je iets verkeerd geconfigureerd hebt; sluit ook je lopende sessie niet af voordat je gecontroleerd hebt dat je nog steeds kunt inloggen), zou alles moeten werken zoals bedoeld.

5
5
5
2017-11-04 02:03:42 +0000

De gemakkelijkste manier om een beperkte gebruiker te maken die niet van de gegeven directory kan afdwalen (bv. naar de bovenste directory enz.), en een beperkte/gekozen set commando’s kan gebruiken, is door een beperkte Shell te gebruiken. Ref: http://man.he.net/man1/rbash

Maak eerst een symlink genaamd rbash (voer uit als root gebruiker).

ln -s /bin/bash /bin/rbash

Maak dan een normale gebruiker aan met deze Restricted Shell, en stel zijn home dir in op de gewenste map:

useradd -s /bin/rbash -d /home/restricted_folder username

Zelfs zonder de Restricted Shell, als je deze gebruiker expliciet niet toevoegt aan de sudoer’s lijst, of aan speciale groepen, dan zal hij standaard beperkt zijn.

Met de Restricted Shell, is het volgende niet toegestaan of niet uitgevoerd:

  • mappen wijzigen met cd

  • de waarden van SHELL, PATH, ENV, of BASH_ENV in- of uitschakelen

  • commandonamen opgeven die / bevatten

  • een bestandsnaam opgeven die een / als argument voor het .

  • een bestandsnaam met een schuine streep opgeven als argument voor de -p optie van het hash builtin commando

  • functiedefinities importeren uit de shell omgeving bij het opstarten

  • de waarde van SHELLOPTS parseren uit de shell omgeving bij het opstarten

  • uitvoer omleiden met behulp van de >, >|, <<>, >&, &>, en >> omleidingsoperatoren

  • het exec builtin commando gebruiken om de shell te vervangen door een ander commando

  • builtin commando’s toevoegen of verwijderen met de -f en -d opties aan het enable builtin commando

  • het enable builtin commando gebruiken om uitgeschakelde shell builtins in te schakelen

  • de -p optie specificeren aan het command builtin commando

  • de beperkte modus uitschakelen met set +r of set +o restricted.

Deze beperkingen worden afgedwongen na alle opstartbestanden

Om de gebruiker te beperken tot een beperkte/gekozen set commando’s die hij kan gebruiken, kun je een .bash_profile maken dat alleen voor die gebruiker leesbaar is, met

PATH=$HOME/bin

en de commando’s die je in de map ~/bin toelaat, symlinken naar die gebruiker:

ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm

enz.

HTH