sftp is easy to setup and use on Linux. There are good clients for every other OS.
Code:
$ sudo apt install ssh fail2ban
That's it. By default, every normal local user on the Ubuntu system will have sftp access using their Ubuntu login.
From Windows, use WinSCP. Connect to the Ubuntu system using sftp/scp and then drag-n-drop files.
From other Linux clients, use any linux file manager. In the URL field, put in the IP address (sftp://192.169.1.x) or DNS name (sftp://bobs-computer) or mDNS name (sftp://bobs-computer.local), make the connection, enter the userid/password and drag-n-drop files to from any other file-manager window onto the Linux server.
sftp is easy and secure enough if using ssh-keys, never passwords, for internet use.
Setting this up takes 30 seconds. The hardest part is hunting down the winscp for Windows setup.exe.
You can setup an account to be shared by everyone in the house, if you like. I wouldn't, but you could.
You can create ssh-keys and pre-install those on all the clients to connect to the server. This would make the access seamless. No prompts for users or passwords, but that setup takes a but more, especially on Windows. On Linux/Unix systems, it is 2 commands - 30 seconds total. For most Linux noobs, it will take longer to type the commands correctly because they won't use select/paste or don't know how. I think I could setup password-less access for ssh, scp, sftp, rsync between a Linux client and ubuntu server in less than 30 seconds total time. 5 commands total. 2 on the server, 3 on the client - this assumes 100% default and working Ubuntu on both sides. It really is that simple. No need to have bad security.
Just running sudo apt install ssh on both the client and the server will make using ssh/scp/sftp between both systems with userids and passwords possible, though entering or having a file manager remember a password is poor security. Use ssh-keys, please.
But between Windows and Linux, CIFS is the expected answer and should perform a little better since it lacks the same level of authentication and encryption as sftp/ssh/scp use.
To share all the files in 1 directory for read-only access, there are plenty of 1-line webservers. Python, Ruby, Perl all have 1.
Python 2.x
Code:
$ python -m SimpleHTTPServer 8000
Python 3.x
Code:
$ python -m http.server 8000
Ruby
Code:
$ ruby -rwebrick -e'WEBrick::HTTPServer.new(:Port => 8000,
:DocumentRoot => Dir.pwd).start'
Ruby 1.9.2+
Code:
$ ruby -run -ehttpd . -p8000
Perl
Code:
$ cpan HTTP::Server::Brick # install dependency
$ perl -MHTTP::Server::Brick -e
'$s=HTTP::Server::Brick->new(port=>8000);
$s->mount("/"=>{path=>"."});
$s->start'
http-server (Node.js)
Code:
$ npm install -g http-server # install dependency
$ http-server -p 8000
node-static (Node.js)
Code:
$ npm install -g node-static # install dependency
$ static -p 8000
PHP (>= 5.4)
Code:
$ php -S 127.0.0.1:8000
busybox httpd
Code:
$ busybox httpd -f -p 8000
These are are highly non-secure. Anyone with access to the webserver will have access. No login. No credentials.
sftp is better for many reasons, but if you have any of those languages already on a system (python3 should be on all Ubuntu 20.04+ already, and need read-only access to 1 directory structure for 30 seconds on a LAN, sure. Why not.