66 lines
1.9 KiB
Plaintext
66 lines
1.9 KiB
Plaintext
--:Minify:--
|
|
local kernel = ...
|
|
|
|
if kernel.firstBoot or kernel.config.resetPerms then
|
|
if kernel.config.resetPerms then
|
|
kernel.log("resetPerms is active, disable it in /boot/boot.cfg", "WARN", 0xFFFF00)
|
|
end
|
|
kernel.log("Seeding filesystem permissions...")
|
|
|
|
local P = kernel.vfs.P
|
|
local PERM = kernel.vfs.PERM
|
|
|
|
local RW_R_R = P.OWNER_R + P.OWNER_W + P.GROUP_R + P.WORLD_R
|
|
local RWX_RX_RX = P.OWNER_R + P.OWNER_W + P.OWNER_X
|
|
+ P.GROUP_R + P.GROUP_X
|
|
+ P.WORLD_R + P.WORLD_X
|
|
local RW_R__ = P.OWNER_R + P.OWNER_W + P.GROUP_R
|
|
local RW____ = P.OWNER_R + P.OWNER_W
|
|
local RWXRWXRWX = PERM.RWXRWXRWX
|
|
local SUID_755 = PERM.SUID_755
|
|
|
|
local function seed(root, data)
|
|
for i=1,#data do
|
|
local entry=data[i]
|
|
if kernel.vfs.exists(root..entry[1]) then
|
|
kernel.vfs.updateMeta(root..entry[1],function(e)
|
|
e.perms=entry[4]
|
|
e.group=entry[3]
|
|
e.owner=entry[2]
|
|
end)
|
|
end
|
|
end
|
|
end
|
|
|
|
seed("/", {
|
|
{"bin", 0, 0, RWX_RX_RX},
|
|
{"boot", 0, 0, RWX_RX_RX},
|
|
{"etc", 0, 0, RWX_RX_RX},
|
|
{"home", 0, 0, RWX_RX_RX},
|
|
{"lib", 0, 0, RWX_RX_RX},
|
|
{"root", 0, 0, RW____ },
|
|
{"sbin", 0, 0, RWX_RX_RX},
|
|
{"tmp", 0, 0, RWXRWXRWX},
|
|
{"usr", 0, 0, RWX_RX_RX},
|
|
{"var", 0, 0, RWXRWXRWX},
|
|
{"opt", 0, 0, RWX_RX_RX},
|
|
})
|
|
|
|
seed("/bin/", {
|
|
{"login", 0, 0, SUID_755 },
|
|
{"su", 0, 0, SUID_755 },
|
|
{"sudo", 0, 0, SUID_755 },
|
|
})
|
|
|
|
seed("/etc/", {
|
|
{"passwd", 0, 0, RW_R_R },
|
|
{"shadow", 0, 0, RW____ },
|
|
{"pam.d", 0, 0, RW____ },
|
|
})
|
|
|
|
seed("/etc/pam.d/", {
|
|
{"secret", 0, 0, RW____},
|
|
})
|
|
|
|
kernel.log("Filesystem permissions seeded.")
|
|
end |