|
|
@ -38,17 +38,17 @@ var deviceSymlinks = [][2]string{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var basicBlacklist = []string{
|
|
|
|
var basicBlacklist = []string{
|
|
|
|
"/usr/sbin", "/sbin", "${PATH}/su",
|
|
|
|
"/usr/sbin", "/sbin", "/etc/X11",
|
|
|
|
"${PATH}/sudo", "${PATH}/fusermount",
|
|
|
|
"${PATH}/sudo", "${PATH}/su",
|
|
|
|
"${PATH}/xinput", "${PATH}/strace",
|
|
|
|
"${PATH}/xinput", "${PATH}/strace",
|
|
|
|
"${PATH}/mount", "${PATH}/umount",
|
|
|
|
"${PATH}/mount", "${PATH}/umount",
|
|
|
|
|
|
|
|
"${PATH}/fusermount",
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type fsDeviceDefinition struct {
|
|
|
|
type fsDeviceDefinition struct {
|
|
|
|
path string
|
|
|
|
path string
|
|
|
|
mode uint32
|
|
|
|
mode uint32
|
|
|
|
dev int
|
|
|
|
dev int
|
|
|
|
perm uint32
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const ugorw = syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP | syscall.S_IWGRP | syscall.S_IROTH | syscall.S_IWOTH
|
|
|
|
const ugorw = syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP | syscall.S_IWGRP | syscall.S_IROTH | syscall.S_IWOTH
|
|
|
@ -56,19 +56,19 @@ const urwgr = syscall.S_IRUSR | syscall.S_IWUSR | syscall.S_IRGRP
|
|
|
|
const urw = syscall.S_IRUSR | syscall.S_IWUSR
|
|
|
|
const urw = syscall.S_IRUSR | syscall.S_IWUSR
|
|
|
|
|
|
|
|
|
|
|
|
var basicDevices = []fsDeviceDefinition{
|
|
|
|
var basicDevices = []fsDeviceDefinition{
|
|
|
|
{path: "/dev/full", mode: syscall.S_IFCHR | ugorw, dev: _makedev(1, 7), perm: 0666},
|
|
|
|
{path: "/dev/full", mode: syscall.S_IFCHR | ugorw, dev: _makedev(1, 7)},
|
|
|
|
{path: "/dev/null", mode: syscall.S_IFCHR | ugorw, dev: _makedev(1, 3), perm: 0666},
|
|
|
|
{path: "/dev/null", mode: syscall.S_IFCHR | ugorw, dev: _makedev(1, 3)},
|
|
|
|
{path: "/dev/random", mode: syscall.S_IFCHR | ugorw, dev: _makedev(1, 8), perm: 0666},
|
|
|
|
{path: "/dev/random", mode: syscall.S_IFCHR | ugorw, dev: _makedev(1, 8)},
|
|
|
|
|
|
|
|
|
|
|
|
{path: "/dev/console", mode: syscall.S_IFCHR | urw, dev: _makedev(5, 1), perm: 0600},
|
|
|
|
{path: "/dev/console", mode: syscall.S_IFCHR | urw, dev: _makedev(5, 1)},
|
|
|
|
{path: "/dev/tty", mode: syscall.S_IFCHR | ugorw, dev: _makedev(5, 0), perm: 0666},
|
|
|
|
{path: "/dev/tty", mode: syscall.S_IFCHR | ugorw, dev: _makedev(5, 0)},
|
|
|
|
{path: "/dev/tty1", mode: syscall.S_IFREG | urwgr, dev: 0, perm: 0640},
|
|
|
|
{path: "/dev/tty1", mode: syscall.S_IFREG | urwgr, dev: 0},
|
|
|
|
{path: "/dev/tty2", mode: syscall.S_IFREG | urwgr, dev: 0, perm: 0640},
|
|
|
|
{path: "/dev/tty2", mode: syscall.S_IFREG | urwgr, dev: 0},
|
|
|
|
{path: "/dev/tty3", mode: syscall.S_IFREG | urwgr, dev: 0, perm: 0640},
|
|
|
|
{path: "/dev/tty3", mode: syscall.S_IFREG | urwgr, dev: 0},
|
|
|
|
{path: "/dev/tty4", mode: syscall.S_IFREG | urwgr, dev: 0, perm: 0640},
|
|
|
|
{path: "/dev/tty4", mode: syscall.S_IFREG | urwgr, dev: 0},
|
|
|
|
|
|
|
|
|
|
|
|
{path: "/dev/urandom", mode: syscall.S_IFCHR | ugorw, dev: _makedev(1, 9), perm: 0666},
|
|
|
|
{path: "/dev/urandom", mode: syscall.S_IFCHR | ugorw, dev: _makedev(1, 9)},
|
|
|
|
{path: "/dev/zero", mode: syscall.S_IFCHR | ugorw, dev: _makedev(1, 5), perm: 0666},
|
|
|
|
{path: "/dev/zero", mode: syscall.S_IFCHR | ugorw, dev: _makedev(1, 5)},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func _makedev(x, y int) int {
|
|
|
|
func _makedev(x, y int) int {
|
|
|
@ -111,7 +111,7 @@ func setupRootfs(fsys *fs.Filesystem) error {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for _, d := range basicDevices {
|
|
|
|
for _, d := range basicDevices {
|
|
|
|
if err := fsys.CreateDevice(d.path, d.dev, d.mode, d.perm); err != nil {
|
|
|
|
if err := fsys.CreateDevice(d.path, d.dev, d.mode); err != nil {
|
|
|
|
return err
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|