Aș dori să restricționez unii utilizatori de pe serverul meu să poată executa doar anumite comenzi. Pentru a face acest lucru, cea mai comună abordare pe care am putut-o găsi este să folosesc rbash
.
Deși pot găsi multe site-uri web care vorbesc despre rbash, am probleme în a găsi informații despre cum să-l folosesc corect. Cea mai comună abordare pe care am putut-o găsi a fost să creez un link simbolic din /bin/rbash
la /bin/bash
, setați shell-ul de conectare pentru utilizatori restricționați la /bin/rbash
și apoi setați o personalizare CALE
în ~/.bash_profile
în directorul principal al utilizatorului.
Cu toate acestea, am fost destul de șocat să aflu că, cu această configurare, utilizatorii pot încă copia fișiere pe server folosind scp
și pot chiar să deschidă un shell nerestricționat folosind ssh utilizator@gazdă -t bash
! Ceea ce pare să se întâmple este că serverul SSH transmite comanda shell-ului de conectare de pe server folosind -c
, asa de ssh utilizator@gazdă -t bash
determină rularea serverului /bin/rbash -c bash
, care funcționează pentru că .bash_profile
nu este încă executat pentru a restricționa calea. scp
în mod similar, determină rularea serverului /bin/rbash -c scp
.
Acum am dat peste ForceCommand
directiva sshd. Această directivă determină, practic, întotdeauna ca comanda configurată să fie transmisă ca -c
la shell-ul de conectare, ignorând orice comandă specificată de client. Astfel, dacă ForceCommand
este setat sa rbash
, care va executa întotdeauna comanda /bin/rbash -c rbash
pe server, indiferent dacă clientul a fost apelat cu -t bash
sau ca scp
sau orice altceva. Din pacate, /bin/rbash -c rbash
cauzează .bash_profile
sa nu fie executat, asa ca ajungem cu un shell restrictionat dar normal CALE
, așa că putem doar să sunăm bash
acolo pentru a scăpa de ea.
Ce aș dori să obțin:
- Nu ar trebui să existe nicio modalitate de a evita shell-ul restricționat pentru utilizatorii care se conectează prin SSH
- În mod ideal, ar fi încă posibil să executați comenzi care sunt permise în shell-ul restricționat prin utilizarea
ssh utilizator@server comanda_permisă
- Configurația nu ar trebui să fie doar SSH, astfel încât utilizatorii care se conectează, de exemplu, pe TTY ar trebui să fie, de asemenea, restricționați.