Wednesday, 15 February 2012

ruby - Couldn't understand how the command line option "-T" is used in practice -



ruby - Couldn't understand how the command line option "-T" is used in practice -

couldn't understand how command line alternative below used in practice.

-t[level=1]

i tried code:

#commandoptionstest.rb puts "hello world"

with various safe levels:

output ok

@ubuntu:~/script$ ruby -x commandoptionstest.rb # => hello world

why error? need in commandoptionstest.rb allow -x -t?

@ubuntu:~/script$ ruby -x -t commandoptionstest.rb # => ruby: no -x allowed in tainted mode (securityerror)

output coming

@ubuntu:~/script$ ruby -t commandoptionstest.rb # => hello world

output coming

@ubuntu:~/script$ ruby -t1 commandoptionstest.rb # => hello world

output coming

@ubuntu:~/script$ ruby -t2 commandoptionstest.rb # => hello world

output coming

@ubuntu:~/script$ ruby -t3 commandoptionstest.rb # => hello world

again why error?

@ubuntu:~/script$ ruby -t4 commandoptionstest.rb # => commandoptionstest.rb:15:in `write': insecure operation `write' @ level 4 (securityerror) # commandoptionstest.rb:15:in `puts' # commandoptionstest.rb:15:in `puts' # commandoptionstest.rb:15:in `<main>'

with help of above code, please explain why safe levels 1, 2, 3 printing "hello world", while safe level 4 not? allow write operations @ safe level 4, should done here?

it sets $safe level.

this dictates how inputs handled, along great number of other things regarding environment variables, i/o, threads, exceptions, interpreter command line args, etc.

http://www.ruby-doc.org/docs/programmingruby/html/taint.html

imo docs place start. if have question specific behavior, ask.

to address comment , edits:

yes, can, the docs can too, , better.

why -x not work?

because docs won't:

$safe >= 1    * command-line options -e, -i, -i, -r, -s, -s, , -x not allowed.

[~]$ ruby --help usage: ruby [switches] [--] [programfile] [arguments] # elided -t[level=1] turn on tainting checks

so default level if -t specified no number 1, means $safe >= 1, means docs say: -x not allowed.

why doesn't puts work?

difficult since don't provide code you're executing, likely, again, docs say:

$safe >= 4    * can't write files or pipes.

ruby ruby-1.9.3

No comments:

Post a Comment