Ack.

Thanks,
Ramesh.


On 9/26/2014 12:23 PM, Hans Feldt wrote:
>   osaf/libs/core/leap/os_defs.c |  24 ++----------------------
>   1 files changed, 2 insertions(+), 22 deletions(-)
>
>
> OpenSAF as non root cannot be started in a linux container. SMFD cannot write
> its PID file.
>
> When opensaf is running as non root in a container, the setuid/setgid feature
> in ncs_os_process_execute_timed() causes problem. The new user/group is picked
> up from the installed binaries. If they happen to not be the same as the
> configured ones for opensaf, AMF started programs cannot write PID files.
>
> This feature is removed also reducing the amount of system calls between fork
> and exec which has been a problem.
>
> diff --git a/osaf/libs/core/leap/os_defs.c b/osaf/libs/core/leap/os_defs.c
> --- a/osaf/libs/core/leap/os_defs.c
> +++ b/osaf/libs/core/leap/os_defs.c
> @@ -955,6 +955,8 @@ uint32_t ncs_os_process_execute_timed(NC
>       osaf_mutex_lock_ordie(&s_cloexec_mutex);
>   
>       if ((pid = fork()) == 0) {
> +             /* child part */
> +
>               /*
>                ** Make sure forked processes have default scheduling class
>                ** independent of the callers scheduling class.
> @@ -989,28 +991,6 @@ uint32_t ncs_os_process_execute_timed(NC
>                               syslog(LOG_ERR, "%s: freopen stderr failed - 
> %s", __FUNCTION__, strerror(errno));
>               }
>   
> -             /* RUNASROOT gives the OpenSAF user a possibility to maintain 
> the < 4.2 behaviour.
> -              * For example the UML environment needs this because of its 
> simplified user management.
> -              * OpenSAF processes will otherwise be started as the real host 
> user and will
> -              * have problems e.g. writing PID files to the root owned 
> directory.
> -              */
> -#ifndef RUNASROOT
> -             /* Check owner user ID of file and change group and user 
> accordingly */
> -             {
> -                     struct stat buf;
> -                     if (stat(req->i_script, &buf) == 0) {
> -                             if (setgid(buf.st_gid) == -1)
> -                                     syslog(LOG_ERR, "setgid %u failed - 
> %s", buf.st_gid, strerror(errno));
> -                             if (setuid(buf.st_uid) == -1)
> -                                     syslog(LOG_ERR, "setuid %u failed - 
> %s", buf.st_uid, strerror(errno));
> -                     } else {
> -                             syslog(LOG_ERR, "Could not stat %s - %s", 
> req->i_script, strerror(errno));
> -                             exit(128);
> -                     }
> -             }
> -#endif
> -
> -             /* child part */
>               if (execvp(req->i_script, req->i_argv) == -1) {
>                       syslog(LOG_ERR, "%s: execvp '%s' failed - %s", 
> __FUNCTION__, req->i_script, strerror(errno));
>                       exit(128);


------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to