Regarding socket permissions

Morten Nissov <[email protected]>
Newsgroups gmane.comp.time.chrony.user
Message-ID <CAGS3e0ZVzPRq2aodS45pRSrLwQGCRo2DruTjG1Wtrfzw0GUfmg@mail.gmail.com>
Hi,

Hopefully this isn't appropriate for this channel, I have had a hard time
finding an answer externally.

I have a C++ application which would like to send timing information to
`chrony`, the goal is sync between an MCU and a linux machine. I think I
need to input this as a REFCLOCK.

I see in the chrony code (I'm using v3.5 on ubuntu 20) that after creating
the socket it attempts to set the permissions to 666 (R/WR for all) while
the owner is root. My problem is that trying to access this socket from the
C++ script continuously returns error (13) permission denied.

Current the chrony config is

> refclock SOCK /var/run/chrony.ttyACM0.sock
>
Very basic just to start with. I thought perhaps I could change this to a
less restricted location, like

> refclock SOCK /tmp/chrony.ttyACM0.sock
>
Which then results in

> chronyd[3550180]: Fatal error : bind(/tmp/chrony.ttyACM0.sock) failed :
> Permission denied
>

The connection function is
// acquire a connection to an existing Unix-domain socket
socket_t netlib_localsocket(const char * sockfile, int socktype)
{
int sock;

if ((sock = socket(AF_UNIX, socktype, 0)) < 0) {
return -1;
} else {
struct sockaddr_un saddr;

memset(&saddr, 0, sizeof(struct sockaddr_un));
saddr.sun_family = AF_UNIX;
(void)strlcpy(saddr.sun_path, sockfile, sizeof(saddr.sun_path));

if (connect(sock, (struct sockaddr *)&saddr, SUN_LEN(&saddr)) < 0) {
(void)close(sock);
return -2;
}

return sock;
}
}

My C++ application is based off of GPSD, which I can't use directly because
I'm not strictly using GPS or NMEA messages and I can't give 100% control
of the serial port to any external program. The same application works with
SHM, I was attempting with sockets instead as I understand there should be
some advantages regarding latency with polling vs interrupt based
communications.

Curious if any of you had an idea of what could be wrong.

Best regards,
Morten
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.