What do you thing about setting umask in ovs-ctl script?
I seems to be quite usable (it will work find with systemd and also with direct 
invocation of ovs-ctl script):

diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in
index e6e07f476..3c59469c4 100644
--- a/utilities/ovs-ctl.in
+++ b/utilities/ovs-ctl.in
@@ -544,6 +544,7 @@ do
 done
 case $command in
     start)
+        umask 0002
         start_ovsdb || exit 1
         start_forwarding || exit 1
         add_managers

> On 26 Jan 2023, at 14:30, Ilya Maximets <[email protected]> wrote:
> 
> On 1/25/23 17:35, Vladislav Odintsov wrote:
>> 
>> 
>> Regards,
>> Vladislav Odintsov
>> 
>>> On 25 Jan 2023, at 19:16, Ilya Maximets <[email protected]> wrote:
>>> 
>>> On 1/25/23 16:15, Vladislav Odintsov wrote:
>>>> Hi,
>>>> 
>>>> I’m a bit confused about linux unix socket files permissions, created by 
>>>> ovs daemons.
>>>> 
>>>> From source code [0] I see it sets 0770 fchmod on file descriptor prior to 
>>>> socket bind(), assuming that sock file when creates will inherit FD’s 
>>>> permissions. So, I expect that after unix socket files created, they have 
>>>> rwxrwx--- permissions.
>>>> 
>>>> However if running, for instance, ovsdb-server as root, it seems that this 
>>>> fchmod() call has no effect. Instead default root umask (0022) seems to be 
>>>> used:
>>>> 
>>>> # ovsdb-server --remote punix:///var/run/openvswitch/ovs.sock 
>>>> /etc/openvswitch/ovs.db
>>>> # ls -l /var/run/openvswitch/ovs.sock
>>>> srwxr-x--- 1 root root 0 Jan 25 17:48 /var/run/openvswitch/ovs.sock
>>> 
>>> The requested mode and umask are both effective.
>>> The result is (mode & ~umask).  In your case:
>>> 
>>> 0770 & ~0022 = 0750, i.e. rwxr-x---
>>> 
>>>> 
>>>> If switch user to non-root (default umask 0002):
>>>> 
>>>> $ ovsdb-server --remote punix://$(pwd)/ovs.sock --unixctl=$(pwd)/ctl.sock 
>>>> ./ovs.db
>>>> $ ls -l ovs.sock
>>>> srwxrwx--- 1 vlodintsov vlodintsov 0 Jan 25 17:42 ovs.sock
>>> 
>>> 0770 & ~0002 = 0770
>>> 
>>>> 
>>>> If running as root, passing desired user as an argument to ovsdb-server, 
>>>> it still has the same as just root behaviour:
>>>> 
>>>> # ovsdb-server --remote punix:///var/run/openvswitch/ovs.sock 
>>>> /etc/openvswitch/ovs.db --user openvswitch:openvswitch
>>>> # ls -l /var/run/openvswitch/ovs.sock
>>>> srwxr-x--- 1 openvswitch openvswitch 0 Jan 25 17:47 
>>>> /var/run/openvswitch/ovs.sock
>>>> 
>>>> 
>>>> This line of code [0] is quite old (about 8 years), so what am I doing 
>>>> wrong?
>>>> Is it possible to make socket writable by group without extenal call chmod 
>>>> 0770 <path_to_socket> ?
>>> Process has inherited umask from the current shell, i.e. the parent
>>> process.  umask is not a property of a user, it is typically set for
>>> a shell session in bashrc or /etc/profile.
>>> 
>>> OVS has no way to know what is the desired umask for the user we're
>>> switching to.  So, it remains the same as it was.
>>> 
>>> Changing the umask for a current shell before starting the process
>>> should help, e.g.
>>> 
>>> (umask 0002 && \
>>> ovsdb-server --remote punix:$(pwd)/ovs.sock /etc/openvswitch/ovs.db \
>>>              --user openvswitch:openvswitch)
>> 
>> So, if we use systemd service unit provided by ovs repo, we should edit 
>> .service file?
>> Or maybe there is any other option for that?
> 
> I don't think there is a way to change umask of a running process
> from outside of that process.  So something will need to be modified.
> It can be a service file (UMask=...), or an ovs-ctl script or the
> code of the daemons themselves.
> 
>> 
>>> 
>>> Best regards, Ilya Maximets.
>>> 
>>>> 
>>>> 0: 
>>>> https://github.com/openvswitch/ovs/blob/v2.17.5/lib/socket-util-unix.c#L264
>>>> 
>>>> Regards,
>>>> Vladislav Odintsov
>>> 
>> 
> 
> _______________________________________________
> dev mailing list
> [email protected] <mailto:[email protected]>
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Regards,
Vladislav Odintsov

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to