lshell - limited shell

írta: sonar, 2 éve

Ubuntu Man, Github - lshell

Szerettem volna egy pár user-t kicsit korlátok közé szorítani, egy olyan szerveren ahol nincs GUI és csak ssh-n lehet belépni. Az első gondolatom az volt, hogy (szép magyarsággal) chroot-tal jail-be zárom őket. Ez jó ötletnek tűnt amíg nem kezdtem el csinálni, nagyon nem kezes megoldás. Sokat kell dolgozni vele mire egy kényelmes megoldás jön össze (nincs túlkorlátozva a user) és nehezen karbantartható.
Majd tovább böngészve rátaláltam az lsehll-re. Amivel nagyon jól lehet szabályozni, hogy ki mihez fér hozzá (az alap jogosultságok és acl-ek figyelembe vétele mellett!)

install:
yum install lshell
apt-get install lshell

Az alábbi configban a tesztgroup-ra és a tesztuser-re is láttok példát.
A group tagjai csak a home könyvtárukba és a /fileok mappába léphetnek be míg a tesztuser a /filmek mapp
ba is. Tehát nincs céltalan tallózgatás másfele. A config file egyébként elég beszédes, sok magyarázatot nem igényel.

config:
/etc/lshell.conf

[global]
logpath : /var/log/lshell/
loglevel : 2

[default]
allowed : ['ls','echo','cd','ll']
forbidden : [';', '&', '|','`','>','<', '$(', '${']
warning_counter : 2
aliases : {'ll':'ls -l', 'vim':'rvim' 'vi':'rvi'}
prompt : "%u@%h"strict : 0

[grp:tesztgroup]
allowed : 'all' - ['su','mv','sudo','vi','vim','awk']
overssh : 'all' - ['su','mv','sudo','vi','vim','awk']
home_path : "/home/%u"
path : ['/fileok','/home/%u']
warning_counter : 5
strict : 0

[tesztuser]
allowed : + ['ping','ls','cd','tail','grep','vi','vim','nano','cat','pwd'] - ['su','mv','sudo']
overssh : ['ping','ls','cd','tail','grep','vi','vim','nano','cat','pwd']
home_path : "/home/%u"
path : ['/fileok','/filmek','/home/%u']
warning_counter : 5
strict : 0

Hogy használni is tudjuk változtassuk meg a tesztuser shell-jét
De előtte kérjük le az aktuálist shell-t, hogy ha később vissza kell állítani akkor se legyünk gondban (ez az esetek 99%-ban /bin/bash)
getent passwd tesztuser
tesztuser:x:1017:1017:Teszt User:/home/tesztuser:/bin/bash

chsh -s /usr/bin/lshell tesztuser
getent passwd tesztuser
tesztuser:x:1017:1017:Teszt User:/home/tesztuser:/usr/bin/lshell

Nos tovább olvasgatva a netes cikkeket kiderült, hogy ha van olyan program illetve programnyelv ami tud os hivást csinálni már meg is tudtuk kerülni a lshell limitációit.
Teszem azt vi/vim-mel (ha előzőleg nem zártuk ki a config file-ban a használatát)
:!/bin/sh
vagy
:set shell=/bin/sh
:shell

máris kapunk egy rendes parancssort.
sh-4.2$ whoami
tesztuser
sh-4.2$

Szóval eléggé felemás a dolog. Ha esetleg valakinek van ötlete, hogy mivel lehetne szabályozni,
hogy bizonyos userek/group-ok ne tudják elhagyni a számukra kijelölt területet azt szívesen venném.