Skip to main content

Library for making somewhat conformant NFS and SunRPC clients and servers

Project description

ShenanigaNFS

Python library for making somewhat conformant-ish low-level NFSv2/3 clients and servers. Includes tools for making NFS servers with mount-specific FS state and a VFS API similar to FUSE for making custom filesystems.

Primarily meant for use-cases where a real FUSE filesystem shared over NFS wouldn't be appropriate, such as when each client must receive a distinct filesystem. Authentication is intentionally unsupported as are file locking and transport encryption.

Features

  • SunRPC IDL -> Client / Server stub generator (outputs type hints too!)
  • RPCBind / PortMapper server implementation
    • Optional, can register services with system RPCbind if preferred
  • Basic NFSv2 and NFSv3 implementations
  • asyncio-based networking, TCP-only for the moment
  • Example filesystems (SimpleFS, ZipFS)

Is this appropriate for production use?

No.

I needed the ability to expose an unauthenticated, world-writable filesystem to the public internet, and each mounter needed to have their writes only accessible to themselves, and it needed to be somewhat hardened against DoS. If you just need a user mode NFS server, I recommend NFS Ganesha.

Otherwise, the tools are low-level enough to be useful for reverse engineering and creating intentionally misbehaved filesystems.

Running RPCBind as non-root

See https://stackoverflow.com/a/414258 for how to allow your script to bind to low ports. In short:

sudo setcap 'cap_net_bind_service=+ep' /path/to/python

Acknowledgements

  • PineFS - Used as the basis for the XDR and IDL parsing code
  • go-nfs - Unrelated, but seems like we started writing them at the same time. Also it looks nice and is probably more stable, give it a look.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ShenanigaNFS-0.2.tar.gz (45.9 kB view details)

Uploaded Source

Built Distribution

ShenanigaNFS-0.2-py3-none-any.whl (55.6 kB view details)

Uploaded Python 3

File details

Details for the file ShenanigaNFS-0.2.tar.gz.

File metadata

  • Download URL: ShenanigaNFS-0.2.tar.gz
  • Upload date:
  • Size: 45.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for ShenanigaNFS-0.2.tar.gz
Algorithm Hash digest
SHA256 994782c8947b35eac15d540d58cf60b9dcc1024a18f2f0cadd3baa5b0d977601
MD5 8c6e6e1e253689784cc56e9265eae96b
BLAKE2b-256 5a82e690c02bc4dcfd2f642b14411306b9709f14228ebb84e315be9caff008e9

See more details on using hashes here.

File details

Details for the file ShenanigaNFS-0.2-py3-none-any.whl.

File metadata

  • Download URL: ShenanigaNFS-0.2-py3-none-any.whl
  • Upload date:
  • Size: 55.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for ShenanigaNFS-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b222cebf92fa1ee575624933475c8331fc1c8298b63052c433807011c1a16bbe
MD5 5aa0b2f52694ac41c65d97515d646c79
BLAKE2b-256 995ccbfebf5133adc1c900271ba97d2b210e2838ed63fbfb40e917deea306758

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page