as_uid 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/Rakefile +8 -0
  2. data/bin/as_uid +9 -0
  3. data/lib/as_uid.rb +12 -0
  4. data/test/test_as_uid.rb +27 -0
  5. metadata +49 -0
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require 'rake/testtask'
2
+
3
+ Rake::TestTask.new do |t|
4
+ t.libs << 'test'
5
+ end
6
+
7
+ desc "Run tests"
8
+ task :default => :test
data/bin/as_uid ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'as_uid'
4
+
5
+ uid = ARGV[0].to_i
6
+ cmd = ARGV[1]
7
+ Process.as_uid(uid) do
8
+ puts `#{cmd}`
9
+ end
data/lib/as_uid.rb ADDED
@@ -0,0 +1,12 @@
1
+ module Process
2
+ def as_uid(uid)
3
+ old_euid, old_uid = Process.euid, Process.uid
4
+ Process.euid, Process.uid = uid, uid
5
+ begin
6
+ yield
7
+ ensure
8
+ Process.euid, Process.uid = old_euid, old_uid
9
+ end
10
+ end
11
+ module_function(:as_uid)
12
+ end
@@ -0,0 +1,27 @@
1
+ require 'test/unit'
2
+ require 'fileutils'
3
+ require 'as_uid'
4
+
5
+
6
+ class AsUidTest < Test::Unit::TestCase
7
+ def test_positive_scenario
8
+ Dir.mkdir("as_root")
9
+ assert_equal Process.uid, 0, 'Must run as root'
10
+ assert_equal Process.uid, File.stat('as_root').uid, 'Must be root'
11
+ FileUtils.rm_rf('as_root')
12
+
13
+ Process.as_uid(1000) do
14
+ assert_equal Process.uid, 1000, 'Must run as user'
15
+ Dir.mkdir("as_user")
16
+ assert_equal Process.uid, File.stat('as_user').uid, 'Must be user'
17
+ assert_not_equal 'root', %x{whoami}, 'Must run as user'
18
+ FileUtils.rm_rf('as_user')
19
+ end
20
+
21
+ Dir.mkdir("as_root")
22
+ assert_equal Process.uid, 0, 'Must run as root'
23
+ assert_equal Process.uid, File.stat('as_root').uid, 'Must be root'
24
+ FileUtils.rm_rf('as_root')
25
+ end
26
+
27
+ end
metadata ADDED
@@ -0,0 +1,49 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: as_uid
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Eugene Duboviy
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2010-04-03 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: A simple hello world gem
15
+ email: eugene.dubovoy@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - Rakefile
21
+ - lib/as_uid.rb
22
+ - bin/as_uid
23
+ - test/test_as_uid.rb
24
+ homepage: http://rubygems.org/gems/as_uid
25
+ licenses: []
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ! '>='
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ! '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements: []
43
+ rubyforge_project:
44
+ rubygems_version: 1.8.23
45
+ signing_key:
46
+ specification_version: 3
47
+ summary: As_uid!
48
+ test_files:
49
+ - test/test_as_uid.rb