Sha256: a6afda679fdfb55af6137cc7f1af691f5748fc82605ae5e14d4eb82bd5197314
Contents?: true
Size: 1.02 KB
Versions: 1
Compression:
Stored size: 1.02 KB
Contents
require 'Yk/shellquote' if !defined? CYGWIN CYGWIN = (`uname` =~ /CYGWIN/) end if CYGWIN if !defined?(CYGADMIN) begin testFName = "/var/tmp/__test_admin__#{rand(10000000000)}" File.open testFName, "w" do |fw| File.chmod 0666, testFName end isAdmin = false begin require 'etc' File.chown Etc.getpwnam("SYSTEM").uid, Etc.getgrnam("Administrators").gid, testFName isAdmin = true rescue end CYGADMIN = isAdmin ensure File.delete testFName end end end if !CYGWIN if Process.euid != 0 if (File.executable?(tmp = "/usr/sbin/cansudo") && system(tmp) && $? == 0 && STDIN.tty?) or File.exist?("/data/data/com.termux") or "/etc/group".read =~ /\nwheel|sudo:.*\b(#{Regexp.escape Etc.getpwuid(Process.euid).name})\b/ exec "sudo", $0, *ARGV else exec "su", "-c", "#{$0} #{ARGV.condSQuote}" end end else if !CYGADMIN if File.executable?(tmp = "/usr/bin/cygsu") exec "cygsu #{$0} #{ARGV.condSQuote}" else raise Exception.new("cannot execute as an administrator") end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
YkLib-0.1.8.9 | lib/Yk/rootexec.rb |