Portál AbcLinuxu, 4. listopadu 2025 18:06
Dobry den.
Napada me od jednoducheho ke slozitemu: acl,chroot,selinux.
Pokud ale jde o to povolit jim spusteni prave jednoho scriptu, pouzil bych ssh s klicem.
marek
alias irssi='irssi'
alias *='exit'
Jestli jde o to povolit jen dva prikazy, potom doporucuji to ssh. Je to jednoduche a prakticky neprustrelne.
Funguje to tak, ze si uzivatele vygeneruji dsa, nebo rsa klic (umi to vpodstate jekykoli klient - openssh, putty .....).
Pro openssh to vypada tak, ze na klientske stanici napiseme: ssh-keygen -t dsa # vylezou z toho .ssh/id_dsa.pub a .ssh/id_dsa
Na serveru: dame obsah .ssh/id_dsa.pub do (/home/uzivatel).ssh/authorized_keys.
Na zacatek radky pridame command="/cesta/irssi"
Je potreba nastavit prava tohoto souboru na cist jenom pro vlasnika (chmod 400 /home/uzivatel/.ssh/authorized_keys; chown -R uzivatel /home/uzivatel/.ssh).
Jeden uzivatel muze mit vic klicu a prihlasovat se pro kazdy prikaz s jinym klicem(u openssh parametr -i).
Reseni zavisle na konkretnim shellu, ktery se uzivateli spusti(alias ...), je tak snadne obejit, ze to snad ani nema cenu zavadet.
marek
#!/bin/bash
while true; do
echo -n '$ '
read ARGV
CMD=${ARGV%% *}
case $CMD in
ls) $ARGV ;;
date) $ARGV ;;
*) echo 'Invalid command!' ;;
esac
done
Raději napiš čeho přesně tímto chceš dosáhnout. Uživatel se svými příkazy stejně moc škody udělat nemůže, dají se nastavit limity na pamět, procesy, quoty na disk, přes acl až po selinux (což už je hardcore).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.