The problem that I'm facing is that I have an NFS NAS that I use to store and export a home directory, media files like music, movies, etc.
The critical things are backed up, so spare the comments about "If you can't afford to lose it back it up rule of 3-2-1." Got it. But that's not happening for little ol' me and 7TB of data, so I backup what I need to.
So here's the thing, I like being able to export those directories to other computers so that I can read, and sometimes write, but I recently
rm -rf . /'d a bunch of stuff on my laptop and thankfully at the time they weren't mounted. I also realized, and tested recently, that doing something like that with the way I had NFS mounted, would have resulted in wiping everything out remotely, as well. (again spare me the lessons about rm, I got it I just have some really old bad habits to get rid of)
The ways that you can secure it are obvious. Only use the anon user, or export as ro, or mount as ro on the client computer. I don't like the latter option because it gives control to an attacker should they gain access to my network.
I need a way to satisfy the following conditions:
- Directories can be mounted by the client system, but are not normally writable, but are readable.
- At a later point, the user decides that they need to edit something and they do something to make that possible from the client computer.*
* meaning that I don't want to SSH in unless I absolutely have to
The only thing that seems to work functionally the way I'm thinking is to use
no_root_squash and mount the filesystem
ro on the client system, then
-o remount,rw when I need to change something, but like I said earlier I feel that has serious security implications.