Open-Source-Software-Entwicklung und Downloads

Browse Subversion Repository

Diff of /trunk/1.8.x/ccs-patch/README.ccs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/1.7.x/ccs-patch/README.ccs revision 3131 by kumaneko, Tue Nov 3 03:51:07 2009 UTC trunk/1.8.x/ccs-patch/README.ccs revision 3934 by kumaneko, Wed Sep 1 14:04:16 2010 UTC
# Line 485  Fix 2006/08/10 Line 485  Fix 2006/08/10
485        domain ACL. For example,        domain ACL. For example,
486    
487          "1 /bin/sh if task.euid!=0"          "1 /bin/sh if task.euid!=0"
488    
489        allows the domain to execute /bin/sh only when the process's euid        allows the domain to execute /bin/sh only when the process's euid
490        is not 0, and        is not 0, and
491    
# Line 871  Fix 2007/04/18 Line 871  Fix 2007/04/18
871        based on realpath while argv[0] check is done based on the symlink's        based on realpath while argv[0] check is done based on the symlink's
872        pathname and argv[0], this specification will allow attackers behave        pathname and argv[0], this specification will allow attackers behave
873        as /bin/cat in the domain of /bin/ls if "/bin/ls and /bin/cat are        as /bin/cat in the domain of /bin/ls if "/bin/ls and /bin/cat are
874        links to /sbin/busybox" and "the attacker is permitted to create        links to /sbin/busybox" and "the attacker is permitted to create
875        a symlink named ~/cat that points to /bin/ls" and "the attacker is        a symlink named ~/cat that points to /bin/ls" and "the attacker is
876        permitted to run /bin/ls".        permitted to run /bin/ls".
877        So, I changed to compare the basename of realpath and argv[0].        So, I changed to compare the basename of realpath and argv[0].
# Line 959  Fix 2007/08/06 Line 959  Fix 2007/08/06
959    
960        Until now, users had to add init=/.init parameter to load policy        Until now, users had to add init=/.init parameter to load policy
961        before /sbin/init starts.        before /sbin/init starts.
962        I inserted call_usermodehelper() to call external policy loader when        I inserted call_usermodehelper() to call external policy loader when
963        execve("/sbin/init") is requested and external policy loader exists.        execve("/sbin/init") is requested and external policy loader exists.
964    
965        This change will remove init=/.init parameter from most environment,        This change will remove init=/.init parameter from most environment,
# Line 1003  Fix 2007/08/17 Line 1003  Fix 2007/08/17
1003    
1004      @ Remove initializer directive.      @ Remove initializer directive.
1005    
1006        Use "initialize_domain" instrad of "initializer".        Use "initialize_domain" instead of "initializer".
1007    
1008  Fix 2007/08/21  Fix 2007/08/21
1009    
# Line 2046  Fix 2009/09/01 Line 2046  Fix 2009/09/01
2046        kernel 2.6.31 introduced memory leak detection mechanism        kernel 2.6.31 introduced memory leak detection mechanism
2047        ( CONFIG_DEBUG_KMEMLEAK ), TOMOYO no longer needs to use own list.        ( CONFIG_DEBUG_KMEMLEAK ), TOMOYO no longer needs to use own list.
2048    
2049        I removed the list to ruduce use of spinlocks.        I removed the list to reduce use of spinlocks.
2050    
2051      @ Rewrite ccs-patch-2.\*.diff .      @ Rewrite ccs-patch-2.\*.diff .
2052    
2053        ccs-patch-2.\*.diff was rewriteen like LSM hooks.        ccs-patch-2.\*.diff was rewritten like LSM hooks.
2054    
2055      @ Don't check "allow_read/write" for open-for-ioctl-only.      @ Don't check "allow_read/write" for open-for-ioctl-only.
2056    
# Line 2066  Fix 2009/09/01 Line 2066  Fix 2009/09/01
2066    
2067      @ Move files from fs/ to security/ccsecurity.      @ Move files from fs/ to security/ccsecurity.
2068    
2069        Config menu section changed from "File systems" to "Security options".        Config menu section changed from "File systems" to "Security options".
2070    
2071        Kernel config symbols changed from CONFIG_SAKURA CONFIG_TOMOYO        Kernel config symbols changed from CONFIG_SAKURA CONFIG_TOMOYO
2072        CONFIG_SYAORAN to CONFIG_CCSECURITY .        CONFIG_SYAORAN to CONFIG_CCSECURITY .
# Line 2084  Fix 2009/09/01 Line 2084  Fix 2009/09/01
2084        the domain which the process belongs to.        the domain which the process belongs to.
2085    
2086        Thus, I added global PID in audit logs.        Thus, I added global PID in audit logs.
2087          
2088      @ Transit to new domain before do_execve() succeeds.      @ Transit to new domain before do_execve() succeeds.
2089    
2090        Permission checks for interpreters and environment variables are        Permission checks for interpreters and environment variables are
2091        done using new domain. In order to be allow ccs-queryd to reach the new        done using new domain. In order to allow ccs-queryd to reach the new
2092        domain via global PID, I reverted "Don't transit to new domain until        domain via global PID, I reverted "Don't transit to new domain until
2093        do_execve() succeeds." made on 2008/10/07.        do_execve() succeeds." made on 2008/10/07.
2094    
# Line 2173  Fix 2009/10/05 Line 2173  Fix 2009/10/05
2173      @ Fix size truncation bug at ccs_memcmp().      @ Fix size truncation bug at ccs_memcmp().
2174    
2175        ccs_memcmp() was using "u8" for size parameter by error. Therefore, when        ccs_memcmp() was using "u8" for size parameter by error. Therefore, when
2176        size >= 256 was passed to ccs_memcmp(), it was doing partial comarison        size >= 256 was passed to ccs_memcmp(), it was doing partial comparison
2177        (incorrect result) or read overrun (CPU stall).        (incorrect result) or read overrun (CPU stall).
2178    
2179        ccs_memcmp() should use "size_t" for size parameter because size of        ccs_memcmp() should use "size_t" for size parameter because size of
# Line 2218  Fix 2009/11/03 Line 2218  Fix 2009/11/03
2218        atomic_dec_and_test() for removing an element from a list.        atomic_dec_and_test() for removing an element from a list.
2219        I moved that operation to garbage collector in order to reduce frequency        I moved that operation to garbage collector in order to reduce frequency
2220        of mutex_lock()/mutex_unlock() calls.        of mutex_lock()/mutex_unlock() calls.
2221    
2222        @ Escape from nested loops correctly.
2223    
2224          In ccs_read_address_group_policy(), I was escaping from nested loops
2225          correctly. But in ccs_read_path_group_policy() and
2226          ccs_read_number_group_policy(), I wasn't.
2227    
2228          As a result, reading path_group and number_group caused kernel oops
2229          when they were not read atomically.
2230    
2231    Fix 2009/11/06
2232    
2233        @ Fix incorrect allow_mount audit log.
2234    
2235          Audit log for allow_mount was using decimal format.
2236          It needs to use hexadecimal format.
2237    
2238    Fix 2009/11/09
2239    
2240        @ Add profile version check.
2241    
2242          To avoid upgrading from TOMOYO 1.6.x to TOMOYO 1.7.x without upgrading
2243          /proc/ccs/profile (which results in not protecting the system at all),
2244          I added a check for PROFILE_VERSION= .
2245    
2246    Version 1.7.1   2009/11/11   Fourth anniversary release.
2247    
2248    Fix 2009/11/13
2249    
2250        @ Don't use core_initcall() for initializing lock for GC.
2251    
2252         Some kernels call TOMOYO's hooks before processing core_initcall().
2253         Thus, I can't use core_initcall() for initializing lock for GC.
2254    
2255    Fix 2009/11/18
2256    
2257        @ Don't check "allow_write" permission for open(O_RDONLY | O_TRUNC).
2258    
2259          Since TOMOYO checks "allow_truncate" permission rather than "allow_write"
2260          permission for O_TRUNC, I need to distinguish open(O_RDONLY | O_TRUNC)
2261          and open(O_RDWR | O_TRUNC). But I made a mistake between TOMOYO 1.7.0 and
2262          1.7.1 which made it impossible for TOMOYO for kernels 2.6.14 and earlier
2263          to distinguish them.
2264    
2265    Fix 2009/11/27
2266    
2267        @ Use newly created domain's name for domain creation audit log.
2268    
2269          Since 1.7.0 , /proc/ccs/reject_log was by error using existing domain's
2270          name when auditing newly created domain's "use_profile" line.
2271    
2272    Fix 2009/12/12
2273    
2274        @ Use rcu_read_lock() for find_task_by_pid().
2275    
2276          Since kernel 2.6.18 , caller of find_task_by_pid() needs to call
2277          rcu_read_lock() rather than read_lock(&tasklist_lock) because find_pid()
2278          uses RCU primitives but spinlock does not prevent RCU callback if
2279          preemptive RCU ( CONFIG_PREEMPT_RCU or CONFIG_TREE_PREEMPT_RCU ) is
2280          enabled.
2281    
2282    Fix 2009/12/15
2283    
2284        @ Allow deleting "quota_exceeded" and "transition_failed" entries.
2285    
2286          To notify users of "this domain has too many entries to hold" and "some
2287          process in this domain was not able to perform domain transition",
2288          "quota_exceeded" and "transition_failed" messages are used respectively.
2289          These messages were not deletable. But it is more convenient for users
2290          to be notified again if such events occurred again after tuning policy.
2291          Thus, I made these messages deletable.
2292    
2293    Fix 2009/12/17
2294    
2295        @ Don't check read permission in ccs_try_alt_exec().
2296    
2297          While I was trying to remove ccs_execve_list list for GC optimization
2298          between TOMOYO 1.7.0 and 1.7.1 , I made a mistake which made TOMOYO to
2299          check allow_read permission of the programs specified by execute_handler
2300          and denied_execute_handler keywords.
2301    
2302        @ Don't check DAC permission if disabled mode.
2303    
2304          I was checking DAC permissions regarding directory entry modification
2305          operations (e.g. mkdir()) even if mode=disabled . It is a waste of CPU
2306          resource to check DAC permissions when MAC permissions are not checked.
2307          Thus, I modified to skip DAC permission checks if mode=disabled .
2308    
2309    Fix 2009/12/19
2310    
2311        @ Fix memory leak in ccs_environ().
2312    
2313          When I fixed a bug that a permission like
2314    
2315            allow_env PATH if exec.envp["PATH"]="/"
2316    
2317          was not working (2009/11/02), I allocated two buffers but only one buffer
2318          was released.
2319    
2320          This bug will trigger OOM killer if environment variable checking is
2321          enabled.
2322    
2323    Fix 2010/01/17
2324    
2325        @ Use current domain's name for execute_handler audit log.
2326    
2327          Since 1.6.7 , /proc/ccs/grant_log was by error using next domain's name
2328          when auditing current domain's "execute_handler" line.
2329    
2330    Fix 2010/03/02
2331    
2332        @ Allow domain transition without execve().
2333    
2334          To be able to split permissions for Apache's CGI programs which are
2335          executed without execve(), I added special domain transition which is
2336          performed by atomically writing '\0'-terminated binary string to
2337          /proc/ccs/.transition interface. For example, a process which belongs to
2338          "<kernel> /usr/sbin/httpd" domain will transit to
2339          "<kernel> /usr/sbin/httpd //app=cgi1\040id=10000" domain by atomically
2340          writing "app=cgi1 id=10000" + '\0' to /proc/ccs/.transition using
2341          Apache's ap_hook_handler() functionality.
2342    
2343          Note that '\0'-terminated binary string is converted to TOMOYO's string
2344          inside kernel and prefix "//" is automatically added to the string so
2345          that domainname does not conflict with domainnames created by execve().
2346          Without this prefix, if "<kernel> /usr/sbin/sshd /bin/bash" domain is
2347          allowed to open /proc/ccs/.transition for writing and
2348          "<kernel> /usr/sbin/sshd /bin/bash /usr/bin/passwd" domain is allowed to
2349          access /etc/shadow , /bin/bash will be able to access /etc/shadow by
2350          atomically writing "/usr/bin/passwd" + '\0' to /proc/ccs/.transition .
2351          Allowing /bin/bash to access /etc/shadow is not what people want.
2352    
2353          Permission for this operation is checked by "allow_transit" keyword.
2354          Unlike "allow_execute" keyword, the string parameter for "allow_transit"
2355          keyword does not refer a real file on filesystem's namespace. Therefore,
2356          you can store any combination of parameters like LDAP's DN entry in the
2357          string parameter for "allow_transit" keyword.
2358    
2359    Fix 2010/03/08
2360    
2361        @ Allow building as loadable kernel module.
2362    
2363          To be able to minimize filesize increment of vmlinux, I made it
2364          possible to compile TOMOYO Linux as loadable kernel module.
2365          Although patching the kernel source and recompiling the kernel are
2366          inevitable, this change will make it easier to enable TOMOYO Linux
2367          when there is a filesize limitation on vmlinux (e.g. embedded systems).
2368    
2369    Fix 2010/03/25
2370    
2371        @ Fix ccs_get_ipv6_address() bug.
2372    
2373          Since 1.7.0 , ccs_get_ipv6_address() was by error returning address of
2374          "struct list_head ccs_address_list" if memory allocation failed.
2375          As a result, ccs_put_ipv6_address() will modify memory near
2376          "struct list_head ccs_address_list" if memory allocation failed.
2377    
2378    Fix 2010/03/26
2379    
2380        @ Fix ccs_lport_reserved() bug.
2381    
2382          Since 1.7.0 , ccs_lport_reserved() was by error checking wrong port
2383          number. As a result, "deny_autobind" keyword was not working as expected.
2384    
2385    Version 1.7.2   2010/04/01   Feature enhancement release.
2386    
2387    Fix 2010/04/10
2388    
2389        @ Fix invalid "struct nameidata" to "struct path" conversion macro.
2390    
2391          Regarding kernels 2.6.24 and earlier, I was converting "struct nameidata"
2392          to "struct path" in caller side so that I can unify the callee function's
2393          parameter type. But it turned out that the macro I used did not follow C
2394          standards and did not work with gcc 4.x . As a result, "allow_pivot_root"
2395          keyword was not working as expected.
2396    
2397    Fix 2010/05/05
2398    
2399        @ Fix incorrect audit on/off control.
2400    
2401          The grant_log= and reject_log= parameters of CONFIG::misc::env were not
2402          used because I forgot to update request type. As a result, those of
2403          CONFIG::file::execute were used for CONFIG::misc::env .
2404    
2405          Those of CONFIG::file::rewrite were not used because I forgot to update
2406          request type. As a result, those of CONFIG::file::truncate were used for
2407          CONFIG::file::rewrite .
2408    
2409    Fix 2010/05/10
2410    
2411        @ Fix incorrect out of memory warning.
2412    
2413          Out of memory warnings were not printed in some cases by error.
2414    
2415    Fix 2010/05/27
2416    
2417        @ Add missing rcu_dereference() for ccs_find_execute_handler().
2418    
2419          Since 1.7.0 , ccs_find_execute_handler() was by error using
2420          list_for_each_entry() rather than list_for_each_entry_rcu().
2421          This bug affects only Alpha architecture.
2422    
2423    Fix 2010/06/03
2424    
2425        @ Fix missing sanity check for "file_pattern".
2426    
2427          Since 1.7.0 , ccs_write_pattern_policy() was by error accepting
2428          invalid pathname.
2429    
2430    Fix 2010/06/09
2431    
2432        @ Add missing ccs_put_name() in ccs_parse_envp().
2433    
2434          Since 1.7.0 , ccs_parse_envp() was not calling ccs_put_name() if
2435          environment variable's value ('if exec.envp["name"]="value"' condition)
2436          was invalid.
2437    
2438        @ Add missing NULL check in ccs_condition().
2439    
2440          Since 1.7.0 , if 'if symlink.target=' part was given against non-file
2441          permissions (e.g. allow_env PATH if symlink.target="/"), it triggered
2442          NULL pointer dereference.
2443    
2444    Fix 2010/09/01
2445    
2446        @ Change directives.
2447    
2448          I removed "allow_" prefix from directives. New directives for files are
2449          prefixed with "file ". For example, "allow_read" changed to "file read",
2450          "allow_ioctl" changed to "file ioctl". New directive for "allow_network
2451          TCP" is "network inet stream", "allow_network UDP" is "network inet
2452          dgram", "allow_network RAW" is "network inet raw". New directive for
2453          "allow_env" is "misc env". New directive for "allow_signal" is "ipc
2454          signal". New directive for "allow_capability" is "capability". These new
2455          directives correspond with keywords used by profile's CONFIG lines.
2456    
2457          I removed "deny_rewrite" and "allow_rewrite" directives and introduced
2458          "file append" directive. Thus, permission for open(O_WRONLY | O_APPEND)
2459          changed from "allow_write" + "allow_rewrite" to "file append".
2460    
2461          I removed "SYS_MOUNT", "SYS_UMOUNT", "SYS_CHROOT", "SYS_KILL",
2462          "SYS_LINK", "SYS_SYMLINK", "SYS_RENAME", "SYS_UNLINK", "SYS_CHMOD",
2463          "SYS_CHOWN", "SYS_IOCTL", "SYS_PIVOT_ROOT" keywords from capabilities
2464          because these permissions can be checked by other directives (e.g.
2465          "file mount", "ipc signal").
2466    
2467          I also removed "conceal_mount" keyword from capabilities because this
2468          check requires hooks in filesystem part while almost all hooks for
2469          filesystem part have moved to LSM by Linux 2.6.34.
2470    
2471          New directive for "execute_handler" is "task auto_execute_handler",
2472          "denied_execute_handler" is "task denied_execute_handler".
2473    
2474        @ Distinguish send() and recv() operations.
2475    
2476          Until now, it was impossible for UDP and IP sockets to allow either
2477          only sending or only receiving because permissions were aggregated with
2478          "connect" keyword. I broke "connect" keyword into "send" and "recv"
2479          keywords so that you can keep access control for send() operation enabled
2480          when you have to disable access control for recv() operation due to
2481          application breakage by discarding incoming datagram.
2482    
2483        @ Wait for next connection/datagram if current connection/datagram was
2484          discarded.
2485    
2486          Regarding "network inet stream accept", "network inet dgram recv",
2487          "network inet raw recv" directives, I modified to wait for next
2488          connection/datagram if current connection/datagram was discarded.
2489          LSM hooks for these directives are currently missing because this
2490          behavior may break applications. If you found applications broken by
2491          this behavior, you can set CONFIG::network::inet_stream_accept and/or
2492          CONFIG::network::inet_dgram_recv and/or CONFIG::network::inet_raw_recv
2493          to mode=disabled in order to only disable filtering for incoming
2494          connection/datagram.
2495    
2496        @ Add Unix domain socket restriction support.
2497    
2498          Until now, it was possible to restrict only inet domain sockets (i.e.
2499          TCP/UDP/RAW). I added restriction for Unix domain sockets (i.e. stream/
2500          dgram/seqpacket). New directive "network unix" is added as well as
2501          "network inet" directive.
2502    
2503        @ Allow specifying multiple permissions in a line.
2504    
2505          Until now, only "allow_read/write" can be specified for combination of
2506          "allow_read" + "allow_write". Now, you can combine other permissions as
2507          long as type of parameters for these permissions is same. For example,
2508          "file read/write/append/execute/unlink/truncate /tmp/file" is correct
2509          but "file read/write/create /tmp/file" is wrong because "file create"
2510          requires create mode whereas "file read" and "file write" do not.
2511    
2512        @ Allow wildcard for execute permission and domainname.
2513    
2514          Until now, to execute programs with temporary names, "aggregator" is
2515          needed. To simplify code, I modified to accept wildcards for execute
2516          permission and domainname. Now, you can directly specify
2517          "file execute /tmp/logrotate.\?\?\?\?\?\?" and use
2518          "/tmp/logrotate.\?\?\?\?\?\?" within domainnames.
2519    
2520        @ Change pathname for non-rename()able filesystems.
2521    
2522          LSM version of TOMOYO wants to use /proc/self/ rather than /proc/$PID/ if
2523          $PID matches current thread's process ID in order to prevent current
2524          thread from accessing other process's information unless needed.
2525          But since procfs can be mounted on various locations (e.g. /proc/ /proc2/
2526          /p/ /tmp/foo/100/p/ ), LSM version of TOMOYO cannot tell that whether the
2527          numeric part in the string returned by __d_path() represents process ID
2528          or not.
2529    
2530          Therefore, to be able to convert from $PID to self no matter where procfs
2531          is mounted, I changed pathname representations for filesystems which do
2532          not support rename() operation (e.g. proc, sysfs, securityfs).
2533    
2534          Now, "/proc/self/mounts" changed to "proc:/self/mounts" and
2535          "/sys/kernel/security/" changed to "sys:/kernel/security/" and
2536          "/dev/pts/0" changed to "devpts:/0".
2537    
2538        @ Add a new keyword "any" for domain transition control.
2539    
2540          To be able to make it easier to apply auto_execute_handler on each
2541          domain, I added "any" keyword to domain transition control keywords. Now,
2542          "initialize_domain /usr/sbin/sshd" changed to
2543          "initialize_domain /usr/sbin/sshd from any" and
2544          "keep_domain <kernel> /usr/sbin/sshd /bin/bash" changed to
2545          "keep_domain any from <kernel> /usr/sbin/sshd /bin/bash".
2546    
2547          "keep_domain /path/to/auto_execute_handler from any" will allow you to
2548          apply auto_execute_handler for any domains without creating domains for
2549          auto_execute_handler.
2550    
2551        @ Change buffering mode for reading policy.
2552    
2553          To be able to read() very very long lines correctly, I changed the way
2554          TOMOYO buffers policy for reading.
2555    
2556        @ Introduce "acl_group" keyword.
2557    
2558          Until now, it was possible to specify only "allow_read" and "allow_env"
2559          keywords in the exception policy.
2560    
2561          Since some operations like "file read/write/append /dev/null" and
2562          "network UDP send/recv @DNS_SERVER 53" are very common and should be
2563          permitted to all domains, I introduced "acl_group" keyword for giving
2564          such permissions.
2565    
2566          For example, specify "acl_group 0 file read/write/append /dev/null" in
2567          the exception policy and specify "use_group 0" from the domains in the
2568          domain policy.
2569    
2570          "ignore_global_allow_read" and "ignore_global_allow_env" directives were
2571          removed from domain policy and "use_group" keyword was added.
2572    
2573        @ Allow controlling generation of access granted logs for per an entry
2574          basis.
2575    
2576          I added per-entry flag which controls generation of grant logs because
2577          Xen and KVM issues ioctl requests so frequently. For example,
2578    
2579            file ioctl /dev/null 0x5401 if audit=no
2580    
2581          will suppress /proc/ccs/grant_log even if profile says grant_log=yes .
2582    
2583            file ioctl /dev/null 0x5401 if audit=yes
2584    
2585          will generate /proc/ccs/grant_log even if profile says grant_log=no .
2586    
2587            file ioctl /dev/null 0x5401
2588    
2589          will generate /proc/ccs/grant_log only if profile says grant_log=yes .
2590    
2591          This flag is intended for frequently accessed resources like
2592    
2593            file read /var/www/html/\{\*\}/\*.html if audit=no
2594    
2595          .
2596    
2597        @ Change profile structure.
2598    
2599          To make it clear that preferences can be specified by per-profile basis,
2600          I removed global preference ("PREFERENCE::"). Now, you need to explicitly
2601          specify per-profile preference ("$profilenumber-PREFERENCE::").
2602          
2603          I changed default mode for access grant logs from "yes" to "no".
2604          You may change mode to "yes" if you want all grant logs to be generated.
2605          You may override mode using "if audit=yes" if you want specific grant
2606          logs to be generated.
2607    
2608          Since printing all warning/error messages to console is noisy,
2609          I changed verbose mode control from per-preference basis to
2610          per-functionality basis. Now, you can selectively print warning/error
2611          messages.
2612    
2613        @ Automatically create domain by execve() even if enforcing mode.
2614    
2615          Until now, new domains are not created if the domain was not defined and
2616          current domain is enforcing mode ("CONFIG::file::execute=enforcing").
2617    
2618          To be able to restrict shell session without using "keep_domain",
2619          I changed to create new domains automatically even if current domain is
2620          enforcing mode.
2621    
2622        @ Replace "task.state" with "auto_domain_transition".
2623    
2624          task.state is difficult to use. Thus, I replaced task.state with
2625          auto_domain_transition which performs domain transition instead of
2626          changing current process's state variables.
2627    
2628          If domain transition failed, current process will be killed by SIGKILL
2629          signal. This should not happen in normal circumstances, for you know the
2630          domain to transit to and thereby you will define the domain beforehand
2631          when you use "auto_domain_transition" keyword.
2632    
2633        @ Replace "allow_transit" with "task manual_domain_transition".
2634    
2635          I changed this directive to specify absolute domainname (e.g.
2636          "<kernel> /usr/sbin/httpd //app=cgi1\040id=10000") rather than virtual
2637          pathname (e.g. "//app=cgi1\040id=10000") because you know the domain to
2638          transit to and thereby you will define the domain beforehand when you use
2639          "task manual_domain_transition" directive.
2640    
2641          This change allows you to jump to arbitrary domain.
2642    
2643        @ Add "task auto_domain_transition".
2644    
2645          This is similar to "task manual_domain_transition", but is automatically
2646          applied if conditions are met. For example,
2647    
2648            task auto_domain_transition <kernel> //./non-root if task.uid!=0
2649    
2650          will automatically jump to "<kernel> //./non-root" domain if current
2651          process's UID is not 0 whereas
2652    
2653            task manual_domain_transition <kernel> //./non-root if task.uid!=0
2654    
2655          will jump to "<kernel> //./non-root" domain if current process's UID is
2656          not 0 and current process wrote "<kernel> //./non-root" + '\n' to
2657          /proc/ccs/.transition interface.
2658    
2659          If domain transition failed, current process will be killed by SIGKILL
2660          signal.
2661    
2662        @ Optimize for object's size.
2663    
2664          I merged similar code in order to reduce object's filesize.
2665    
2666    Version 1.8.0 2010/XX/XX   Feature enhancement release.

Legend:
Removed from v.3131  
changed lines
  Added in v.3934

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26