On 23 September 2016 at 03:25, Joe Stringer <j...@ovn.org> wrote:

> ovs-lib creates several directories directly from the script, but
> doesn't make any attempt to ensure that the correct SELinux context is
> applied to these directories. As a result, the created directories end
> up with type var_run_t rather than openvswitch_var_run_t.
>
> During reboot using a tmpfs for /var/run, startup scripts will invoke
> ovs-lib to create these directories with the wrong context. If SELinux
> is enabled, OVS will fail to start as it cannot write to this directory.
>
> Fix the issue by sprinkling "restorecon" in each of the places where
> directories are created. In practice, many of these should otherwise be
> handled by packaging scripts but if they exist then we should ensure the
> correct SELinux context is set.
>
> On systems where 'restorecon' is unavailable, this should be a no-op.
>
> VMware-BZ: #1732672
>
> Signed-off-by: Joe Stringer <j...@ovn.org>
> Acked-by: Ansis Atteka <aatt...@ovn.org>
>
Thanks for taking care of this. I just did a basic test and I think your V2
patch is a good enhancement.


> ---
> v2: Only restore context in dir creation case.
>     Don't call restorecon with -R.
> ---
>  utilities/ovs-lib.in | 16 ++++++++++++----
>  1 file changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in
> index cbad85a36007..4c07750530b6 100644
> --- a/utilities/ovs-lib.in
> +++ b/utilities/ovs-lib.in
> @@ -148,6 +148,14 @@ version_geq() {
>      }'
>  }
>
> +install_dir () {
> +    DIR="$1"
> +    if test ! -d "$DIR"; then
> +        install -d -m 755 -o root -g root "$DIR"
> +        restorecon "$DIR" >/dev/null 2>&1
> +    fi
> +}
> +
>  start_daemon () {
>      priority=$1
>      wrapper=$2
> @@ -156,16 +164,16 @@ start_daemon () {
>      strace=""
>
>      # drop core files in a sensible place
> -    test -d "$DAEMON_CWD" || install -d -m 755 -o root -g root
> "$DAEMON_CWD"
> +    install_dir "$DAEMON_CWD"
>      set "$@" --no-chdir
>      cd "$DAEMON_CWD"
>
>      # log file
> -    test -d "$logdir" || install -d -m 755 -o root -g root "$logdir"
> +    install_dir "$logdir"
>      set "$@" --log-file="$logdir/$daemon.log"
>
>      # pidfile and monitoring
> -    test -d "$rundir" || install -d -m 755 -o root -g root "$rundir"
> +    install_dir "$rundir"
>      set "$@" --pidfile="$rundir/$daemon.pid"
>      set "$@" --detach
>      test X"$MONITOR" = Xno || set "$@" --monitor
> @@ -380,7 +388,7 @@ upgrade_db () {
>      schemaver=`ovsdb_tool schema-version "$DB_SCHEMA"`
>      if test ! -e "$DB_FILE"; then
>          log_warning_msg "$DB_FILE does not exist"
> -        install -d -m 755 -o root -g root `dirname $DB_FILE`
> +        install_dir `dirname $DB_FILE`
>          create_db "$DB_FILE" "$DB_SCHEMA"
>      elif test X"`ovsdb_tool needs-conversion "$DB_FILE" "$DB_SCHEMA"`" !=
> Xno; then
>          # Back up the old version.
> --
> 2.9.3
>
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to