Class: OsCtl::Lib::Sys

Inherits:
Object
  • Object
show all
Defined in:
lib/libosctl/sys.rb

Defined Under Namespace

Modules: Int

Constant Summary collapse

CLONE_NEWNS =
0x00020000
CLONE_NEWUTS =
0x04000000
CLONE_NEWUSER =
0x10000000
CLONE_NEWPID =
0x20000000
CLONE_NEWNET =
0x40000000
CLONE_NEWIPC =
0x08000000
MS_MGC_VAL =
0xc0ed0000
MS_NOSUID =
2
MS_NODEV =
4
MS_NOEXEC =
8
MS_BIND =
4096
MS_MOVE =
8192
MS_REC =
16384
MS_SLAVE =
1 << 19
MS_SHARED =
1 << 20

Instance Method Summary collapse

Instance Method Details

#bind_mount(src, dst) ⇒ Object

Raises:

  • (SystemCallError)


60
61
62
63
64
# File 'lib/libosctl/sys.rb', line 60

def bind_mount(src, dst)
  ret = Int.mount(src, dst, 0, MS_MGC_VAL | MS_BIND, 0)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#chroot(path) ⇒ Object

Raises:

  • (SystemCallError)


140
141
142
143
144
# File 'lib/libosctl/sys.rb', line 140

def chroot(path)
  ret = Int.chroot(path)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#make_rshared(dst) ⇒ Object

Raises:

  • (SystemCallError)


90
91
92
93
94
# File 'lib/libosctl/sys.rb', line 90

def make_rshared(dst)
  ret = Int.mount("none", dst, 0, MS_REC | MS_SHARED, 0)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#make_rslave(dst) ⇒ Object

Raises:

  • (SystemCallError)


102
103
104
105
106
# File 'lib/libosctl/sys.rb', line 102

def make_rslave(dst)
  ret = Int.mount("none", dst, 0, MS_REC | MS_SLAVE, 0)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#make_shared(dst) ⇒ Object

Raises:

  • (SystemCallError)


84
85
86
87
88
# File 'lib/libosctl/sys.rb', line 84

def make_shared(dst)
  ret = Int.mount("none", dst, 0, MS_SHARED, 0)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#make_slave(dst) ⇒ Object

Raises:

  • (SystemCallError)


96
97
98
99
100
# File 'lib/libosctl/sys.rb', line 96

def make_slave(dst)
  ret = Int.mount("none", dst, 0, MS_SLAVE, 0)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#mount_proc(dst) ⇒ Object

Raises:

  • (SystemCallError)


78
79
80
81
82
# File 'lib/libosctl/sys.rb', line 78

def mount_proc(dst)
  ret = Int.mount("none", dst, "proc", MS_MGC_VAL, 0)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#mount_tmpfs(dst, name: 'none', flags: MS_MGC_VAL, options: 0) ⇒ Object

Raises:

  • (SystemCallError)


72
73
74
75
76
# File 'lib/libosctl/sys.rb', line 72

def mount_tmpfs(dst, name: 'none', flags: MS_MGC_VAL, options: 0)
  ret = Int.mount(name, dst, "tmpfs", flags, options)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#move_mount(src, dst) ⇒ Object

Raises:

  • (SystemCallError)


54
55
56
57
58
# File 'lib/libosctl/sys.rb', line 54

def move_mount(src, dst)
  ret = Int.mount(src, dst, 0, MS_MGC_VAL | MS_MOVE, 0)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#rbind_mount(src, dst) ⇒ Object

Raises:

  • (SystemCallError)


66
67
68
69
70
# File 'lib/libosctl/sys.rb', line 66

def rbind_mount(src, dst)
  ret = Int.mount(src, dst, 0, MS_MGC_VAL | MS_BIND | MS_REC, 0)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#setns_io(io, nstype) ⇒ Object

Raises:

  • (SystemCallError)


128
129
130
131
132
# File 'lib/libosctl/sys.rb', line 128

def setns_io(io, nstype)
  ret = Int.setns(io.fileno, nstype)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#setns_path(path, nstype) ⇒ Object

Raises:

  • (SystemCallError)


120
121
122
123
124
125
126
# File 'lib/libosctl/sys.rb', line 120

def setns_path(path, nstype)
  f = File.open(path)
  ret = Int.setns(f.fileno, nstype)
  f.close
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#setresgid(rgid, egid, sgid) ⇒ Object

Raises:

  • (SystemCallError)


48
49
50
51
52
# File 'lib/libosctl/sys.rb', line 48

def setresgid(rgid, egid, sgid)
  ret = Int.setresgid(rgid, egid, sgid)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#setresuid(ruid, euid, suid) ⇒ Object

Raises:

  • (SystemCallError)


42
43
44
45
46
# File 'lib/libosctl/sys.rb', line 42

def setresuid(ruid, euid, suid)
  ret = Int.setresuid(ruid, euid, suid)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#syncfs(path) ⇒ Object

Parameters:

  • path (String)

    filesystem directory



147
148
149
150
151
152
153
154
155
# File 'lib/libosctl/sys.rb', line 147

def syncfs(path)
  f = Tempfile.new('.syncfs', path)
  ret = Int.syncfs(f.fileno)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
ensure
  f.close
  f.unlink
end

#unmount(mountpoint) ⇒ Object

Raises:

  • (SystemCallError)


108
109
110
111
112
# File 'lib/libosctl/sys.rb', line 108

def unmount(mountpoint)
  ret = Int.umount2(mountpoint, 0) # force unmount returns EACCESS
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#unmount_lazy(mountpoint) ⇒ Object

Raises:

  • (SystemCallError)


114
115
116
117
118
# File 'lib/libosctl/sys.rb', line 114

def unmount_lazy(mountpoint)
  ret = Int.umount2(mountpoint, Int::MNT_DETACH)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end

#unshare_ns(type) ⇒ Object

Raises:

  • (SystemCallError)


134
135
136
137
138
# File 'lib/libosctl/sys.rb', line 134

def unshare_ns(type)
  ret = Int.unshare(type)
  raise SystemCallError, Fiddle.last_error if ret != 0
  ret
end