as_uid 0.0.2 → 0.0.3

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e528e65f29cb52e0d0bc10cf9ea6b166ad33dc8f
4
+ data.tar.gz: f3ef2936a4b0b50fd5c63c2ad206f81c87eef7ad
5
+ SHA512:
6
+ metadata.gz: 7da71fe3d91df686c51ef82f037ab705b6644f1cdf6df9e09cfda14e111f54d1fad60792205d3d8ef2722338c8c84a6fb59376f7d097cda5b3e2883bf0945ffb
7
+ data.tar.gz: 1311d102a47a6387a316aa96986932e16551594ed16ae71ff64430b34db0665a16889b5c9182c146a73fa63b7e7b4b3661e2d8aa5106fde7570312e5bfbc17af
data/bin/as_uid CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
-
3
2
  require 'as_uid'
4
3
 
5
4
  uid = ARGV[0].to_i
6
5
  cmd = ARGV[1]
6
+
7
7
  Process.as_uid(uid) do
8
8
  puts `#{cmd}`
9
9
  end
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ require 'as_uid'
3
+
4
+ user_name = ARGV[0]
5
+ cmd = ARGV[1]
6
+
7
+ Process.as_user(user_name) do
8
+ puts `#{cmd}`
9
+ end
@@ -1,12 +1,26 @@
1
+ require 'etc'
2
+
1
3
  module Process
4
+
5
+ def as_user(user_name)
6
+ uid = Etc.getpwnam(user_name).uid
7
+
8
+ Process.as_uid(uid) do
9
+ yield
10
+ end
11
+ end
12
+
2
13
  def as_uid(uid)
3
14
  old_euid, old_uid = Process.euid, Process.uid
4
15
  Process.euid, Process.uid = uid, uid
16
+
5
17
  begin
6
18
  yield
7
19
  ensure
8
20
  Process.euid, Process.uid = old_euid, old_uid
9
21
  end
10
22
  end
23
+
24
+ module_function(:as_user)
11
25
  module_function(:as_uid)
12
26
  end
@@ -2,7 +2,6 @@ require 'test/unit'
2
2
  require 'fileutils'
3
3
  require 'as_uid'
4
4
 
5
-
6
5
  class AsUidTest < Test::Unit::TestCase
7
6
  def test_positive_scenario
8
7
  Dir.mkdir("as_root")
@@ -16,6 +15,12 @@ class AsUidTest < Test::Unit::TestCase
16
15
  assert_equal Process.uid, File.stat('as_user').uid, 'Must be user'
17
16
  assert_not_equal 'root', %x{whoami}, 'Must run as user'
18
17
  FileUtils.rm_rf('as_user')
18
+
19
+ Process.as_user('root') do
20
+ assert_equal Process.uid, 0, 'Must run as root'
21
+ end
22
+
23
+ assert_equal Process.uid, 1000, 'Must run as user'
19
24
  end
20
25
 
21
26
  Dir.mkdir("as_root")
@@ -23,5 +28,4 @@ class AsUidTest < Test::Unit::TestCase
23
28
  assert_equal Process.uid, File.stat('as_root').uid, 'Must be root'
24
29
  FileUtils.rm_rf('as_root')
25
30
  end
26
-
27
31
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: as_uid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.0.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Eugene Duboviy
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2010-04-03 00:00:00.000000000 Z
11
+ date: 2017-02-26 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: Use to run code as another user
15
14
  email: eugene.dubovoy@gmail.com
@@ -18,30 +17,30 @@ extensions: []
18
17
  extra_rdoc_files: []
19
18
  files:
20
19
  - Rakefile
21
- - lib/as_uid.rb
22
20
  - bin/as_uid
21
+ - bin/as_user
22
+ - lib/as_uid.rb
23
23
  - test/test_as_uid.rb
24
24
  homepage: http://rubygems.org/gems/as_uid
25
25
  licenses: []
26
+ metadata: {}
26
27
  post_install_message:
27
28
  rdoc_options: []
28
29
  require_paths:
29
30
  - lib
30
31
  required_ruby_version: !ruby/object:Gem::Requirement
31
- none: false
32
32
  requirements:
33
- - - ! '>='
33
+ - - ">="
34
34
  - !ruby/object:Gem::Version
35
35
  version: '0'
36
36
  required_rubygems_version: !ruby/object:Gem::Requirement
37
- none: false
38
37
  requirements:
39
- - - ! '>='
38
+ - - ">="
40
39
  - !ruby/object:Gem::Version
41
40
  version: '0'
42
41
  requirements: []
43
42
  rubyforge_project:
44
- rubygems_version: 1.8.23
43
+ rubygems_version: 2.5.1
45
44
  signing_key:
46
45
  specification_version: 3
47
46
  summary: As_uid!