My favorites
▼
|
Sign in
semicomplete
semicomplete.com projects.
Project Home
Downloads
Wiki
Issues
Source
Checkout
Browse
Changes
Source path:
svn
/
liboverride
/
bindandswitch.rb
r3222
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env ruby
require "socket"
require "etc"
if ARGV.length < 4
puts "Usage: $0 [host]:port user group command [arg1 ...]"
exit 1
end
address = ARGV.shift
user = ARGV.shift
group = ARGV.shift
# Setup the socket
addrdata = address.split(":")
if addrdata.length == 1
host = "0.0.0.0"
port = addrdata[0]
else
host, port = addrdata
end
include Socket::Constants
socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
sockaddr = Socket.pack_sockaddr_in( port, host )
socket.bind( sockaddr )
# setuid
pw = Etc.getpwnam(user)
gr = Etc.getgrnam(group)
puts "setgid: #{gr.gid} (#{group})"
Process::Sys.setgid(gr.gid)
puts "setuid: #{pw.uid} (#{user})"
Process::Sys.setuid(pw.uid)
ENV["BINDFD"] = socket.fileno.to_s
ENV["BINDPORT"] = port
ENV["LD_PRELOAD"] = "/home/jls/projects/liboverride/bindandswitch.so"
puts "Exec: #{ARGV.inspect}"
exec *ARGV
Show details
Hide details
Change log
r2269
by jordansissel on Sep 24, 2009
Diff
[No log message]
Go to:
/liboverride/bindandswitch.over
/liboverride/bindandswitch.rb
Project members,
sign in
to write a code review
Older revisions
All revisions of this file
File info
Size: 855 bytes, 42 lines
View raw file
File properties
svn:executable
*
Powered by
Google Project Hosting