===== Python tools ===== Common default options: -h --help Shows help! -v --version Shows RSBAC_NR (Version 1.3.0pre eg) -V Specify old version to upgrade things from. (like acl_grant, etc) -T --transaction ta Specify a transaction number to operate on (can also use env var RSBAC_TA) -d --device Specify which device to use (major:minor) (FIXME Do we really need it ?) -R --recursive Does the action recursively Tools to set,get, or modify attributes on objects. === MODULES: === MODULES are always one of GEN, MAC, PM, FF, RC, DAZ, PAX, AUTH. (UM ?) We need a dictionary that can output ordered lists of MODULES for the user to know wtf he's doing there. This list should be generated from the bindings if possible. Checking /proc/rsbac-info/active if the MODULE is available before displaying it, else mark it disabled: Modules supported by this kernel: AUTH RC Modules not supported by this kernel: MAC .. === TARGETS: === TARGETS are target-types, usually one of FILE, DIR, FIFO, SYMLINK, DEV (FIXME can't we always us FD autoselect ?) or... USER, GROUP, PROCESS or... NETDEV, NETTEMP,NETOBJ or... IPC We need a dictionary that can output ordered lists of TARGETS for the user to know wtf he's doing there. This list should be generated from the bindings if possible. Targets list: FILE, DIR, FIFO, SYMLINK, DEV USER, GROUP, PROCESS ... === ATTRIBUTES: === ATTRIBUTES are usually A_log_array_low, A_rc_type, A_auth_may_setuid, A_.... see types.h Of course bindings remove the "A_" and just ask for the value, like "auth_may_setuid 1" We need a dictionary that can output ordered lists of TARGETS for the user to know wtf he's doing there. This list should be generated from the bindings if possible. Attributes list: auth_may_setuid auth_may_setcap rc_type rc_.. ... OPTIONS: OPTIONS are switches, including the default common options, but including also: -a --add Adds something ? -r --remove Remove something ? -s --set Set something ? -t --ttl TTL if supported: -t +300 (relative, for 300 seconds) -t +02:20 (relative, til 2h 20 later) -t 02:20 (absolute, today at 2h20) -t +15:02:20 (in 15d..) ===== Tool list ===== * attr_mod MODULE [OPTIONS] OBJECT TARGET ATTRIBUTE value e.g.: set a file attribute: attr_util AUTH -s /bin/login FD auth_may_setuid 1 e.g.: view log attribute for user: attr_util GEN root USER log_user_based e.g.: set log attribute for user: attr_util GEN -s root USER log_user_based SEARCH 1 e.g.: change PaX flags: attr_util PAX -Rs /opt FD PMeRxS ===== "policy" tool ===== * Able to restore policy from simple config files * Able to include per package config files as well, in a compatible manner with above * Able to read the policy by different means (plugins), like, flat, xml, * Able to simplify per package configurations to inherited global settings in some clever way: ==>> /usr/bin inheritance, class executable ==>> /etc/ inheritance, class config /usr/bin/chess <= Class executable not applied /etc/chess.conf <= Class config not applied /usr/bin/ping <= Class Executable+Net ==> only class net applied * Able to load per path and per package (eg policy /proc at mount) Policy representation: * Needs to be concise (clear, precise) * Easy for the user (not a list of rules only) * Logical to maintain (per module ? what if some modules are on and others off ?) * Support classes (executables, scripts, libraries, ...)