Definisjon til sikkerhetsnivåene
-
$SAFE >= 1
-
- Miljøvariablene
RUBYLIB og RUBYOPT
prosesseres ikke og den gjeldende katalogen legges ikke til stien(path).
processed, and the current directory is not added to the path.
- Kommandolinjeopsjonene
-e , -i , -I , -r ,
-s , -S , and -x
forbys.
- Kan ikke starte prosesser fra
$PATH
hvis noen katalog i den kan skrives til av alle.
- Kan ikke manipulere eller 'chroot' til en katalog dersom navnet dens er en tainted streng.
- Kan ikke glob tainted strenger.
- Kan ikke eval tainted strenger.
- Kan hverken laste (load) eller kreve inn (require) en fil hvis navn er en tainted streng.
- Kan ikke manipulere eller spørre om status til en fil eller
et rør (pipe) hvis navnet er en tainted streng.
- Kan ikke utføre en systemkommando eller program fra en tainted streng.
- Kan ikke sende en tainted streng til
trap .
-
$SAFE >= 2
-
- Kan ikke endre, lage eller fjerne kataloger, og heller ikke bruke chroot.
- Kan ikke laste en fil fra en katalog hvor alle kan skrive til.
- Kan ikke laste en fil fra en tainted streng som starter med ~.
- Kan ikke bruke
File#chmod
,
File#chown
,
File#lstat
,
File.stat
,
File#truncate
,
File.umask
,
File#flock
,
IO#ioctl
,
IO#stat
,
Kernel#fork
,
Kernel#syscall
,
Kernel#trap
.
Process::setpgid
,
Process::setsid
,
Process::setpriority
, eller
Process::egid=
.
- Kan ikke håndtere signaler ved å bruke
trap .
-
$SAFE >= 3
-
- Alle objekter som lages er tainted.
- Kan ikke fjerne tainted-status på objekter.
-
$SAFE >= 4
-
- Kan ikke modifisere en ikke-tainted tabell, hashtabell eller streng.
- Kan ikke modifisere en global variabel.
- Kan ikke aksessere instansvariabler til ikke-taintede objekter.
- Kan ikke endre en miljøvariabel.
- Kan ikke lukke eller gjenåpne ikke-taintede filer.
- Kan ikke fryse ikke-taintede objekter.
- Kan ikke endre synlighet til metoder (private/public/protected).
- Kan ikke lage et alias i en ikke-tainted klasse eller modul.
- Kan ikke hente ut metainformasjon (slik som metode- eller variabellister).
- Kan ikke definere, redefinere, fjerne eller definere vekk en metode i en ikke-tainted klasse eller modul.
- Kan ikke modifisere
Object .
- Kan ikke fjerne instansvariabler eller konstanter fra ikke-taintede objekter.
- Kan ikke manipulere tråder, terminere en annen tråd enn den gjeldende eller sette
abort_on_exception .
- Kan ikke ha trådlokale variabler.
- Kan ikke heve et unntak i en tråd med en lavere
$SAFE verdi.
- Kan ikke flytte tråder mellom ThreadGroups.
- Kan ikke kalle
exit , exit! eller abort .
- Kan bare laste innepakkede filer og kan ikke
inkludere moduler i ikke-taintede klasser eller moduler.
- Kan ikke konvertere symbolidentifikatorer til objektreferanser.
- Kan ikke skrive til filer eller rør (pipes).
- Kan ikke bruke
autoload .
- Kan ikke gjøre objekter tainted.
|