as_uid 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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