as_uid 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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!