Class: OsCtl::Lib::Sys
- Inherits:
-
Object
- Object
- OsCtl::Lib::Sys
- 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
- #bind_mount(src, dst) ⇒ Object
- #chroot(path) ⇒ Object
- #make_rshared(dst) ⇒ Object
- #make_rslave(dst) ⇒ Object
- #make_shared(dst) ⇒ Object
- #make_slave(dst) ⇒ Object
- #mount_proc(dst) ⇒ Object
- #mount_tmpfs(dst, name: 'none', flags: MS_MGC_VAL, options: 0) ⇒ Object
- #move_mount(src, dst) ⇒ Object
- #rbind_mount(src, dst) ⇒ Object
- #setns_io(io, nstype) ⇒ Object
- #setns_path(path, nstype) ⇒ Object
- #setresgid(rgid, egid, sgid) ⇒ Object
- #setresuid(ruid, euid, suid) ⇒ Object
- #syncfs(path) ⇒ Object
- #unmount(mountpoint) ⇒ Object
- #unmount_lazy(mountpoint) ⇒ Object
- #unshare_ns(type) ⇒ Object
Instance Method Details
#bind_mount(src, dst) ⇒ Object
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
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
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
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
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
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
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
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, ) raise SystemCallError, Fiddle.last_error if ret != 0 ret end |
#move_mount(src, dst) ⇒ Object
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
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
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
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
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
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
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
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
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
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 |