Bash kérdés

Hogyan lehetne _biztonságosan_ lescriptelni azt, hogy be legyen állítva a "usrquota" és a "grpquota" azon a partíción, amin az adott user home mappája van?


##############################
#!/bin/bash

ADOTTUSER=bela

if ! id "$ADOTTUSER" >/dev/null; then echo "error: no \"$ADOTTUSER\" user found in \"/etc/passwd\""; exit 1; fi

SFTPUSER_MAPPAJA=$(awk "NR==$(awk 'BEGIN {FS=":"} {print $3}' /etc/passwd | awk "/^$(id -u "$ADOTTUSER")$/ {print NR}")" /etc/passwd | awk 'BEGIN {FS=":"} {print $6}' | rev | sed "s/^\///g" | rev)

if [ "$SFTPUSER_MAPPAJA" == "" ]; then echo "error: bad home directory"; exit 1; fi
if [ "$SFTPUSER_MAPPAJA" == "/" ]; then echo "error: bad home directory"; exit 1; fi
if ! [ -d "$SFTPUSER_MAPPAJA" ]; then echo "error: no home directory for the user"; exit 1; fi
##############################

Ok. Az "$SFTPUSER_MAPPAJA" lesz az "$ADOTTUSER" home mappájának elérése [nagyjából biztonságosan megszerezve, ehhez nem akarok nyúlni**].

Hogyan tovább?
- Mármint pl.: XFS-nél nem kell beállítani a "usrquota" & "grpquota"-t, mivel alapból támogatja.
- EXT3, EXT4-nél be kell állítani, de viszont lehetségesek további mount opciók.
- Szóval általánosságban gondolkodom, több filerendszer esetén.

Csak tovább szeretném upgrade-elni a "debian-sftp-only.sh"-s scriptemet quotával :P

A dolog megoldható, csak ~kb fél oldalt kell gépelni hozzá [csak szerintem gányolás egy kicsit, hogy pl.: megnézem, hogy az adott sor/4. oszlopában az fstab-ban van-e pl.: usrquota, ha nincs, akkor írja hozzá, de elé egy ",", utána parancs kiad: "mount /homeparticio -o remount "].

Van valakinek kész megoldása, vagy pedig kezdjem el koptatni a billentyűzetet? [Vagy van erre valamilyen parancs, hogy engedélyezzük a kvótát az adott partíción??*]

* Szerk.: engedélyezzük, mármint odaírni a usrquota-t, és a grpquota-t valamilyen programmal az fstab-ba, hogy reboot után is maradjon meg a beállítás

** Szerk2.: upgraded: link, thx :)

Hozzászólások

quota - implementation of the disk quota system
quotatool - tool to edit disk quotas from the command line

nem tudtam, hogy ezek közül a parancsok közül az egyikkel be lehet kapcsolni a kvótát az adott filerendszeren.
man-ban nem találom hogy kell :O

mire gondoltál?

a kérdés nem az volt, hogyan tudom beállítani pl.: 10 MByte-ra a kvótát egy usernél, hanem:

"Hogyan lehetne _biztonságosan_ lescriptelni azt, hogy be legyen állítva a "usrquota" és a "grpquota" azon a partíción, amin az adott user home mappája van?"

pardon, ha félreértettem a válaszod.

--
Írj egy e-mailt, ha itt bármi hibát találsz. ^ ^

bocs, egyrészt ezt kérdezted:

"...Vagy van erre valamilyen parancs, hogy engedélyezzük a kvótát az adott partíción?" :)

másrészt a leírása a quotatool-nak ezt írja:

"...making it suitable for use in scripts and other non-interactive situations"

szerk.: még ezt találtam:
http://www.debian-administration.org/articles/47

remount + quota beállítás

meg én nem az fstab-ban nézném meg hogy van-e userquota, hanem a `mount` kimenetében - szerintem ez nem lenne gányolás, így on-the-fly beállítod ha kell, a rendszer alap beállításaitól függetlenül

Kicsit hatékonyabban:


#!/bin/bash

ADOTTUSER=bela

if ! grep -q "^$ADOTTUSER:" /etc/passwd; then echo 'error: no '$ADOTTUSER' user found in "/etc/passwd"'; exit 1; fi

SFTPUSER_MAPPAJA=$(grep "^$ADOTTUSER:" /etc/passwd | cut -f6 -d: | sed 's#/$##')

if [[ -z "$SFTPUSER_MAPPAJA"  || "$SFTPUSER_MAPPAJA = / ]]; then echo "error: bad home directory"; exit 1;
elif [[ !-d "$SFTPUSER_MAPPAJA" ]]; then echo "error: no home directory for the user"; exit 1; fi