Karl Antz <karl@antz.dk> wrote:
> René Frej Nielsen <spam@rfn.dk> wrote:
>
>> > lyder somom det næsten vil være nemmere hvis jeg selv retter
>> > rettighederne i hvert enkelt tilfælde med risiko for at jeg glemmer det
>> > gang på gang ;-(
>>
>> Eller også kan du lave et cron-job, som sætter de rigtige rettigheder
>> hvert kvarter eller lign.
>
> se DET ville være smart .... for at citere dig: Morten eller andre?
Jeg har en løsning! Efter at have søgt vidt og bred på nettet har jeg
kunnet brygge en løsning sammen, som faktisk virker. Det er lidt
langhåret (for mig) og kræver terminal-gymnastik, men hvis du følger
denne vejledning burde det ikke kunne gå galt. Der udstedes dog ikke
garantier
Der findes vist ikke umiddelbart en funktion i OpenSSH hvor man kan
indstille en umask-værdi for sftp. Det kræver at man patcher OpenSSH
og det ville jeg helst ikke ud i. Jeg fandt heldigvis et tip på
nettet om en wrapper-fil, som også virkede på OS X, med et par
rettelser. Derefter var det bare at prøve det af og sørge for at alle
rettigheder var korrekte.
Når OpenSSH starter læser den filen /etc/sshd_config og her finder den
placeringen af sftp-server, som sjovt nok er sftp-serveren
Det man
skal gøre er at lave et lille script, som startes istedet. Dette
script sætter umask-værdien og starter den rigtige sftp-server
bagefter. Ret simpelt faktisk.
Her kommer en punkt-for-punkt vejledning, som alle burde kunne følge,
selvom man ikke er velbevandret i terminalen. Da sudo-kommandoen
bruges kan det være ret katastrofalt (man kan med sudo ændre i alle
filer i systemet), hvis der tastes forkert. Jeg har tjekket at
nedenstående er så korrekt som muligt, men jeg kan jo lave fejl...
1. Skriv "cd /usr/local" og derefter "ls" for at skifte til mappen og
se hvad der ligger i den.
2. Tjek om der ligger en mappe der hedder "lib". Hvis der ikke gør
det, så skriv "mkdir lib" og derefter "sudo chown root:wheel lib" for
at sætte ejer/gruppe rigtigt. For en sikkerheds skyld kan man også
skrive "sudo chmod 755 lib" for at sætte de rigtige rettigheder.
Den første gang sudo-kommandoen bruges skal man indtaste sit
root-password. Det er højst sandsynligt ens eget password, medmindre
man har pillet...
3. Skriv herefter "cd lib" for at gå ind i mappen. Skriv "sudo pico
sftp-wrapper" for at åbne en ny fil med navnet sftp-wrapper i editoren
pico.
4. Kopier følgende tekst ind i pico:
#!/bin/sh
umask 002
exec /usr/libexec/sftp-server $@
umask-værdien 002 sætter læse/skrive-rettigheder for ejer og gruppe,
samt læse-rettigheder for andre.
5. Tryk Control-x og derefter "y" for at vælge at gemme ændringer.
6. Skriv "sudo chown root:wheel sftp-wrapper" og "sudo chmod 755
sftp-wrapper" for at få rettighederne korrekt på filen. Skriv herefter
"sudo chmod +x sftp-wrapper" for at sætte execute-bit'en så filen kan
eksekveres som et program.
Nu er vores script på plads og så skal vi bare få OpenSSH til at
starte dette script under opstart, istedet for sftp-serveren.
7. Skriv "cd /etc" og "sudo pico sshd_config". Nu får du config-filen
til OpenSSH åbnet i pico, hvor vi skal lave en ændring helt i bunden.
Scroll derned med piletasterne. Den sidste linje skulle hedde
"Subsystem sftp /usr/libexec/sftp-server".
8. Indsæt et "#" (havelåge-tegn) foran linjen, så den bliver
udkommenteret. På den måde har vi en kopi af den originale linje, hvis
der skulle blive behov for at sætte det hele tilbage, som det var.
10. Indsæt "Subsystem sftp /usr/local/lib/sftp-wrapper" under
den oprindelige linje. Denne kalder scriptet istedet.
11. Tryk Control+x og "y" for at gemme.
Jeg har prøvet at slå Ekstern Log-in til og fra i Deling, men det er
åbenbart ikke nok, så man bliver nødt til at genstarte for at
ændringerne bliver indlæst.
Hvis man ønsker at ændre umask for en alm. ssh-session, så gøres det
ved at skrive "umask 022" (hvis det er den man vil have) i sin
..profile. Dette er til bash, så det ser måske anderledes ud til andre
shells.
Jeg håber at dette var forståeligt. Det ser måske lidt omfattende ud,
men det eneste der sker er jo at man laver et lille script og ændrer
én linie i en config-fil, så den peger på scriptet. Det bliver bare en
lidt lang fortælling, fordi man også lige skal have filens ejerskab og
rettigheder på plads.
Hvis nogen kan se en sikkerheds-risiko ved dette tip, så må I meget
gerne
råbe op! Lige umiddelbart kan jeg ikke se nogen fare, da det kun
ændrer for sftp og ikke alm. ssh-sessions, hvor man måske nok gerne
vil bare den alm. umask på 022 og manuelt ændre rettighederne.
--
Mvh.
René Frej Nielsen
PowerMac G4 Dual 867 MHz Verax | iBook G4 1 GHz Combo/AE/BT