pjdfstest icon indicating copy to clipboard operation
pjdfstest copied to clipboard

Run without root

Open dianarg opened this issue 2 years ago • 7 comments

I would like to run these tests, but don't have root privileges. What would need to change to run these tests as a non-root user?

dianarg avatar Jul 06 '22 18:07 dianarg

It's basically impossible as they're written now. HOWEVER, @musikid is working on a pjdfstest rewrite which will include that feature: https://github.com/musikid/pjdfstest . Note though that the test coverage will be severely reduced when running as a non-root user.

asomers avatar Jul 06 '22 18:07 asomers

As a workaround, I created a docker image containing pjdfstest and the build dependencies here: https://hub.docker.com/r/dianarg/pjdfstest. Use at your own risk. You can mount host directories to be tested using docker run --volume to make them visible within the container. Let me know if you want me to open a PR with the Dockerfile.

dianarg avatar Jul 19 '22 21:07 dianarg

OK, after testing the above image on the rootless system, I am still seeing test failures. I'm not sure if this is related to using Rootless Docker, but I'll keep investigating.

dianarg avatar Jul 19 '22 22:07 dianarg

What exactly are you trying to accomplish? If you want 100% test coverage, then that absolutely requires root. Using Linux's FS namespaces you might be able to do some privileged operations as a non-root user, but probably not all.

asomers avatar Jul 19 '22 22:07 asomers

I want to reproduce the testing done by the JuiceFS devs described in https://github.com/juicedata/juicefs#posix-compatibility. I was hoping running as "root" inside a container would get around checks for uid==0

Which tests absolutely require root, and which ones are using root as an artifact of how the tests are written? For example, I believe it should be possible to test operations like create/unlink/read/write as long as the test user has permissions on the directory used for the test.

dianarg avatar Jul 19 '22 22:07 dianarg

As-written, pjdfstest doesn't distinguish between tests that need root and tests that don't. But with @musikid's rewrite, it will. In that branch, a non-root user can do a smoke test that covers unprivileged operations like chmod and truncate. But a large part of the test suite will still require root privileges, and there isn't any getting around that.

asomers avatar Jul 19 '22 23:07 asomers

Thanks @asomers , I will try playing around with @musikid's fork for now

dianarg avatar Jul 21 '22 16:07 dianarg