aio-libs / aio-libs/aiohttp

UNIX socket permission bits

Open
#4,155 13 comments 3 reactions 0 assignees View on GitHub
enhancement
Dominant language
Python
Stars
16.5k
Forks
2.4k
Avg merge
17h 22m
Merged PRs (30d)
212

Description

I want to use a unix socket, but it's impossible when umask is 0022 or more strict, because the nginx `www-data` user can't connect and prints "Permission denied" error. I want to change the permission bits for the unix socket without touching umask (a strict umask is needed for other things of my project).

There was a PR https://github.com/aio-libs/aiohttp/pull/4002, but it's closed.

I tried to chmod after `on_startup` signal:

```python
class MyApp:
def __init__(self, config):
self.config = config
self.webapp = web.Application()
self.webapp.on_startup.append(self._on_startup)
# ...

def run_app(self):
web.run_app(
self.webapp,
path=self.config.unix_socket,
# ...
)

async def _on_startup(self, webapp):
os.chmod(self.config.unix_socket, self.config.unix_socket_mode)
```

But the `on_startup` signal is called *before* creating the socket, and `os.chmod` raises "No such file or directory: 'webapp.sock'" error.

Please implement an option for this or explain how to do it with the current version of aiohttp

Or maybe add `on_listen` signal? :)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.