2022-04-11-Install.test.ext 2022-04-11-Install-thttpd-on-32-or-64-bit-OS.txt It would probably be a good idea to read through this install before one sits down and starts building their web site, just to get an idea of what one will be copying and what the computer will be sending back. "thttpd" will start when the computer loads and if something causes it to stop, it will restart in 10 seconds. "thttpd" is designed to be a 24/7/365 web server. When the OS needs to "reboot", thttpd will be running by the time the desktop appears. It is totally AWSOME!!! "thttpd" is a commercial quality "World Wide Web" server which my old dial-up internet provider, for $9.95 a month, included as a free web site for each subscriber. Your web site was accessed with: "their domain name"/~"your subscriber account". I think one reason "thttpd" is no longer number seven (7) is the fact it is hard to make money on something you can get for free! Since the main idea of the Raspberry Pi organization is to teach commputers to young children, my goal is for third or fourth graders to be able to understand and build a useful program from source code. The comments between the "cut and paste", for the most part, instructions is to help one understand the what and why of the instructions and in the end have a useful program that they can share ideas and things not only on their own local internet, but also with the world! To begin with, a dynamic IP Address will work great to test one's system out on, and if then one wants to have a static IP Address added, which usually costs around $5.00 a month, one can do that. Since the Raspberry Pi has wireless capabilities, using a wireless router (even one not connected to the internet), in a classroom situation, more than 200 students can be connected to the same "C" class network (192.168.xxx.0/24) and can each connect to each other's web servers, where xxx is the same for all, and the 0 position can very from 2 - 254, with 0 representing the network, 255 is reserved for the broadcast address, and 1 is reserved for the router address. With the router set up as a “DHCP Server” all of the computers would receive dynamic IP addresses and all of their http websites would be available in the addresses they were assigned. The http port number (80) is assigned by thttpd and the IP addresses are assigned from the router. I have tried to make this install simple enough even a third of fourth grader souuld be able to get through it. Since I have had trouble missing some commands I will mark them with "###" and "### sudo", as a comment, for commands that need to be exicuted as "sudo". This way a person should be able to find all of the command lines with just "###". Putting "###" in the find command, should highlight all of these spots, but I found I accidentally missed some commands because I accidentally hit the find command twice and thus skipped a command. The best thing is to read through everything and just notice the highlighted spots and hopefully not miss anything. There will be times one has to make their own changes to a command so be careful. It is almost all "copy and paste" but there are a few times one will have to use their own words, like file names for their site. This file is long but I did not strip any of the computer generated lines out of it and added blank lines so one will be able to better see the next item that needs to be copyied, pasted, and entered on the terminal. The thttpd man page gives a good idea what this program can do. As well, the Acme.com web site has more information. I have also included the: "ACME Labs HTML Sampler -- HTML is really pretty easy to learn." If you've ever used any sort of text formatting language, such as nroff or Scribe, this is the same idea. Even if you haven't, you should be able to pick this up pretty quick; it's just text with interspersed to specify the formatting. This page gives examples of all the basic HTML formatting codes. Read through it as a tutorial; refer back to it as a reference; use the index at the end. To start with one can even use just regular files and thttpd will actually serve them. My site: http://162.250.19.7/ is built mostly that way. But there are some of my old sites that are under "ac0xl/" and then "www/" which I built around 2004 or so. One just has to click on the directory and it will open. To get back up one level just click on the (../) two periods and a slash. On a 32-bit OS, "thttpd" is limited to displaying files less than 2 GB (2**31 = 2,147,483,647 or 7fff ffff) Bytes. While a 64-bit OS is limited to displaying (2**63 = 9.223372031^18 or 7fff ffff ffff ffff) Bytes. I have tried a 5 GB (5,368,709,120 Bytes) file with no problems! This is with no changes being made in "thttpd". Out of the box, thttpd is bullet proof since it's web site is read-only but capable of doing CGI, as well as several other things, and is safe to run on the "World Wide Web"! My web site: http://162.250.19.7/, has been up and running on the WWW since August 01, 2019 without any problems with hackers doing any damage to my site! The config file is simple and short! The thttpd binary file I created using Raspberry Pi 64-bit OS on a Raspberry Pi 400, Mar 16 21:27, is only 121,272 bytes long and I have been using this config file since the beginning: -r-xr-xr-x 1 bin bin 121272 Mar 16 21:27 thttpd pi@raspberrypi:/home/local/www $ cat thttpd_config # /home/local/www/thttpd_config dir=/home/local/www chroot #chroot jail data_dir=users #vhost # if you use a domain name you will have to uncomment (remove the # at the beginning) and then make a "user" directory using your external IPv4 address (xxx.xxx.xxx.xxx) and inside this directory make symbolic links back up to your other files in "users" (../"user-name"). cgipat=**.cgi logfile=/home/local/www/logs/thttpd_log pidfile=/var/run/thttpd.pid # pi@raspberrypi:/home/local/www $ pi@raspberrypi:/home/local/www $ When I looked at Apache, which out of the box is only safe as an internal web server, I could not make it through the config file and found "thttpd - tiny/turbo/throttling web server." from Acme.com which used to be the number seven (7) most popular web server. I recommend "Geany - A fast and lightweight IDE using GTK+" since that is what came up when I was doing an install on a Raspberry Pi 32 bit OS. It has a split screen. The text install file was on top and should be made read-only with the lower screen as a terminal window. I just slid the separator line up so I would have more room on the terminal. Then it was just: copy the command, and paste it on the terminal and hit enter. What an awesome tool! It took around two hours to go through the install file. The only time I had to start a new terminal is during the "test." When one does the first test, the terminal will lock up because thttpd is still running in it. At this point, on the "Geany" terminal, one will have to enter: "ps -e" to print out all of the PID numbers and then find the numbers that go to thttpd so one can do: "sudo kill xxxx xxxx". The first run will be "sudo" and "thttpd" that one will need to kill. The second time will be "thttpd_wrapper" and "thttpd" that one needs to kill, since we are doing a progressive test to see that everything is working. After "thttpd" is killed, (usually 2 numbers), the terminal will come back. I usually enter the "sudo kill" command twice to show that the PID's are actually gone. I have since found "ps p xxxx xxxx" with the "xxxx" being the PID numbers that will print out what the PID number goes to so one does not wipe out something one should not! Be Safe!!! ***************************** Adding "whois" will let you lookup IP Addresses of visitors to your "World Wide Website"! pi@raspberrypi:~ $ pi@raspberrypi:~ $ whois 162.250.19.7 ### bash: whois: command not found pi@raspberrypi:~ $ sudo apt install whois ### Reading package lists... Done Building dependency tree... Done Reading state information... Done The following NEW packages will be installed: whois 0 upgraded, 1 newly installed, 0 to remove and 3 not upgraded. Need to get 79.3 kB of archives. After this operation, 369 kB of additional disk space will be used. Get:1 http://deb.debian.org/debian bullseye/main arm64 whois arm64 5.5.10 [79.3 kB] Fetched 79.3 kB in 1s (142 kB/s) Selecting previously unselected package whois. (Reading database ... 106278 files and directories currently installed.) Preparing to unpack .../whois_5.5.10_arm64.deb ... Unpacking whois (5.5.10) ... Setting up whois (5.5.10) ... Processing triggers for man-db (2.9.4-2) ... pi@raspberrypi:~ $ pi@raspberrypi:~ $ pi@raspberrypi:~ $ whois 162.250.19.7 ### # # ARIN WHOIS data and services are subject to the Terms of Use # available at: https://www.arin.net/resources/registry/whois/tou/ # # If you see inaccuracies in the results, please report at # https://www.arin.net/resources/registry/whois/inaccuracy_reporting/ # # Copyright 1997-2022, American Registry for Internet Numbers, Ltd. # NetRange: 162.250.16.0 - 162.250.23.255 CIDR: 162.250.16.0/21 NetName: RCW NetHandle: NET-162-250-16-0-1 Parent: NET162 (NET-162-0-0-0-0) NetType: Direct Allocation OriginAS: AS39938 Organization: River Canyon Wireless (RE-27) RegDate: 2013-12-12 Updated: 2013-12-12 Ref: https://rdap.arin.net/registry/ip/162.250.16.0 OrgName: River Canyon Wireless OrgId: RE-27 Address: 611 S. Main City: Moab StateProv: UT PostalCode: 84532 Country: US RegDate: 2012-02-06 Updated: 2019-06-26 Ref: https://rdap.arin.net/registry/entity/RE-27 OrgNOCHandle: HICKM57-ARIN OrgNOCName: Hickman, Ryan OrgNOCPhone: +1-435-259-6763 OrgNOCEmail: Ryan@Royceselectronics.com OrgNOCRef: https://rdap.arin.net/registry/entity/HICKM57-ARIN OrgTechHandle: HICKM57-ARIN OrgTechName: Hickman, Ryan OrgTechPhone: +1-435-259-6763 OrgTechEmail: Ryan@Royceselectronics.com OrgTechRef: https://rdap.arin.net/registry/entity/HICKM57-ARIN OrgAbuseHandle: COLCO8-ARIN OrgAbuseName: Colcord, Bill OrgAbusePhone: +1-435-259-6763 OrgAbuseEmail: bill.c@rivercanyonwireless.com OrgAbuseRef: https://rdap.arin.net/registry/entity/COLCO8-ARIN # # ARIN WHOIS data and services are subject to the Terms of Use # available at: https://www.arin.net/resources/registry/whois/tou/ # # If you see inaccuracies in the results, please report at # https://www.arin.net/resources/registry/whois/inaccuracy_reporting/ # # Copyright 1997-2022, American Registry for Internet Numbers, Ltd. # pi@raspberrypi:~ $ pi@raspberrypi:~ $ The Raspberry Pi OS has all of the programs needed to compile "thttpd" already installed since their mission is computer programming. However Ubuntu is designed for normal computer use and does not have the files already installed to compile computer programs. Programs that need to be added to Ubuntu for "thttpd" to compile: Geany - A fast and lightweight IDE using GTK+ - Developer Tools → IDEs - ubuntu-hirsute-universe, download size: 1 MB. (" sudo apt install geany " # two 1 MB files, icon looks like a little round tea pot.) frank@frank-desktop:~$ frank@frank-desktop:~$ sudo apt install gcc make make-doc autoconf automake libtool flex bison gcc-doc gcc-10-doc gcc-10-locales glibc-doc whois ### frank@frank-desktop:~$ "freedom.zip" should be installed in the users "home" directory, and unzipped there to give the directory "freedom". It will probably be a good idea to change: "Firefox, Settings, General, Files and Applications, Downloads" to: "Always ask you where to save files", since we are going to be saving several different files to places besides "Downloads". In Ubuntu, I will be using (frank) to reference my "home directory" which you will have to use your own name without the "()"s. Now it is time to change the "$PATH" so the computer can find the "thttpd" program. ***************************** If you are using Ubuntu, or the path is found in /etc/environment: This took me a long time to find but I finally found where to permanently change this in Ubuntu. It is hiding in "/etc" in the file "environment", one could just add: "/home/local/sbin:/home/local/bin:" to the beginning of the line of text. I ran into a lot of new bugs in Ubuntu so have quit using it! frank@frank-desktop:~$ frank@frank-desktop:~$ $PATH ### bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin: No such file or directory frank@frank-desktop:~$ frank@frank-desktop:~$ cat /etc/environment ### frank@frank-desktop:~$ If the PATH is in /etc/environment, then use sudo nano to add the following to the beginning of the "path" (inside the quote) /home/local/sbin:/home/local/bin: so the line will begin like: "/home/local/sbin:/home/local/bin:/usr/local/sbin:/usr/local/bin:/...." frank@frank-desktop:~$ frank@frank-desktop:~$ sudo nano /etc/environment ### sudo Make your changes and then "control o" to write and "control x" to exit. frank@frank-desktop:~$ frank@frank-desktop:~$ cat /etc/environment ### frank@frank-desktop:~$ Make sure the "path" begins like: "/home/local/sbin:/home/local/bin:/usr/local/sbin:/usr/local/bin:/...." The computer has to be restarted for the new "path" to take effect. Make sure everything you want to save is saved and then you can: *****REBOOT***** frank@frank-desktop:~$ frank@frank-desktop:~$ sudo reboot ### sudo ***************************** When the computer comes back up, go to a terminal and enter: frank@frank-desktop:~$ frank@frank-desktop:~$ $PATH ### frank@frank-desktop:~$ Make sure the "path" begins with: "/home/local/sbin:/home/local/bin:/usr/local/sbin:/usr/local/bin:/...." ***************************** Now back on the Raspberry Pi OS. pi@raspberrypi:~ $ pi@raspberrypi:~ $ pi@raspberrypi:~ $ $PATH ### bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games: No such file or directory pi@raspberrypi:~ $ pi@raspberrypi:~ $ pi@raspberrypi:~ $ # On the Raspberry Pi OS the built in "PATH" is stored in "/etc/profile" on two different lines. One will have to add "/home/local/sbin:/home/local/bin:" to the beginning of the quote. PATH="/usr/local/sbin:/usr/local/bin: ...", to: PATH="/home/local/sbin:/home/local/bin:/usr/local/sbin: ..." pi@raspberrypi:~ $ pi@raspberrypi:~ $ # Make sure the path is right, one will need to reboot to make it active. pi@raspberrypi:~ $ pi@raspberrypi:~ $ reboot ### pi@raspberrypi:~ $ $PATH ### bash: /home/local/sbin:/home/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games: No such file or directory pi@raspberrypi:~ $ pi@raspberrypi:~ $ pi@raspberrypi:~ $ ***************************** Another thing I do is: sudo mkdir /fd /hd /sd ### sudo - This makes for handy mount points for: floppy drives (USB), hard drives (1 TB, etc.) and sd cards. When one adds a drive to Ubuntu, the bell rings and nothing shows up because it is not mounted. Doing: sudo fdisk -l ### sudo - this will show the drives and their partitions. Then it is just: sudo mount /dev/sda2 /hd ### sudo - This mounts the second partition of drive "sda". Then one can read the files by: cd /hd/(path or file name) ...### and then where you want to go. This gives a really short path to that drive, instead of "/media/(user-name)/(drive-name)/(file-name)". I think you get the point! ***************************** "thttpd" can actually be installed on almost any "Linux" machine since we compile it for the machine it will be running on. (The actual install is: #1 make clean #2 ./configure #3 make #4 sudo make install .) Since "gcc" is running on the machine, the proper machine code will be generated. ARM processors are not in the program so will complain, but work without any processor optimizations, while most of the older processors should show up OK. These directions should work for almost any processor as long as there is a "gcc" available for that processor. I have included the "thttpd" pages from "Acme.com" for all of the documentation. The last benchmarks were "Web Server Comparisons" Last updated 12jul98. The maximum file size is limited to 2 GB on 32-bit OS's, (2**31 = 2,147,483,647 or 7fff ffff Bytes) so long videos would need to be split into sizes less than 2 GB. On a 64-bit OS (2**63 = 9.223,372,031^18 or 7fff ffff ffff ffff or 9,223,372,031,000,000 Bytes with the trailing zeros being numbers) is the limit. I have actually tested a 5 GigaByte file (5,368,709,120 Bytes) without any problems! "thttpd" used to be the seventh most popular web server. Out of the box, it is read only, but can run CGI programs, which makes it safe to run on the "World Wide Web"! I moved the install from "/usr/local" to "/home/local" since "/home" is the only directory one can keep when installing a new version OS. That way all of your web site will still be intact! The original files go into directories under "/home", and the actual web pages that are served are under "/home/local/www/users/(the original directory name)" so if something happens to that page the original is still safe. This also makes it possible to make changes and then just copy them to the "public_html" link and the new page is active immediately! This is installing thttpd on a Raspberry Pi 400 running 2022-01-28-raspios-bullseye-arm64.zip. Most of the commands can be copied from the install file and pasted to a terminal. A few things will need to be changed but most will be: copy, paste, enter. WWW pages for EVERYONE!!! To reduce the amount of work needed to install thttpd, I have copied the files from Acme.com and made some modifications. These files have been changed in thttpd-2.29, and these are the changes that were made! *****If you expand "thttpd-2.29.tar.gz" these changes will be missing!***** *****These files are in: cd ~/freedom/Acme.com/thttpd-2.29/ #***** The first change in "thttpd-2.29" is in "Makefile.in" by adding the directory "man1", without this a fresh install will fail! In "Makefile.in" copy line 116 and paste it before, and change man8 to man1, and save the file. The result will be: (This file is: "Makefile.in".) 114 115 install-man: 116 -mkdir -p $(DESTDIR)$(MANDIR)/man1 117 -mkdir -p $(DESTDIR)$(MANDIR)/man8 118 $(INSTALL) -m 444 -o bin -g bin thttpd.8 $(DESTDIR)$(MANDIR)/man8 119 The second change in "thttpd-2.29" is in "config.h" where we want to be able to use the "makeweb" program. Here it is making "users" active by copying line 127, adding some extra lines at 130 and pasting the "users" line on line 131, then saving the file. The result will be: (This file is: "config.h".) 126 #ifdef notdef 127 #define TILDE_MAP_1 "users" 128 #define TILDE_MAP_2 "public_html" 129 #endif 130 131 #define TILDE_MAP_1 "users" 132 The third change in "thttpd-2.29" is in "configure" and is to change where all of the data is written, from: "/usr/local" to "/home/local" since the only directory that can be saved when changing operating systems (OS's) is the "/home/" directory, all of the others get over written! This change is in "configure" where line 12 is changed from "/usr/local" to "/home/local", giving the following result, then save the file. (This file is: "configure".) 9 10 # Defaults: 11 ac_help= 12 ac_default_prefix=/home/local 13 # Any additions from configure.in: 14 This is the end of the changes in "thttpd-2.29" ***************************** The "manpage path" is different from "$PATH" so that will be taken care of by just: sudo cp -iav /home/local/man/ /usr/local/man/ which will be done after "thttpd" is up and running, also if one is changing OS's. It seems that Raspberry Pi OS does not have a problem here, but Ubuntu still has a problem! If one does an OS change, the other files that need to be changed in "/etc/" are: sudo cp -av /home/local/sbin/thttpd-extras/thttpd-rotate /etc/cron.daily/thttpd-rotate # or if you are using the os-debug version, sudo cp -av /home/local/sbin/os-debug/thttpd-rotate /etc/cron.daily/thttpd-rotate # this file needs other programs found in "os-debug" see: "readme.txt" in "os-debug". sudo cp -iav /home/local/sbin/thttpd-extras/rc.local /etc/rc.local # Make sure you don't wipe out a file that might already be there! sudo cp -av /home/local/sbin/thttpd-extras/thttpd.sh /etc/thttpd.sh # This file pulls in the "thttpd_wrapper" which restarts "thttpd" in 10 seconds. I think that covers all of the changes, and the ones that one would have to make if changing OS's. ***************************** Making Ubuntu OS's on the Raspberry Pi. I usually go to RaspberryPi.org and download the latest version of "Ubuntu 64 bit Desktop" to the directory "Ubuntu", so I have the code available and all ready downloaded. I got the "rpi-imager" program using: frank@frank-desktop:~$ frank@frank-desktop:~$ snap install rpi-imager ### frank@frank-desktop:~$ # or it is in "Ubuntu Software" under "Devices and IoT" as "Raspberry Pi Imager". ***************************** Formatting media for the Raspberry Pi. Anything greater than 32GB needs to be erased so it can have a FAT32 partition on the drive media, using the rpi-imager program. Then installing the OS to the drive. MicroSDHC U1 Cards have a rating of (100 MB/s Read speed, and 10 MB/s Write speed), while microSDXC U3 Cards have a rating of (100MB/s Read speed, and 50MB/s Write speed), 5 times faster on the writes. My 128GB microSDXC U3 Card was rapidly reaching max, and I had several "Seagate, Backup Plus Slim 1TB USB 3.0 drives, (~ 4 3/8" x 3" x 1/2"), of course the erase program failed! But I found an easy solution! The simple solution was using "fdisk" to set the drive up so "rpi-imager" could use it. For formatting drives greater than 512 GB, see: "2021-09-07-Formatting-Drives-Greater-Than-512GB.txt". ***************************** Some packages that I added: First run "sudo apt update" to make sure everrything is uo to date. pi@raspberrypi:~ $ sudo apt update ### Hit:1 http://raspbian.raspberrypi.org/raspbian bullseye InRelease Hit:2 http://archive.raspberrypi.org/debian bullseye InRelease Reading package lists... Done Building dependency tree... Done Reading state information... Done 1 package can be upgraded. Run 'apt list --upgradable' to see it. pi@raspberrypi:~ $ sudo apt list --upgradable Listing... Done libtiff5/stable 4.2.0-1+deb11u1 armhf [upgradable from: 4.2.0-1] N: There is 1 additional version. Please use the '-a' switch to see it pi@raspberrypi:~ $ sudo apt list --upgradable -a ### Listing... Done libtiff5/stable 4.2.0-1+deb11u1 armhf [upgradable from: 4.2.0-1] libtiff5/now 4.2.0-1 armhf [installed,upgradable to: 4.2.0-1+deb11u1] pi@raspberrypi:~ $ sudo apt install whois ### Reading package lists... Done Building dependency tree... Done Reading state information... Done The following NEW packages will be installed: whois 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 71.4 kB of archives. After this operation, 267 kB of additional disk space will be used. Get:1 http://raspbian.phirephly.design/raspbian bullseye/main armhf whois armhf 5.5.10 [71.4 kB] Fetched 71.4 kB in 2s (38.7 kB/s) Selecting previously unselected package whois. (Reading database ... 176650 files and directories currently installed.) Preparing to unpack .../whois_5.5.10_armhf.deb ... Unpacking whois (5.5.10) ... Setting up whois (5.5.10) ... Processing triggers for man-db (2.9.4-2) ... pi@raspberrypi:~ $ pi@raspberrypi:~ $ I did not know if all of "Geany" was installed so I added this: pi@raspberrypi:~ $ pi@raspberrypi:~ $ sudo apt install geany geany-common libvte9 doc-base libuuid-perl libvte-common libyaml-tiny-perl ### Reading package lists... Done Building dependency tree... Done Reading state information... Done geany is already the newest version (1.37.1-2+rpt1). geany-common is already the newest version (1.37.1-2+rpt1). geany-common set to manually installed. Suggested packages: dhelp | dwww | dochelp | doc-central | yelp | khelpcenter The following NEW packages will be installed: doc-base libuuid-perl libvte-common libvte9 libyaml-tiny-perl 0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. Need to get 1,110 kB of archives. After this operation, 2,209 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf libuuid-perl armhf 0.28-1+b2 [18.3 kB] Get:2 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf libyaml-tiny-perl all 1.73-1 [32.3 kB] Get:3 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf doc-base all 0.11.1 [102 kB] Get:4 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf libvte-common all 1:0.28.2-6 [401 kB] Get:5 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf libvte9 armhf 1:0.28.2-6+b1 [556 kB] Fetched 1,110 kB in 8s (137 kB/s) Selecting previously unselected package libuuid-perl. (Reading database ... 176673 files and directories currently installed.) Preparing to unpack .../libuuid-perl_0.28-1+b2_armhf.deb ... Unpacking libuuid-perl (0.28-1+b2) ... Selecting previously unselected package libyaml-tiny-perl. Preparing to unpack .../libyaml-tiny-perl_1.73-1_all.deb ... Unpacking libyaml-tiny-perl (1.73-1) ... Selecting previously unselected package doc-base. Preparing to unpack .../doc-base_0.11.1_all.deb ... Unpacking doc-base (0.11.1) ... Selecting previously unselected package libvte-common. Preparing to unpack .../libvte-common_1%3a0.28.2-6_all.deb ... Unpacking libvte-common (1:0.28.2-6) ... Selecting previously unselected package libvte9. Preparing to unpack .../libvte9_1%3a0.28.2-6+b1_armhf.deb ... Unpacking libvte9 (1:0.28.2-6+b1) ... Setting up libvte-common (1:0.28.2-6) ... Setting up libuuid-perl (0.28-1+b2) ... Setting up libvte9 (1:0.28.2-6+b1) ... Setting up libyaml-tiny-perl (1.73-1) ... Setting up doc-base (0.11.1) ... Registering 30 doc-base files... Processing triggers for man-db (2.9.4-2) ... Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u2) ... pi@raspberrypi:~ $ pi@raspberrypi:~ $ pi@raspberrypi:~ $ pi@raspberrypi:~ $ sudo apt install dochelp ### sudo Reading package lists... Done Building dependency tree... Done Reading state information... Done The following NEW packages will be installed: dochelp 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 552 kB of archives. After this operation, 1,838 kB of additional disk space will be used. Get:1 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf dochelp armhf 0.1.8 [552 kB] Fetched 552 kB in 4s (131 kB/s) Selecting previously unselected package dochelp. (Reading database ... 176846 files and directories currently installed.) Preparing to unpack .../dochelp_0.1.8_armhf.deb ... Unpacking dochelp (0.1.8) ... Setting up dochelp (0.1.8) ... Processing triggers for hicolor-icon-theme (0.17-2) ... Processing triggers for gnome-menus (3.36.0-1) ... Processing triggers for man-db (2.9.4-2) ... Processing triggers for mailcap (3.69) ... Processing triggers for desktop-file-utils (0.26-1) ... pi@raspberrypi:~ $ The "Mousepad" text editor does not have a spell checker, so I added "Pluma" which seems to be about the same thing but with a spell checker! pi@raspberrypi:~ $ pi@raspberrypi:~ $ sudo apt install pluma ### sudo Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: gir1.2-gtksource-3.0 gir1.2-peas-1.0 gir1.2-pluma-1.0 libpeas-1.0-0 libpeas-common libpython3.8 libpython3.8-minimal libpython3.8-stdlib mate-desktop-common pluma-common The following NEW packages will be installed: gir1.2-gtksource-3.0 gir1.2-peas-1.0 gir1.2-pluma-1.0 libpeas-1.0-0 libpeas-common libpython3.8 libpython3.8-minimal libpython3.8-stdlib mate-desktop-common pluma pluma-common 0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded. Need to get 6,740 kB of archives. After this operation, 48.6 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf gir1.2-gtksource-3.0 armhf 3.24.11-2 [28.3 kB] Get:2 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf libpeas-common all 1.28.0-2 [53.2 kB] Get:3 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf libpython3.8-minimal armhf 3.8.7-1 [753 kB] Get:4 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf libpython3.8-stdlib armhf 3.8.7-1 [1,647 kB] Get:5 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf libpython3.8 armhf 3.8.7-1 [1,344 kB] Get:6 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf libpeas-1.0-0 armhf 1.28.0-2 [56.6 kB] Get:7 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf gir1.2-peas-1.0 armhf 1.28.0-2 [12.4 kB] Get:8 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf gir1.2-pluma-1.0 armhf 1.24.1-1 [29.8 kB] Get:9 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf mate-desktop-common all 1.24.1-2 [495 kB] Get:10 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf pluma-common all 1.24.1-1 [1,938 kB] Get:11 http://mirrors.syringanetworks.net/raspbian/raspbian bullseye/main armhf pluma armhf 1.24.1-1 [383 kB] Fetched 6,740 kB in 38s (178 kB/s) Selecting previously unselected package gir1.2-gtksource-3.0:armhf. (Reading database ... 176861 files and directories currently installed.) Preparing to unpack .../00-gir1.2-gtksource-3.0_3.24.11-2_armhf.deb ... Unpacking gir1.2-gtksource-3.0:armhf (3.24.11-2) ... Selecting previously unselected package libpeas-common. Preparing to unpack .../01-libpeas-common_1.28.0-2_all.deb ... Unpacking libpeas-common (1.28.0-2) ... Selecting previously unselected package libpython3.8-minimal:armhf. Preparing to unpack .../02-libpython3.8-minimal_3.8.7-1_armhf.deb ... Unpacking libpython3.8-minimal:armhf (3.8.7-1) ... Selecting previously unselected package libpython3.8-stdlib:armhf. Preparing to unpack .../03-libpython3.8-stdlib_3.8.7-1_armhf.deb ... Unpacking libpython3.8-stdlib:armhf (3.8.7-1) ... Selecting previously unselected package libpython3.8:armhf. Preparing to unpack .../04-libpython3.8_3.8.7-1_armhf.deb ... Unpacking libpython3.8:armhf (3.8.7-1) ... Selecting previously unselected package libpeas-1.0-0:armhf. Preparing to unpack .../05-libpeas-1.0-0_1.28.0-2_armhf.deb ... Unpacking libpeas-1.0-0:armhf (1.28.0-2) ... Selecting previously unselected package gir1.2-peas-1.0:armhf. Preparing to unpack .../06-gir1.2-peas-1.0_1.28.0-2_armhf.deb ... Unpacking gir1.2-peas-1.0:armhf (1.28.0-2) ... Selecting previously unselected package gir1.2-pluma-1.0. Preparing to unpack .../07-gir1.2-pluma-1.0_1.24.1-1_armhf.deb ... Unpacking gir1.2-pluma-1.0 (1.24.1-1) ... Selecting previously unselected package mate-desktop-common. Preparing to unpack .../08-mate-desktop-common_1.24.1-2_all.deb ... Unpacking mate-desktop-common (1.24.1-2) ... Selecting previously unselected package pluma-common. Preparing to unpack .../09-pluma-common_1.24.1-1_all.deb ... Unpacking pluma-common (1.24.1-1) ... Selecting previously unselected package pluma. Preparing to unpack .../10-pluma_1.24.1-1_armhf.deb ... Unpacking pluma (1.24.1-1) ... Setting up libpython3.8-minimal:armhf (3.8.7-1) ... Setting up libpeas-common (1.28.0-2) ... Setting up mate-desktop-common (1.24.1-2) ... Setting up gir1.2-gtksource-3.0:armhf (3.24.11-2) ... Setting up pluma-common (1.24.1-1) ... Setting up libpython3.8-stdlib:armhf (3.8.7-1) ... Setting up gir1.2-pluma-1.0 (1.24.1-1) ... Setting up libpython3.8:armhf (3.8.7-1) ... Setting up libpeas-1.0-0:armhf (1.28.0-2) ... Setting up gir1.2-peas-1.0:armhf (1.28.0-2) ... Processing triggers for man-db (2.9.4-2) ... Processing triggers for mailcap (3.69) ... Processing triggers for desktop-file-utils (0.26-1) ... Processing triggers for hicolor-icon-theme (0.17-2) ... Processing triggers for gnome-menus (3.36.0-1) ... Processing triggers for libglib2.0-0:armhf (2.66.8-1) ... Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u2) ... Setting up pluma (1.24.1-1) ... pi@raspberrypi:~ $ At this point one can do: "df -h" to see how much disk space is being used, and "date" to see how long it takes to do the process of installing "thttpd" pi@raspberrypi:~ $ pi@raspberrypi:~ $ df -h ### Filesystem Size Used Avail Use% Mounted on /dev/root 29G 8.1G 20G 30% / devtmpfs 87M 0 87M 0% /dev tmpfs 215M 0 215M 0% /dev/shm tmpfs 86M 1.1M 85M 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock /dev/mmcblk0p1 253M 49M 204M 20% /boot tmpfs 43M 32K 43M 1% /run/user/1000 pi@raspberrypi:~ $ pi@raspberrypi:~ $ pi@raspberrypi:~ $ pi@raspberrypi:~ $ date ### Sat 02 Apr 2022 04:30:42 PM MDT pi@raspberrypi:~ $ pi@raspberrypi:~ $ ***************************** Users and groups that need to be added for "thttpd" to compile. In Ubuntu, open a "terminal" full screen, (click on the 9 dots icon in the left "Favorites" column, scroll to the terminal icon, right click and "Add to Favorites" to put it in the left "Favorites" column). ***************************** ***************************** ***************************** ### This is the beginning of the "cut and paste" process! pi@raspberrypi:~ $ pi@raspberrypi:~ $ pi@raspberrypi:~ $ pi@raspberrypi:~ $ ### The "~" shows that we are in the "home directory of 'pi'", from the beginning of the line, (/home/pi/). pi@raspberrypi:~ $ # pi@raspberrypi:~ $ $PATH ### bash: /home/local/sbin:/home/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games: No such file or directory pi@raspberrypi:~ $ # pi@raspberrypi:~ $ cd /etc ### pi@raspberrypi:/etc $ # pi@raspberrypi:/etc $ cat group ### (we are looking for a group "www") root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:pi tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: uucp:x:10: man:x:12: proxy:x:13: kmem:x:15: dialout:x:20:pi fax:x:21: voice:x:22: cdrom:x:24:pi floppy:x:25: tape:x:26: sudo:x:27:pi audio:x:29:pi,pulse dip:x:30: www-data:x:33: backup:x:34: operator:x:37: list:x:38: irc:x:39: src:x:40: gnats:x:41: shadow:x:42: utmp:x:43: video:x:44:pi sasl:x:45: plugdev:x:46:pi staff:x:50: games:x:60:pi users:x:100:pi nogroup:x:65534: systemd-timesync:x:101: systemd-journal:x:102: systemd-network:x:103: systemd-resolve:x:104: input:x:105:pi kvm:x:106: render:x:107:pi crontab:x:108: netdev:x:109:pi pi:x:1000: messagebus:x:110: ssh:x:111: bluetooth:x:112: avahi:x:113: spi:x:999:pi i2c:x:998:pi gpio:x:997:pi lightdm:x:114: rdma:x:115: rtkit:x:116: lpadmin:x:117:root,pi ssl-cert:x:118: pulse:x:119: pulse-access:x:120: scanner:x:121:saned saned:x:122: colord:x:123: systemd-coredump:x:996: pi@raspberrypi:/etc $ # # Since there is no group "www" with the user "(pi)" we will need to add this, getting the directions by using "addgroup --help" to see our options. # # pi@raspberrypi:/etc $ addgroup --help ### adduser [--home DIR] [--shell SHELL] [--no-create-home] [--uid ID] [--firstuid ID] [--lastuid ID] [--gecos GECOS] [--ingroup GROUP | --gid ID] [--disabled-password] [--disabled-login] [--add_extra_groups] USER Add a normal user adduser --system [--home DIR] [--shell SHELL] [--no-create-home] [--uid ID] [--gecos GECOS] [--group | --ingroup GROUP | --gid ID] [--disabled-password] [--disabled-login] [--add_extra_groups] USER Add a system user adduser --group [--gid ID] GROUP addgroup [--gid ID] GROUP Add a user group addgroup --system [--gid ID] GROUP Add a system group adduser USER GROUP Add an existing user to an existing group general options: --quiet | -q don't give process information to stdout --force-badname allow usernames which do not match the NAME_REGEX configuration variable --help | -h usage message --version | -v version number and copyright --conf | -c FILE use FILE as configuration file pi@raspberrypi:/etc $ # # ***************************** # ### From this we get the commands we need to add a system group "www" and make "(pi)" a member of this group. # # ********* # # Add a system group # # ********* # # adduser USER GROUP # Add an existing user to an existing group # # ********* # ### We need to add a system group "www" and make "(pi)" a member of this group. # pi@raspberrypi:/etc $ sudo addgroup --system www ### sudo Adding group `www' (GID 124) ... Done. pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ # ********* # pi@raspberrypi:/etc $ sudo adduser pi www ### sudo Adding user `pi' to group `www' ... Adding user pi to group www Done. pi@raspberrypi:/etc $ # # ************** # pi@raspberrypi:/etc $ cat group ### root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:pi tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: uucp:x:10: man:x:12: proxy:x:13: kmem:x:15: dialout:x:20:pi fax:x:21: voice:x:22: cdrom:x:24:pi floppy:x:25: tape:x:26: sudo:x:27:pi audio:x:29:pi,pulse dip:x:30: www-data:x:33: backup:x:34: operator:x:37: list:x:38: irc:x:39: src:x:40: gnats:x:41: shadow:x:42: utmp:x:43: video:x:44:pi sasl:x:45: plugdev:x:46:pi staff:x:50: games:x:60:pi users:x:100:pi nogroup:x:65534: systemd-timesync:x:101: systemd-journal:x:102: systemd-network:x:103: systemd-resolve:x:104: input:x:105:pi kvm:x:106: render:x:107:pi crontab:x:108: netdev:x:109:pi pi:x:1000: messagebus:x:110: ssh:x:111: bluetooth:x:112: avahi:x:113: spi:x:999:pi i2c:x:998:pi gpio:x:997:pi lightdm:x:114: rdma:x:115: rtkit:x:116: lpadmin:x:117:root,pi ssl-cert:x:118: pulse:x:119: pulse-access:x:120: scanner:x:121:saned saned:x:122: colord:x:123: systemd-coredump:x:996: www:x:124:pi pi@raspberrypi:/etc $ # ### Success, Group "www" has a user "(pi)" and is also less than 1000, (the number will probably be different than 124). # # ***************************** # # The idea is to use the "users" accounts as if they were the header choices that are normally at the top of a web page. For my site, I have: ac0xl, delinquent-accounts, documents, downloads, freedom, memes, music, notices, pictures, rome, searles-sav-on-propane, va, and videos. The files: favicon.ico, readme.txt, and robots.txt and sitemap.xml (if you are using the IP Address option) are web site files that get added later. The idea is to make a list of the things you want on your web site and type them up so you can select the name and then copy and paste it later when all of the users get added. This will save a lot of typing and typing mistakes! # pi@raspberrypi:/etc $ cd ~/freedom/Acme.com/thttpd-2.29 ### pi@raspberrypi:~/freedom/Acme.com/thttpd-2.29 $ # # Now that your list of ideas for your web site is growing, it is time to start the process of installing "thttpd". The first thing to do is make sure the above files in "thttpd-2.29" have all been changed. If not, make the changes and check again. All of these commands will be made in the terminal window under: "/home/(pi)/freedom/Acme.come/thttpd-2.29" # This equates to "~/freedom/Acme.com/thttpd-2.29" # # pi@raspberrypi:~/freedom/Acme.com/thttpd-2.29 $ ls ### aclocal.m4 config.log extras INSTALL Makefile.in mime_types.h scripts thttpd.8 TODO cgi-bin config.status fdwatch.c install-sh match.c mime_types.txt strerror.c thttpd.c version.h cgi-src config.sub fdwatch.h libhttpd.c match.h mmc.c tdate_parse.c thttpd.o config.cache configure fdwatch.o libhttpd.h match.o mmc.h tdate_parse.h timers.c config.guess configure.in FILES libhttpd.o mime_encodings.h mmc.o tdate_parse.o timers.h config.h contrib index.html Makefile mime_encodings.txt README thttpd timers.o pi@raspberrypi:~/freedom/Acme.com/thttpd-2.29 $ # at which point you should see the above files and one called "INSTALL", which begins with: # 1 To build: # 2 # 3 % ./configure # 4 # 5 Edit config.h to change the configuration options if necessary. # 6 # 7 % make # 8 # 9 # 10 To install: # 11 # 12 % make install # 13 # 14 Edit one of your system rc files to run thttpd at boot time. Do NOT # 15 run it from inetd, that setup is inefficient so thttpd doesn't support it. # 16 # # ***** Since this program has been run before, the first command needs to be: "make clean", to clear all of the old data.***** # # If you have run the program before, or have had errors, at the terminal prompt, type in: "make clean" without the quotes, to clean the old files. (DO IT!). # # The "%" is the computer prompt: type in: ./configure # and then a return. This should generate a few pages of text. The end should look something like: # # ***** Starting the compile. ***** # # make clean # make: *** No rule to make target 'clean'. Stop. # Or a short list of files and directories that have been removed. # # *************** pi@raspberrypi:~/freedom/Acme.com/thttpd-2.29 $ make clean ### Step one. for i in cgi-src extras ; do ( \ cd $i ; \ pwd ; \ make clean \ ) ; done /home/pi/freedom/Acme.com/thttpd-2.29/cgi-src make[1]: Entering directory '/home/pi/freedom/Acme.com/thttpd-2.29/cgi-src' rm -f *.o redirect ssi phf make[1]: Leaving directory '/home/pi/freedom/Acme.com/thttpd-2.29/cgi-src' /home/pi/freedom/Acme.com/thttpd-2.29/extras make[1]: Entering directory '/home/pi/freedom/Acme.com/thttpd-2.29/extras' rm -f *.o makeweb htpasswd make[1]: Leaving directory '/home/pi/freedom/Acme.com/thttpd-2.29/extras' rm -f thttpd thttpd.o libhttpd.o fdwatch.o mmc.o timers.o match.o tdate_parse.o mime_encodings.h mime_types.h pi@raspberrypi:~/freedom/Acme.com/thttpd-2.29 $ # # ***************** Step Two *********** # pi@raspberrypi:~/freedom/Acme.com/thttpd-2.29 $ ./configure ### Step two. loading cache ./config.cache checking host system type... Invalid configuration `aarch64-pc-linux-gnuoldld': machine `aarch64-pc' not recognized checking target system type... Invalid configuration `aarch64-pc-linux-gnuoldld': machine `aarch64-pc' not recognized checking build system type... Invalid configuration `aarch64-pc-linux-gnuoldld': machine `aarch64-pc' not recognized checking for gcc... (cached) gcc checking whether the C compiler (gcc ) works... yes checking whether the C compiler (gcc ) is a cross-compiler... no checking whether we are using GNU C... (cached) yes checking whether gcc accepts -g... (cached) yes checking gcc version... (cached) 10 checking how to link static binaries... (cached) unknown checking for __progname... (cached) yes checking how to run the C preprocessor... (cached) gcc -E checking for fcntl.h... (cached) yes checking for grp.h... (cached) yes checking for memory.h... (cached) yes checking for paths.h... (cached) yes checking for poll.h... (cached) yes checking for sys/poll.h... (cached) yes checking for sys/devpoll.h... (cached) no checking for sys/event.h... (cached) no checking for osreldate.h... (cached) no checking whether time.h and sys/time.h may both be included... (cached) yes checking for dirent.h that defines DIR... (cached) yes checking for opendir in -ldir... (cached) no checking for /usr/local/v6/lib... no checking for gethostbyname... (cached) yes checking for socket... (cached) yes checking for main in -linet6... (cached) no checking for crypt... (cached) no checking for crypt in -lcrypt... (cached) yes checking for hstrerror... (cached) yes checking for strerror... (cached) yes checking for waitpid... (cached) yes checking for vsnprintf... (cached) yes checking for daemon... (cached) yes checking for setsid... (cached) yes checking for setlogin... (cached) no checking for getaddrinfo... (cached) yes checking for getnameinfo... (cached) yes checking for gai_strerror... (cached) yes checking for kqueue... (cached) no checking for sigset... (cached) yes checking for atoll... (cached) yes checking for unistd.h... (cached) yes checking for getpagesize... (cached) yes checking for working mmap... (cached) yes checking for select... (cached) yes checking for poll... (cached) yes checking if struct tm has tm_gmtoff member... (cached) yes checking if int64_t exists... (cached) yes checking if socklen_t exists... (cached) yes checking whether make sets ${MAKE}... (cached) yes checking for a BSD compatible install... (cached) /usr/bin/install -c creating ./config.status creating Makefile creating cgi-src/Makefile creating extras/Makefile pi@raspberrypi:~/freedom/Acme.com/thttpd-2.29 $ # # # ******************* ### Step three. # # The next step: make # will generate more pages and should end with something like this: # # pi@raspberrypi:~/freedom/Acme.com/thttpd-2.29 $ make ### Step three. gcc -O2 -DHAVE__PROGNAME=1 -DHAVE_FCNTL_H=1 -DHAVE_GRP_H=1 -DHAVE_MEMORY_H=1 -DHAVE_PATHS_H=1 -DHAVE_POLL_H=1 -DHAVE_SYS_POLL_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_DIRENT_H=1 -DHAVE_LIBCRYPT=1 -DHAVE_STRERROR=1 -DHAVE_WAITPID=1 -DHAVE_VSNPRINTF=1 -DHAVE_DAEMON=1 -DHAVE_SETSID=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_SIGSET=1 -DHAVE_ATOLL=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_SELECT=1 -DHAVE_POLL=1 -DHAVE_TM_GMTOFF=1 -DHAVE_INT64T=1 -DHAVE_SOCKLENT=1 -I. -c thttpd.c thttpd.c: In function ‘main’: thttpd.c:611:12: warning: implicit declaration of function ‘sigset’; did you mean ‘isset’? [-Wimplicit-function-declaration] 611 | (void) sigset( SIGTERM, handle_term ); | ^~~~~~ | isset rm -f mime_encodings.h sed < mime_encodings.txt > mime_encodings.h \ -e 's/#.*//' -e 's/[ ]*$//' -e '/^$/d' \ -e 's/[ ][ ]*/", 0, "/' -e 's/^/{ "/' -e 's/$/", 0 },/' rm -f mime_types.h sed < mime_types.txt > mime_types.h \ -e 's/#.*//' -e 's/[ ]*$//' -e '/^$/d' \ -e 's/[ ][ ]*/", 0, "/' -e 's/^/{ "/' -e 's/$/", 0 },/' gcc -O2 -DHAVE__PROGNAME=1 -DHAVE_FCNTL_H=1 -DHAVE_GRP_H=1 -DHAVE_MEMORY_H=1 -DHAVE_PATHS_H=1 -DHAVE_POLL_H=1 -DHAVE_SYS_POLL_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_DIRENT_H=1 -DHAVE_LIBCRYPT=1 -DHAVE_STRERROR=1 -DHAVE_WAITPID=1 -DHAVE_VSNPRINTF=1 -DHAVE_DAEMON=1 -DHAVE_SETSID=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_SIGSET=1 -DHAVE_ATOLL=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_SELECT=1 -DHAVE_POLL=1 -DHAVE_TM_GMTOFF=1 -DHAVE_INT64T=1 -DHAVE_SOCKLENT=1 -I. -c libhttpd.c libhttpd.c: In function ‘cgi_child’: libhttpd.c:3557:12: warning: implicit declaration of function ‘sigset’; did you mean ‘isset’? [-Wimplicit-function-declaration] 3557 | (void) sigset( SIGPIPE, SIG_DFL ); | ^~~~~~ | isset libhttpd.c: In function ‘ls’: libhttpd.c:2846:10: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=] 2846 | (void) strncpy( nameptrs[nnames], de->d_name, namlen ); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ libhttpd.c:64:25: note: length computed here 64 | # define NAMLEN(dirent) strlen((dirent)->d_name) | ^~~~~~~~~~~~~~~~~~~~~~~~ libhttpd.c:2845:12: note: in expansion of macro ‘NAMLEN’ 2845 | namlen = NAMLEN(de); | ^~~~~~ gcc -O2 -DHAVE__PROGNAME=1 -DHAVE_FCNTL_H=1 -DHAVE_GRP_H=1 -DHAVE_MEMORY_H=1 -DHAVE_PATHS_H=1 -DHAVE_POLL_H=1 -DHAVE_SYS_POLL_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_DIRENT_H=1 -DHAVE_LIBCRYPT=1 -DHAVE_STRERROR=1 -DHAVE_WAITPID=1 -DHAVE_VSNPRINTF=1 -DHAVE_DAEMON=1 -DHAVE_SETSID=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_SIGSET=1 -DHAVE_ATOLL=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_SELECT=1 -DHAVE_POLL=1 -DHAVE_TM_GMTOFF=1 -DHAVE_INT64T=1 -DHAVE_SOCKLENT=1 -I. -c fdwatch.c gcc -O2 -DHAVE__PROGNAME=1 -DHAVE_FCNTL_H=1 -DHAVE_GRP_H=1 -DHAVE_MEMORY_H=1 -DHAVE_PATHS_H=1 -DHAVE_POLL_H=1 -DHAVE_SYS_POLL_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_DIRENT_H=1 -DHAVE_LIBCRYPT=1 -DHAVE_STRERROR=1 -DHAVE_WAITPID=1 -DHAVE_VSNPRINTF=1 -DHAVE_DAEMON=1 -DHAVE_SETSID=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_SIGSET=1 -DHAVE_ATOLL=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_SELECT=1 -DHAVE_POLL=1 -DHAVE_TM_GMTOFF=1 -DHAVE_INT64T=1 -DHAVE_SOCKLENT=1 -I. -c mmc.c gcc -O2 -DHAVE__PROGNAME=1 -DHAVE_FCNTL_H=1 -DHAVE_GRP_H=1 -DHAVE_MEMORY_H=1 -DHAVE_PATHS_H=1 -DHAVE_POLL_H=1 -DHAVE_SYS_POLL_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_DIRENT_H=1 -DHAVE_LIBCRYPT=1 -DHAVE_STRERROR=1 -DHAVE_WAITPID=1 -DHAVE_VSNPRINTF=1 -DHAVE_DAEMON=1 -DHAVE_SETSID=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_SIGSET=1 -DHAVE_ATOLL=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_SELECT=1 -DHAVE_POLL=1 -DHAVE_TM_GMTOFF=1 -DHAVE_INT64T=1 -DHAVE_SOCKLENT=1 -I. -c timers.c gcc -O2 -DHAVE__PROGNAME=1 -DHAVE_FCNTL_H=1 -DHAVE_GRP_H=1 -DHAVE_MEMORY_H=1 -DHAVE_PATHS_H=1 -DHAVE_POLL_H=1 -DHAVE_SYS_POLL_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_DIRENT_H=1 -DHAVE_LIBCRYPT=1 -DHAVE_STRERROR=1 -DHAVE_WAITPID=1 -DHAVE_VSNPRINTF=1 -DHAVE_DAEMON=1 -DHAVE_SETSID=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_SIGSET=1 -DHAVE_ATOLL=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_SELECT=1 -DHAVE_POLL=1 -DHAVE_TM_GMTOFF=1 -DHAVE_INT64T=1 -DHAVE_SOCKLENT=1 -I. -c match.c gcc -O2 -DHAVE__PROGNAME=1 -DHAVE_FCNTL_H=1 -DHAVE_GRP_H=1 -DHAVE_MEMORY_H=1 -DHAVE_PATHS_H=1 -DHAVE_POLL_H=1 -DHAVE_SYS_POLL_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_DIRENT_H=1 -DHAVE_LIBCRYPT=1 -DHAVE_STRERROR=1 -DHAVE_WAITPID=1 -DHAVE_VSNPRINTF=1 -DHAVE_DAEMON=1 -DHAVE_SETSID=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_SIGSET=1 -DHAVE_ATOLL=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_SELECT=1 -DHAVE_POLL=1 -DHAVE_TM_GMTOFF=1 -DHAVE_INT64T=1 -DHAVE_SOCKLENT=1 -I. -c tdate_parse.c gcc -O2 -DHAVE__PROGNAME=1 -DHAVE_FCNTL_H=1 -DHAVE_GRP_H=1 -DHAVE_MEMORY_H=1 -DHAVE_PATHS_H=1 -DHAVE_POLL_H=1 -DHAVE_SYS_POLL_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_DIRENT_H=1 -DHAVE_LIBCRYPT=1 -DHAVE_STRERROR=1 -DHAVE_WAITPID=1 -DHAVE_VSNPRINTF=1 -DHAVE_DAEMON=1 -DHAVE_SETSID=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_SIGSET=1 -DHAVE_ATOLL=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_SELECT=1 -DHAVE_POLL=1 -DHAVE_TM_GMTOFF=1 -DHAVE_INT64T=1 -DHAVE_SOCKLENT=1 -I. -o thttpd thttpd.o libhttpd.o fdwatch.o mmc.o timers.o match.o tdate_parse.o -lcrypt for i in cgi-src extras ; do ( \ cd $i ; \ pwd ; \ make \ WEBDIR=/home/local/www \ CGIBINDIR=/home/local/www/cgi-bin \ MANDIR=/home/local/man \ WEBGROUP=www \ ) ; done /home/pi/freedom/Acme.com/thttpd-2.29/cgi-src make[1]: Entering directory '/home/pi/freedom/Acme.com/thttpd-2.29/cgi-src' gcc -O2 -DHAVE__PROGNAME=1 -DHAVE_FCNTL_H=1 -DHAVE_GRP_H=1 -DHAVE_MEMORY_H=1 -DHAVE_PATHS_H=1 -DHAVE_POLL_H=1 -DHAVE_SYS_POLL_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_DIRENT_H=1 -DHAVE_LIBCRYPT=1 -DHAVE_STRERROR=1 -DHAVE_WAITPID=1 -DHAVE_VSNPRINTF=1 -DHAVE_DAEMON=1 -DHAVE_SETSID=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_SIGSET=1 -DHAVE_ATOLL=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_SELECT=1 -DHAVE_POLL=1 -DHAVE_TM_GMTOFF=1 -DHAVE_INT64T=1 -DHAVE_SOCKLENT=1 -I.. -c redirect.c gcc redirect.o -lcrypt -o redirect gcc -O2 -DHAVE__PROGNAME=1 -DHAVE_FCNTL_H=1 -DHAVE_GRP_H=1 -DHAVE_MEMORY_H=1 -DHAVE_PATHS_H=1 -DHAVE_POLL_H=1 -DHAVE_SYS_POLL_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_DIRENT_H=1 -DHAVE_LIBCRYPT=1 -DHAVE_STRERROR=1 -DHAVE_WAITPID=1 -DHAVE_VSNPRINTF=1 -DHAVE_DAEMON=1 -DHAVE_SETSID=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_SIGSET=1 -DHAVE_ATOLL=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_SELECT=1 -DHAVE_POLL=1 -DHAVE_TM_GMTOFF=1 -DHAVE_INT64T=1 -DHAVE_SOCKLENT=1 -I.. -c ssi.c ssi.c: In function ‘get_filename.constprop’: ssi.c:183:9: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=] 183 | (void) strncpy( fn, filename, fl - vl ); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ssi.c:169:10: note: length computed here 169 | fl = strlen( filename ); | ^~~~~~~~~~~~~~~~~~ gcc ssi.o ../match.o -lcrypt -o ssi gcc -O2 -DHAVE__PROGNAME=1 -DHAVE_FCNTL_H=1 -DHAVE_GRP_H=1 -DHAVE_MEMORY_H=1 -DHAVE_PATHS_H=1 -DHAVE_POLL_H=1 -DHAVE_SYS_POLL_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_DIRENT_H=1 -DHAVE_LIBCRYPT=1 -DHAVE_STRERROR=1 -DHAVE_WAITPID=1 -DHAVE_VSNPRINTF=1 -DHAVE_DAEMON=1 -DHAVE_SETSID=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_SIGSET=1 -DHAVE_ATOLL=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_SELECT=1 -DHAVE_POLL=1 -DHAVE_TM_GMTOFF=1 -DHAVE_INT64T=1 -DHAVE_SOCKLENT=1 -I.. -c phf.c gcc phf.o -lcrypt -o phf make[1]: Leaving directory '/home/pi/freedom/Acme.com/thttpd-2.29/cgi-src' /home/pi/freedom/Acme.com/thttpd-2.29/extras make[1]: Entering directory '/home/pi/freedom/Acme.com/thttpd-2.29/extras' gcc -O2 -DHAVE__PROGNAME=1 -DHAVE_FCNTL_H=1 -DHAVE_GRP_H=1 -DHAVE_MEMORY_H=1 -DHAVE_PATHS_H=1 -DHAVE_POLL_H=1 -DHAVE_SYS_POLL_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_DIRENT_H=1 -DHAVE_LIBCRYPT=1 -DHAVE_STRERROR=1 -DHAVE_WAITPID=1 -DHAVE_VSNPRINTF=1 -DHAVE_DAEMON=1 -DHAVE_SETSID=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_SIGSET=1 -DHAVE_ATOLL=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_SELECT=1 -DHAVE_POLL=1 -DHAVE_TM_GMTOFF=1 -DHAVE_INT64T=1 -DHAVE_SOCKLENT=1 -I.. -DWEBDIR=\"/home/local/www\" -c makeweb.c gcc makeweb.o -o makeweb -lcrypt gcc -O2 -DHAVE__PROGNAME=1 -DHAVE_FCNTL_H=1 -DHAVE_GRP_H=1 -DHAVE_MEMORY_H=1 -DHAVE_PATHS_H=1 -DHAVE_POLL_H=1 -DHAVE_SYS_POLL_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_DIRENT_H=1 -DHAVE_LIBCRYPT=1 -DHAVE_STRERROR=1 -DHAVE_WAITPID=1 -DHAVE_VSNPRINTF=1 -DHAVE_DAEMON=1 -DHAVE_SETSID=1 -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_SIGSET=1 -DHAVE_ATOLL=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_SELECT=1 -DHAVE_POLL=1 -DHAVE_TM_GMTOFF=1 -DHAVE_INT64T=1 -DHAVE_SOCKLENT=1 -I.. -DWEBDIR=\"/home/local/www\" -c htpasswd.c gcc htpasswd.o -o htpasswd -lcrypt make[1]: Leaving directory '/home/pi/freedom/Acme.com/thttpd-2.29/extras' pi@raspberrypi:~/freedom/Acme.com/thttpd-2.29 $ # # # ******************* ### Step four. # # The last step demands being "root" so it is: sudo make install # which should end with something like this: # # pi@raspberrypi:~/freedom/Acme.com/thttpd-2.29 $ sudo make install ### sudo Step four. mkdir -p /home/local/sbin /usr/bin/install -c -m 555 -o bin -g bin thttpd /home/local/sbin mkdir -p /home/local/man/man1 mkdir -p /home/local/man/man8 /usr/bin/install -c -m 444 -o bin -g bin thttpd.8 /home/local/man/man8 for i in cgi-src extras ; do ( \ cd $i ; \ pwd ; \ make \ WEBDIR=/home/local/www \ CGIBINDIR=/home/local/www/cgi-bin \ MANDIR=/home/local/man \ WEBGROUP=www \ install \ ) ; done /home/pi/freedom/Acme.com/thttpd-2.29/cgi-src make[1]: Entering directory '/home/pi/freedom/Acme.com/thttpd-2.29/cgi-src' mkdir -p /home/local/www/cgi-bin rm -f /home/local/www/cgi-bin/redirect cp redirect /home/local/www/cgi-bin/redirect rm -f /home/local/man/man8/redirect.8 cp redirect.8 /home/local/man/man8/redirect.8 rm -f /home/local/www/cgi-bin/ssi cp ssi /home/local/www/cgi-bin/ssi rm -f /home/local/man/man8/ssi.8 cp ssi.8 /home/local/man/man8/ssi.8 rm -f /home/local/www/cgi-bin/phf cp phf /home/local/www/cgi-bin/phf make[1]: Leaving directory '/home/pi/freedom/Acme.com/thttpd-2.29/cgi-src' /home/pi/freedom/Acme.com/thttpd-2.29/extras make[1]: Entering directory '/home/pi/freedom/Acme.com/thttpd-2.29/extras' rm -f /home/local/sbin/makeweb /home/local/sbin/htpasswd /home/local/sbin/syslogtocern cp makeweb /home/local/sbin/makeweb chgrp www /home/local/sbin/makeweb chmod 2755 /home/local/sbin/makeweb cp htpasswd /home/local/sbin/htpasswd cp syslogtocern /home/local/sbin/syslogtocern rm -f /home/local/man/man1/makeweb.1 cp makeweb.1 /home/local/man/man1/makeweb.1 rm -f /home/local/man/man1/htpasswd.1 cp htpasswd.1 /home/local/man/man1/htpasswd.1 rm -f /home/local/man/man8/syslogtocern.8 cp syslogtocern.8 /home/local/man/man8/syslogtocern.8 make[1]: Leaving directory '/home/pi/freedom/Acme.com/thttpd-2.29/extras' pi@raspberrypi:~/freedom/Acme.com/thttpd-2.29 $ # # # Some errors will be reported since the ARM names are not in its database and will not be optimized for the processor, but don't worry. If the file ends with an error report, look back up a few lines and it will probably say what the problem was that created the error. The easy way is to just set up this page along with a terminal screen and then copy the command and paste it onto the terminal command line. This is how I will be testing the install file, and making a copy of it if you need it. # # ***************************** # ### "thttpd" is now installed. ### The next thing is to add directories "logs" and "users" to the "www" directory. # # pi@raspberrypi:~/freedom/Acme.com/thttpd-2.29 $ cd /home/local/www ### pi@raspberrypi:/home/local/www $ pi@raspberrypi:/home/local/www $ ls -al ### total 12 drwxr-xr-x 3 root root 4096 Mar 16 23:27 . drwxr-xr-x 5 root root 4096 Mar 16 23:27 .. drwxr-xr-x 2 root root 4096 Mar 16 23:27 cgi-bin pi@raspberrypi:/home/local/www $ # pi@raspberrypi:/home/local/www $ sudo mkdir -v logs users ### sudo mkdir: created directory 'logs' mkdir: created directory 'users' pi@raspberrypi:/home/local/www $ pi@raspberrypi:/home/local/www $ pi@raspberrypi:/home/local/www $ ls -al ### total 20 drwxr-xr-x 5 root root 4096 Mar 16 23:33 . drwxr-xr-x 5 root root 4096 Mar 16 23:27 .. drwxr-xr-x 2 root root 4096 Mar 16 23:27 cgi-bin drwxr-xr-x 2 root root 4096 Mar 16 23:33 logs drwxr-xr-x 2 root root 4096 Mar 16 23:33 users pi@raspberrypi:/home/local/www $ # # # ********* We need this! ### ***** Now we need to change the permissions on "users" so those in the "www" group can write to this directory!***** # # pi@raspberrypi:/home/local/www $ sudo chmod -v 775 users ### sudo mode of 'users' changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x) pi@raspberrypi:/home/local/www $ # pi@raspberrypi:/home/local/www $ ls -al ### total 20 drwxr-xr-x 5 root www 4096 Mar 16 23:33 . drwxr-xr-x 5 root root 4096 Mar 16 23:27 .. drwxr-xr-x 2 root www 4096 Mar 16 23:27 cgi-bin drwxr-xr-x 2 root www 4096 Mar 16 23:33 logs drwxrwxr-x 2 root www 4096 Mar 16 23:33 users ### Make sure users is now 0775 (drwxrwxr-x). pi@raspberrypi:/home/local/www $ # # ******************* # # ### Now we go back one level so we can change the owner and group on everything in the "www" directory from "root:root" to "root:www". # pi@raspberrypi:/home/local/www $ cd ../ ### pi@raspberrypi:/home/local $ pi@raspberrypi:/home/local $ sudo chown -vR root:www www ### sudo changed ownership of 'www/cgi-bin/ssi' from root:root to root:www changed ownership of 'www/cgi-bin/phf' from root:root to root:www changed ownership of 'www/cgi-bin/redirect' from root:root to root:www changed ownership of 'www/cgi-bin' from root:root to root:www changed ownership of 'www/logs' from root:root to root:www changed ownership of 'www/users' from root:root to root:www changed ownership of 'www' from root:root to root:www pi@raspberrypi:/home/local $ # pi@raspberrypi:/home/local $ ls -al ### total 20 drwxr-xr-x 5 root root 4096 Mar 16 23:27 . drwxr-xr-x 4 root root 4096 Mar 16 23:27 .. drwxr-xr-x 4 root root 4096 Mar 16 23:27 man drwxr-xr-x 2 root root 4096 Mar 16 23:27 sbin drwxr-xr-x 5 root www 4096 Mar 16 23:33 www pi@raspberrypi:/home/local $ # # ********* # ### We now change back to the "(pi)" home directory and are going to add a "user" that belongs in the "www" group, from the help on "adduser" we see what we have to type. # # pi@raspberrypi:/home/local $ cd ### pi@raspberrypi:~ $ # # pi@raspberrypi:~ $ addgroup --help ### adduser [--home DIR] [--shell SHELL] [--no-create-home] [--uid ID] [--firstuid ID] [--lastuid ID] [--gecos GECOS] [--ingroup GROUP | --gid ID] [--disabled-password] [--disabled-login] [--add_extra_groups] USER Add a normal user adduser --system [--home DIR] [--shell SHELL] [--no-create-home] [--uid ID] [--gecos GECOS] [--group | --ingroup GROUP | --gid ID] [--disabled-password] [--disabled-login] [--add_extra_groups] USER Add a system user adduser --group [--gid ID] GROUP addgroup [--gid ID] GROUP Add a user group addgroup --system [--gid ID] GROUP Add a system group adduser USER GROUP Add an existing user to an existing group general options: --quiet | -q don't give process information to stdout --force-badname allow usernames which do not match the NAME_REGEX configuration variable --help | -h usage message --version | -v version number and copyright --conf | -c FILE use FILE as configuration file pi@raspberrypi:~ $ # # ### For an example, I will add "ac0xl", my ham radio call sign, as a user for my website. One can think of these as different tabs or categories on your website. Use a different password for these "users" than the one you use for "(pi)" for more security. The information it asks for was for the "finger" program which most computers don't run for security reasons. I usually just use the "user" for the name and leave the rest blank. (This time I will use my real data.) # # pi@raspberrypi:~ $ sudo adduser --add_extra_groups ac0xl ### sudo Adding user `ac0xl' ... Adding new group `ac0xl' (1001) ... Adding new user `ac0xl' (1001) with group `ac0xl' ... Creating home directory `/home/ac0xl' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for ac0xl Enter the new value, or press ENTER for the default Full Name []: Frank Anderson Room Number []: 651 N Broadway Work Phone []: 435-210-0710 Home Phone []: 970-424-1451 Other []: Green River UTah 84525-0615 Is the information correct? [Y/n] y Adding new user `ac0xl' to extra groups ... Adding user `ac0xl' to group `dialout' ... Adding user `ac0xl' to group `cdrom' ... Adding user `ac0xl' to group `floppy' ... Adding user `ac0xl' to group `audio' ... Adding user `ac0xl' to group `video' ... Adding user `ac0xl' to group `plugdev' ... Adding user `ac0xl' to group `users' ... pi@raspberrypi:~ $ # # pi@raspberrypi:~ $ cat /etc/group ### root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:pi tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: uucp:x:10: man:x:12: proxy:x:13: kmem:x:15: dialout:x:20:pi,ac0xl fax:x:21: voice:x:22: cdrom:x:24:pi,ac0xl floppy:x:25:ac0xl tape:x:26: sudo:x:27:pi audio:x:29:pi,pulse,ac0xl dip:x:30: www-data:x:33: backup:x:34: operator:x:37: list:x:38: irc:x:39: src:x:40: gnats:x:41: shadow:x:42: utmp:x:43: video:x:44:pi,ac0xl sasl:x:45: plugdev:x:46:pi,ac0xl staff:x:50: games:x:60:pi users:x:100:pi,ac0xl nogroup:x:65534: systemd-timesync:x:101: systemd-journal:x:102: systemd-network:x:103: systemd-resolve:x:104: input:x:105:pi kvm:x:106: render:x:107:pi crontab:x:108: netdev:x:109:pi pi:x:1000: messagebus:x:110: ssh:x:111: bluetooth:x:112: avahi:x:113: spi:x:999:pi i2c:x:998:pi gpio:x:997:pi lightdm:x:114: rdma:x:115: rtkit:x:116: lpadmin:x:117:root,pi ssl-cert:x:118: pulse:x:119: pulse-access:x:120: scanner:x:121:saned saned:x:122: colord:x:123: systemd-coredump:x:996: www:x:124:pi ac0xl:x:1001: pi@raspberrypi:~ $ # # ### adduser USER GROUP ### Add an existing user to an existing group # # pi@raspberrypi:~ $ sudo adduser ac0xl www ### sudo adduser XXXX to group yyy. Adding user `ac0xl' to group `www' ... Adding user ac0xl to group www Done. pi@raspberrypi:~ $ # # pi@raspberrypi:~ $ cat /etc/group ### root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:pi tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: uucp:x:10: man:x:12: proxy:x:13: kmem:x:15: dialout:x:20:pi,ac0xl fax:x:21: voice:x:22: cdrom:x:24:pi,ac0xl floppy:x:25:ac0xl tape:x:26: sudo:x:27:pi audio:x:29:pi,pulse,ac0xl dip:x:30: www-data:x:33: backup:x:34: operator:x:37: list:x:38: irc:x:39: src:x:40: gnats:x:41: shadow:x:42: utmp:x:43: video:x:44:pi,ac0xl sasl:x:45: plugdev:x:46:pi,ac0xl staff:x:50: games:x:60:pi users:x:100:pi,ac0xl nogroup:x:65534: systemd-timesync:x:101: systemd-journal:x:102: systemd-network:x:103: systemd-resolve:x:104: input:x:105:pi kvm:x:106: render:x:107:pi crontab:x:108: netdev:x:109:pi pi:x:1000: messagebus:x:110: ssh:x:111: bluetooth:x:112: avahi:x:113: spi:x:999:pi i2c:x:998:pi gpio:x:997:pi lightdm:x:114: rdma:x:115: rtkit:x:116: lpadmin:x:117:root,pi ssl-cert:x:118: pulse:x:119: pulse-access:x:120: scanner:x:121:saned saned:x:122: colord:x:123: systemd-coredump:x:996: www:x:124:pi,ac0xl ac0xl:x:1001: pi@raspberrypi:~ $ # # ************** # pi@raspberrypi:~ $ cd /home ### pi@raspberrypi:/home $ pi@raspberrypi:/home $ pi@raspberrypi:/home $ pi@raspberrypi:/home $ ls -al ### total 20 drwxr-xr-x 5 root root 4096 Mar 16 23:44 . drwxr-xr-x 18 root root 4096 Jan 27 22:21 .. drwxr-xr-x 2 ac0xl ac0xl 4096 Mar 16 23:44 ac0xl drwxr-xr-x 5 root root 4096 Mar 16 23:27 local drwxr-xr-x 18 pi pi 4096 Mar 16 22:34 pi pi@raspberrypi:/home $ # pi@raspberrypi:/home $ # ***** # pi@raspberrypi:/home $ su ac0xl ### we have to change to user "(ac0xl)" Password: ac0xl@raspberrypi:/home $ ac0xl@raspberrypi:/home $ # here we are still in "/home", and the user is now "ac0xl". ac0xl@raspberrypi:/home $ ac0xl@raspberrypi:/home $ cd ### ac0xl@raspberrypi:~ $ ac0xl@raspberrypi:~ $ # we are now in "(ac0xl)" home directory. ac0xl@raspberrypi:~ $ ac0xl@raspberrypi:~ $ ls -al ### total 24 drwxr-xr-x 2 ac0xl ac0xl 4096 Mar 16 23:44 . drwxr-xr-x 5 root root 4096 Mar 16 23:44 .. -rw-r--r-- 1 ac0xl ac0xl 220 Mar 16 23:44 .bash_logout -rw-r--r-- 1 ac0xl ac0xl 3523 Mar 16 23:44 .bashrc -rw-r--r-- 1 ac0xl ac0xl 1670 Mar 16 23:44 .mkshrc -rw-r--r-- 1 ac0xl ac0xl 807 Mar 16 23:44 .profile ac0xl@raspberrypi:~ $ # ac0xl@raspberrypi:~ $ touch .1001 ### Since the computer uses numbers instead of names this is one way to know what number a user is. The period before the number will keep it from copying to the web page since it makes the file hidden. # ### if makeweb does not work (no permission) did you?: sudo chmod -v 0775 /home/local/www/users #? and it actually changed the permissions to (drwxrwxr-x)? # ac0xl@raspberrypi:~ $ makeweb ### Created web directory /home/local/www/users/ac0xl Created symbolic link /home/ac0xl/public_html ac0xl@raspberrypi:~ $ # ac0xl@raspberrypi:~ $ ls -al ### total 28 drwxr-xr-x 2 ac0xl www 4096 Mar 17 01:48 . drwxr-xr-x 5 root root 4096 Mar 16 23:44 .. -rw-r--r-- 1 ac0xl www 0 Mar 16 23:57 .1001 -rw------- 1 ac0xl www 410 Mar 17 00:04 .bash_history -rw-r--r-- 1 ac0xl www 220 Mar 16 23:44 .bash_logout -rw-r--r-- 1 ac0xl www 3523 Mar 16 23:44 .bashrc -rw-r--r-- 1 ac0xl www 1670 Mar 16 23:44 .mkshrc -rw-r--r-- 1 ac0xl www 807 Mar 16 23:44 .profile lrwxrwxrwx 1 ac0xl www 27 Mar 17 01:48 public_html -> /home/local/www/users/ac0xl ac0xl@raspberrypi:~ $ # ac0xl@raspberrypi:~ $ exit ### changing back to (pi) and where we were. exit pi@raspberrypi:/home $ # # pi@raspberrypi:/home $ cd /home/local/www/users ### pi@raspberrypi:/home/local/www/users $ # pi@raspberrypi:/home/local/www/users $ ls -al ### total 12 drwxrwxr-x 3 root www 4096 Mar 16 23:48 . drwxr-xr-x 5 root www 4096 Mar 16 21:33 .. drwxr-xr-x 2 ac0xl ac0xl 4096 Mar 16 23:48 ac0xl pi@raspberrypi:/home/local/www/users $ # ### Since I want to be able to access "ac0xl" from "pi" I will change the group on "ac0xl" to "www". # # ***** # pi@raspberrypi:/home/local/www/users $ sudo chown -vR ac0xl:www ac0xl ### sudo changed ownership of 'ac0xl' from ac0xl:ac0xl to ac0xl:www pi@raspberrypi:/home/local/www/users $ # # ***** # pi@raspberrypi:/home/local/www/users $ ls -al ### total 12 drwxrwxr-x 3 root www 4096 Mar 16 23:48 . drwxr-xr-x 5 root www 4096 Mar 16 21:33 .. drwxr-xr-x 2 ac0xl www 4096 Mar 16 23:48 ac0xl pi@raspberrypi:/home/local/www/users $ # # So far so good! We now have a main www user installed. # # ***************************** # ### I liked the "anvil_thttpd.gif" on the Acme.com website and chose it as my favicon.ico by renaming a copy to favicon.ico. An "anvil" is built to be hammered on without failing, and "thttpd" is built to take a hammering without failing. It is bullet proof! When you look at your logs you will see how "thttpd" will block all sorts of attempts to break your website! You will also get an idea of things to avoid on your website. # # ***** # pi@raspberrypi:/home/local/www/users $ cd /home/local/sbin ### i@raspberrypi:/home/local/sbin $ # pi@raspberrypi:/home/local/sbin $ ls -al ### total 164 drwxr-xr-x 2 root root 4096 Mar 16 21:27 . drwxr-xr-x 5 root root 4096 Mar 16 21:27 .. -rwxr-xr-x 1 root root 15296 Mar 16 21:27 htpasswd -rwxr-sr-x 1 root www 14504 Mar 16 21:27 makeweb -r-xr-xr-x 1 root root 2878 Mar 16 21:27 syslogtocern -r-xr-xr-x 1 bin bin 121272 Mar 16 21:27 thttpd pi@raspberrypi:/home/local/sbin $ # # ***** # pi@raspberrypi:/home/local/sbin $ cd ~/freedom ### (The directory "freedom" should be in "/home/(pi)/"). pi@raspberrypi:~/freedom $ # pi@raspberrypi:~/freedom $ ls -al ### total 560 drwxr-xr-x 6 pi pi 4096 Sep 13 2021 . drwxr-xr-x 19 pi pi 4096 Mar 17 10:53 .. -r--r--r-- 1 pi pi 32014 Jan 8 2020 2010Website.pdf -r--r--r-- 1 pi pi 11024 Jan 8 2020 2019-09-05-Project.txt -r--r--r-- 1 pi pi 11941 Jan 8 2020 2019-10-01-website.txt -r--r--r-- 1 pi pi 6365 Jan 8 2020 2019-11-26-web-server.txt -r--r--r-- 1 pi pi 21340 Jan 8 2020 2019-12-06-Google-Search-Is-Broken.txt -r--r--r-- 1 pi pi 12787 Mar 18 2021 2020-07-17-thttpd.txt -r--r--r-- 1 pi pi 17955 Sep 10 2021 2021-09-01.txt -r--r--r-- 1 pi pi 17955 Sep 10 2021 2021-09-01.txt~ -r--r--r-- 1 pi pi 18393 Sep 11 2021 2021-09-07-Formatting-Drives-Greater-Than-512GB.txt -r--r--r-- 1 pi pi 5521 Sep 11 2021 2021-09-10-Install-thttpd-Raspberry-Pi-OS.txt -r--r--r-- 1 pi pi 5521 Sep 11 2021 2021-09-10-Install-thttpd-Raspberry-Pi-OS.txt~ -r--rw-r-- 1 pi pi 90984 Sep 13 2021 2021-09-13-Install-thttpd-Pi-400-ubuntu-21.04-desktop-arm64+raspi.txt -r--rw-r-- 1 pi pi 90984 Sep 13 2021 2021-09-13-Install-thttpd-Pi-400-ubuntu-21.04-desktop-arm64+raspi.txt~ drwxr-xr-x 22 pi pi 4096 Sep 1 2021 Acme.com -r--r--r-- 1 pi pi 140 Aug 23 2021 environment -r--r--r-- 1 pi pi 107 Aug 23 2021 environment~ drwxr-xr-x 4 pi pi 4096 Aug 17 2021 'HTML Sampler_files' -r--r--r-- 1 pi pi 26907 Aug 16 2021 'HTML Sampler.html' drwxr-xr-x 2 pi pi 4096 Aug 31 2021 os-debug -r--r--r-- 1 pi pi 40532 Sep 13 2021 readme.txt -r--r--r-- 1 pi pi 80728 Sep 8 2021 rfc3875-CGI.txt -r--r--r-- 1 pi pi 186 Jan 8 2020 sitemap.xml -r--r--r-- 1 pi pi 186 Jan 8 2020 sitemap.xml.txt -rwxr-xr-- 1 pi pi 472 Aug 31 2021 thttpd_config -r-xr-xr-- 1 pi pi 472 Aug 31 2021 thttpd_config~ drwxr-xr-x 2 pi pi 4096 Aug 31 2021 thttpd-extras pi@raspberrypi:~/freedom $ # # ***** # pi@raspberrypi:~/freedom $ sudo cp -rv thttpd-extras /home/local/sbin/ ### sudo 'thttpd-extras' -> '/home/local/sbin/thttpd-extras' 'thttpd-extras/thttpd.sh' -> '/home/local/sbin/thttpd-extras/thttpd.sh' 'thttpd-extras/thttpd_config' -> '/home/local/sbin/thttpd-extras/thttpd_config' 'thttpd-extras/anvil_thttpd.gif' -> '/home/local/sbin/thttpd-extras/anvil_thttpd.gif' 'thttpd-extras/readme.txt' -> '/home/local/sbin/thttpd-extras/readme.txt' 'thttpd-extras/thttpd-rotate~' -> '/home/local/sbin/thttpd-extras/thttpd-rotate~' 'thttpd-extras/thttpd.sh~' -> '/home/local/sbin/thttpd-extras/thttpd.sh~' 'thttpd-extras/thttpd_config~' -> '/home/local/sbin/thttpd-extras/thttpd_config~' 'thttpd-extras/sitemap.xml' -> '/home/local/sbin/thttpd-extras/sitemap.xml' 'thttpd-extras/thttpd-rotate' -> '/home/local/sbin/thttpd-extras/thttpd-rotate' 'thttpd-extras/sitemap.xml.txt' -> '/home/local/sbin/thttpd-extras/sitemap.xml.txt' 'thttpd-extras/favicon.ico' -> '/home/local/sbin/thttpd-extras/favicon.ico' 'thttpd-extras/rc.local~' -> '/home/local/sbin/thttpd-extras/rc.local~' 'thttpd-extras/thttpd_wrapper' -> '/home/local/sbin/thttpd-extras/thttpd_wrapper' 'thttpd-extras/robots-site.txt' -> '/home/local/sbin/thttpd-extras/robots-site.txt' 'thttpd-extras/robots.txt' -> '/home/local/sbin/thttpd-extras/robots.txt' 'thttpd-extras/rc.local' -> '/home/local/sbin/thttpd-extras/rc.local' 'thttpd-extras/thttpd_wrapper~' -> '/home/local/sbin/thttpd-extras/thttpd_wrapper~' pi@raspberrypi:~/freedom $ # # ***** # pi@raspberrypi:~/freedom $ sudo cp -rv os-debug /home/local/sbin/ ### sudo 'os-debug' -> '/home/local/sbin/os-debug' 'os-debug/dead-thttpd' -> '/home/local/sbin/os-debug/dead-thttpd' 'os-debug/readme.txt' -> '/home/local/sbin/os-debug/readme.txt' 'os-debug/thttpd-rotate~' -> '/home/local/sbin/os-debug/thttpd-rotate~' 'os-debug/thttpd-rotate' -> '/home/local/sbin/os-debug/thttpd-rotate' 'os-debug/datelog~' -> '/home/local/sbin/os-debug/datelog~' 'os-debug/dead-thttpd~' -> '/home/local/sbin/os-debug/dead-thttpd~' 'os-debug/thttpd_wrapper' -> '/home/local/sbin/os-debug/thttpd_wrapper' 'os-debug/readme.txt~' -> '/home/local/sbin/os-debug/readme.txt~' 'os-debug/datelog' -> '/home/local/sbin/os-debug/datelog' 'os-debug/thttpd_wrapper~' -> '/home/local/sbin/os-debug/thttpd_wrapper~' pi@raspberrypi:~/freedom $ # # ***** # pi@raspberrypi:~/freedom $ cd /home/local/sbin/thttpd-extras ### pi@raspberrypi:/home/local/sbin/thttpd-extras $ # pi@raspberrypi:/home/local/sbin/thttpd-extras $ ls -al ### total 76 drwxr-xr-x 2 root root 4096 Mar 17 11:13 . drwxr-xr-x 4 root root 4096 Mar 17 11:14 .. -r--r--r-- 1 root root 533 Mar 17 11:13 anvil_thttpd.gif -rw-r--r-- 1 root root 533 Mar 17 11:13 favicon.ico -rwxr-xr-- 1 root root 485 Mar 17 11:13 rc.local -r-xr-xr-- 1 root root 485 Mar 17 11:13 rc.local~ -rw-r--r-- 1 root root 308 Mar 17 11:13 readme.txt -r--r--r-- 1 root root 73 Mar 17 11:13 robots-site.txt -rw-r--r-- 1 root root 27 Mar 17 11:13 robots.txt -rw-r--r-- 1 root root 186 Mar 17 11:13 sitemap.xml -r--r--r-- 1 root root 186 Mar 17 11:13 sitemap.xml.txt -rwxr-xr-- 1 root root 472 Mar 17 11:13 thttpd_config -r-xr-xr-- 1 root root 472 Mar 17 11:13 thttpd_config~ -rwxr-xr-- 1 root root 1746 Mar 17 11:13 thttpd-rotate -r-xr-xr-- 1 root root 1746 Mar 17 11:13 thttpd-rotate~ -rwxr-xr-- 1 root root 138 Mar 17 11:13 thttpd.sh -r-xr-xr-- 1 root root 138 Mar 17 11:13 thttpd.sh~ -rwxr-xr-- 1 root root 122 Mar 17 11:13 thttpd_wrapper -r-xr-xr-- 1 root root 122 Mar 17 11:13 thttpd_wrapper~ pi@raspberrypi:/home/local/sbin/thttpd-extras $ # # ***** # pi@raspberrypi:/home/local/sbin/thttpd-extras $ cat /etc/rc.local ### #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi exit 0 pi@raspberrypi:/home/local/sbin/thttpd-extras $ # # ***** rc.local is a file that is part of "systemd" which is in "/etc", and may or may not be empty or even exist. ***** # # ***** # pi@raspberrypi:/home/local/sbin/thttpd-extras $ cat rc.local ### #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi # Start thttpd echo "Starting thttpd. \n" . /etc/thttpd.sh # exit 0 pi@raspberrypi:/home/local/sbin/thttpd-extras $ # # If /etc/rc.local is not there, or, not empty, then check that nothing different is in it as we are adding the lines: # Starting thttpd, echo "Starting thttpd. \n", and . /etc/thttpd.sh, and #, before the exit 0 to the file to start thttpd. # pi@raspberrypi:/home/local/sbin/thttpd-extras $ sudo cp -iav rc.local /etc/rc.local ### sudo cp: overwrite '/etc/rc.local'? y ### since what was there matches what is above what we are adding we over write the file. 'rc.local' -> '/etc/rc.local' # # ***** # pi@raspberrypi:/home/local/sbin/thttpd-extras $ ls -l /etc/rc.local ### -rwxr-xr-- 1 root root 485 Mar 17 11:13 /etc/rc.local # (rc.local is still 0754) # # We now need to copy thttpd.sh to /etc and make sure it is 0754. # # ***** # pi@raspberrypi:/home/local/sbin/thttpd-extras $ sudo cp -av thttpd.sh /etc/ ### sudo 'thttpd.sh' -> '/etc/thttpd.sh' pi@raspberrypi:/home/local/sbin/thttpd-extras $ # pi@raspberrypi:/home/local/sbin/thttpd-extras $ ls -l /etc/thttpd.sh ### -rwxr-xr-- 1 root root 138 Mar 17 11:13 /etc/thttpd.sh # (thttpd.sh is still 0754) # # ***** # pi@raspberrypi:/home/local/sbin/thttpd-extras $ cat thttpd.sh ### #!/bin/sh # thttpd.sh if [ -x /home/local/sbin/thttpd_wrapper ] ; then echo -n " thttpd" /home/local/sbin/thttpd_wrapper & fi # exit 0 pi@raspberrypi:/home/local/sbin/thttpd-extras $ # ### thttpd.sh is looking for thttpd_wrapper to be in "/home/local/sbin/" and being 0754, so we will copy "thttpd_wrapper" up one level to there. # pi@raspberrypi:/home/local/sbin/thttpd-extras $ sudo cp -av thttpd_wrapper ../ ### sudo 'thttpd_wrapper' -> '../thttpd_wrapper' pi@raspberrypi:/home/local/sbin/thttpd-extras $ # pi@raspberrypi:/home/local/sbin/thttpd-extras $ ls -l /home/local/sbin ### total 168 -rwxr-xr-x 1 root root 15296 Mar 16 21:27 htpasswd -rwxr-sr-x 1 root www 14504 Mar 16 21:27 makeweb drwxr-xr-x 2 root root 4096 Mar 17 11:14 os-debug -r-xr-xr-x 1 root root 2878 Mar 16 21:27 syslogtocern -r-xr-xr-x 1 bin bin 121272 Mar 16 21:27 thttpd drwxr-xr-x 2 root root 4096 Mar 17 11:13 thttpd-extras -rwxr-xr-- 1 root root 122 Mar 17 11:13 thttpd_wrapper pi@raspberrypi:/home/local/sbin/thttpd-extras $ # ### The purpose of the file "thttpd_wrapper" is to restart "thttpd" if it stops, and it checks every 10 seconds to see if "/home/local/sbin/thttpd" is running and it also loads the configuration file that is: "/home/local/www/thttpd_config". If one changes the config file, one only has to kill the "thttpd pid number" and the wrapper will restart it in 10 seconds with the new configuration. "sudo kill xxxx" will kill a program. To get all of the running "pid" numbers use "ps -e". If you forget to use "sudo" to manually start "thttpd" or even "rc.local" every 10 seconds you will get a message that "/home/local/www/logs/thttpd_log" can not be written to! (because it is now owned by nobody). What appears on your screen is not what you type in, but both the error message and what you type in. Type in "ps -e" and look for the number for "thttpd_wrapper" and then type in "sudo kill xxxx" with "xxxx" being the "pid" number. Been there, done that way too many times! # # ***** # pi@raspberrypi:/home/local/sbin/thttpd-extras $ cat thttpd_wrapper ### #!/bin/sh # thttpd_wrapper while true ; do /home/local/sbin/thttpd -D -C /home/local/www/thttpd_config sleep 10 done # pi@raspberrypi:/home/local/sbin/thttpd-extras $ # # Next "thttpd-rotate" needs to be moved to "/etc/cron.daily/" so our log files get moved every day. The time they get rotated is in "/etc/crontab" # # ***** # pi@raspberrypi:/home/local/sbin/thttpd-extras $ cat /etc/crontab ### # /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. # # SHELL=/bin/sh # PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed # 17 * * * * root cd / && run-parts --report /etc/cron.hourly # 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) # 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) # 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) # pi@raspberrypi:/home/local/sbin/thttpd-extras $ # # pi@raspberrypi:/home/local/sbin/thttpd-extras $ sudo cp -av thttpd-rotate /etc/cron.daily/ ### sudo 'thttpd-rotate' -> '/etc/cron.daily/thttpd-rotate' pi@raspberrypi:/home/local/sbin/thttpd-extras $ # pi@raspberrypi:/home/local/sbin/thttpd-extras $ ls -al /etc/cron.daily ### total 40 drwxr-xr-x 2 root root 4096 Mar 17 11:48 . drwxr-xr-x 126 root root 12288 Mar 17 11:37 .. -rwxr-xr-x 1 root root 1478 Jun 10 2021 apt-compat -rwxr-xr-x 1 root root 1298 Jan 29 2021 dpkg -rwxr-xr-x 1 root root 377 Feb 28 2021 logrotate -rwxr-xr-x 1 root root 1123 Feb 19 2021 man-db -rw-r--r-- 1 root root 102 Feb 22 2021 .placeholder -rwxr-xr-- 1 root root 1746 Mar 17 11:13 thttpd-rotate ### (thttpd_rotate is still 0754) # ### The "thttpd_rotate" file I made is for 50 days so you don't have to move them every day, week, or even month. I also put a header and a tail on the files when they rotate so you have an idea how long your website has been up. # # ***** # # pi@raspberrypi:/home/local/sbin/thttpd-extras $ cat thttpd-rotate ### #!/bin/sh # /etc/cron.daily/thttpd-rotate cd /home/local/www/logs rm -f thttpd_log.50 mv thttpd_log.49 thttpd_log.50 mv thttpd_log.48 thttpd_log.49 mv thttpd_log.47 thttpd_log.48 mv thttpd_log.46 thttpd_log.47 mv thttpd_log.45 thttpd_log.46 mv thttpd_log.44 thttpd_log.45 mv thttpd_log.43 thttpd_log.44 mv thttpd_log.42 thttpd_log.43 mv thttpd_log.41 thttpd_log.42 mv thttpd_log.40 thttpd_log.41 mv thttpd_log.39 thttpd_log.40 mv thttpd_log.38 thttpd_log.39 mv thttpd_log.37 thttpd_log.38 mv thttpd_log.36 thttpd_log.37 mv thttpd_log.35 thttpd_log.36 mv thttpd_log.34 thttpd_log.35 mv thttpd_log.33 thttpd_log.34 mv thttpd_log.32 thttpd_log.33 mv thttpd_log.31 thttpd_log.32 mv thttpd_log.30 thttpd_log.31 mv thttpd_log.29 thttpd_log.30 mv thttpd_log.28 thttpd_log.29 mv thttpd_log.27 thttpd_log.28 mv thttpd_log.26 thttpd_log.27 mv thttpd_log.25 thttpd_log.26 mv thttpd_log.24 thttpd_log.25 mv thttpd_log.23 thttpd_log.24 mv thttpd_log.22 thttpd_log.23 mv thttpd_log.21 thttpd_log.22 mv thttpd_log.20 thttpd_log.21 mv thttpd_log.19 thttpd_log.20 mv thttpd_log.18 thttpd_log.19 mv thttpd_log.17 thttpd_log.18 mv thttpd_log.16 thttpd_log.17 mv thttpd_log.15 thttpd_log.16 mv thttpd_log.14 thttpd_log.15 mv thttpd_log.13 thttpd_log.14 mv thttpd_log.12 thttpd_log.13 mv thttpd_log.11 thttpd_log.12 mv thttpd_log.10 thttpd_log.11 mv thttpd_log.09 thttpd_log.10 mv thttpd_log.08 thttpd_log.09 mv thttpd_log.07 thttpd_log.08 mv thttpd_log.06 thttpd_log.07 mv thttpd_log.05 thttpd_log.06 mv thttpd_log.04 thttpd_log.05 mv thttpd_log.03 thttpd_log.04 mv thttpd_log.02 thttpd_log.03 mv thttpd_log.01 thttpd_log.02 date >> thttpd_log w >> thttpd_log mv thttpd_log thttpd_log.01 date > thttpd_log w >> thttpd_log kill -usr1 `cat /var/run/thttpd.pid` # pi@raspberrypi:/home/local/sbin/thttpd-extras $ # # ********* # ### To copy the log files to dates, I "cd /home/local/www/logs/" and then type ls -al to get a listing of the files and the dates for the files. Then to copy the files: "sudo cp -iav *log.xx 2020.01.01" with xx being the log number and then year.mo.da and then check that I have everything right before I press the enter key. Since the log files belong to nobody and nogroup one has to use "sudo" and "cp -iav" so root can then change the owner to something else. # ### Example: # sudo cp -iv *log.xx year.mo.da # (one can use ? to replace one character, or * to replace the rest of the string for all matching files). # ls -al # # sudo chown -v ac0xl:www year.mo.da # the owner:group changes from root:root to ac0xl:www # ls -al #(lists the files and shows that they are "ac0xl www") # su ac0xl #(Shell to user "ac0xl" at this point you are still at: "/home/local/www/logs/") # cp -iav year.mo.da ~/logs/ # which will copy the files into the /ac0xl/logs/ file # cp -iav year.mo.da ~/public_html/logs/ # which will copy the files into the /home/local/www/users/ac0xl/logs/ file, making them live on the www. They will be under "ac0xl/logs/". Then I usually look on my Android phone and see if they are there. One has to refresh the page to get the new files to show. # exit # this returns you back to (pi). # # ### The last files to copy will be the "thttpd_config" files which go to "/home/local/www/". # # ********* # pi@raspberrypi:/home/local/sbin/thttpd-extras $ sudo cp -av thttpd_config* /home/local/www/ ### sudo 'thttpd_config' -> '/home/local/www/thttpd_config' 'thttpd_config~' -> '/home/local/www/thttpd_config~' pi@raspberrypi:/home/local/sbin/thttpd-extras $ # pi@raspberrypi:/home/local/sbin/thttpd-extras $ ls -al /home/local/www/ ### total 28 drwxr-xr-x 5 root www 4096 Mar 17 12:04 . drwxr-xr-x 5 root root 4096 Mar 16 21:27 .. drwxr-xr-x 2 root www 4096 Mar 16 21:27 cgi-bin drwxr-xr-x 2 root www 4096 Mar 16 21:33 logs -rwxr-xr-- 1 root root 472 Mar 17 11:13 thttpd_config -r-xr-xr-- 1 root root 472 Mar 17 11:13 thttpd_config~ drwxrwxr-x 3 root www 4096 Mar 16 23:48 users pi@raspberrypi:/home/local/sbin/thttpd-extras $ # # ***** # pi@raspberrypi:/home/local/sbin/thttpd-extras $ cat thttpd_config ### # /home/local/www/thttpd_config dir=/home/local/www chroot #chroot jail data_dir=users #vhost # if you use a domain name you will have to uncomment (remove the # at the beginning) and then make a "user" directory using your external IPv4 address (xxx.xxx.xxx.xxx) and inside this directory make symbolic links back up to your other files in "users" (../"user-name"). cgipat=**.cgi logfile=/home/local/www/logs/thttpd_log pidfile=/var/run/thttpd.pid # pi@raspberrypi:/home/local/sbin/thttpd-extras $ # # ***************************** # ***************************** # ### TESTING: # ### We need the line from thttpd_wrapper without the wrapper. # # ***** # pi@raspberrypi:/home/local/sbin/thttpd-extras $ cd ../ ### pi@raspberrypi:/home/local/sbin $ pi@raspberrypi:/home/local/sbin $ pi@raspberrypi:/home/local/sbin $ cat thttpd_wrapper ### #!/bin/sh # thttpd_wrapper while true ; do /home/local/sbin/thttpd -D -C /home/local/www/thttpd_config sleep 10 done # pi@raspberrypi:/home/local/sbin $ # # ***** # pi@raspberrypi:/home/local/sbin $ cd ### We are changing to pi home and will need to start a new terminal since it is going to lock up as soon as thttpd starts. # # ### ***** On a new terminal ***** # # sudo /home/local/sbin/thttpd -D -C /home/local/www/thttpd_config ### copy the line without the first # and paste it on to the command prompt in a new terminal window, as it will lock up when thttpd starts running. # # (on a new terminal) - sudo /home/local/sbin/thttpd -D -C /home/local/www/thttpd_config ### sudo # ### At this point the new terminal will be locked up! # # ### On the busy terminal, Control C or Control X won't stop the program. The only way to stop it is by going to a different terminal and find "thttpd" in "ps -e" then "sudo kill (program number), in this case it was 1819 for sudo, and 1820 for thttpd. # # # ********************* # ### On your web browser, type in: localhost ### This goes in the address box. If "thttpd" is working you should see a green screen with a little bit of text and "Index of /" which means thttpd is active on the local computer. # ### On your web browser, see if a green screen comes up with your first web entry. Click on it to see if it will open. Then click on the (../) to see if it takes you back up one level. # ### by clicking on the web browser and selecting all, I get this: # Index of / # # mode links bytes last-changed name # dr-x 3 4096 Mar 17 05:48 ./ # dr-x 5 4096 Mar 17 18:04 ../ # dr-x 2 4096 Mar 17 05:48 ac0xl/ # # # # ### Everything should be working at this point. Test one OK. # # # ********************* # # ### On this terminal (in Geany), type: ps -e # to find the "PID"s so you can "kill" the processes after you do a test to see if entering "localhost" in your web browser brings up a green page with your web user. # pi@raspberrypi:~ $ # ### On the busy terminal, Control C or Control X won't stop the program. The only way to stop it is by going to a different terminal and find "thttpd" in "ps -e" then "sudo kill (program number), in this case it was 1819 for sudo, and 1820 for thttpd. # # pi@raspberrypi:~ $ ps -e ### PID TTY TIME CMD 1 ? 00:00:03 systemd 2 ? 00:00:00 kthreadd 3 ? 00:00:00 rcu_gp 4 ? 00:00:00 rcu_par_gp 8 ? 00:00:00 mm_percpu_wq 9 ? 00:00:00 rcu_tasks_kthre 10 ? 00:00:00 rcu_tasks_rude_ 11 ? 00:00:00 rcu_tasks_trace 12 ? 00:00:00 ksoftirqd/0 13 ? 00:00:06 rcu_preempt 14 ? 00:00:00 migration/0 15 ? 00:00:00 cpuhp/0 16 ? 00:00:00 cpuhp/1 17 ? 00:00:00 migration/1 18 ? 00:00:00 ksoftirqd/1 21 ? 00:00:00 cpuhp/2 22 ? 00:00:00 migration/2 23 ? 00:00:00 ksoftirqd/2 26 ? 00:00:00 cpuhp/3 27 ? 00:00:00 migration/3 28 ? 00:00:00 ksoftirqd/3 31 ? 00:00:00 kdevtmpfs 32 ? 00:00:00 netns 33 ? 00:00:00 kauditd 35 ? 00:00:02 kworker/0:2-events 36 ? 00:00:00 khungtaskd 37 ? 00:00:00 oom_reaper 38 ? 00:00:00 writeback 39 ? 00:00:00 kcompactd0 61 ? 00:00:00 kblockd 62 ? 00:00:00 blkcg_punt_bio 63 ? 00:00:00 watchdogd 65 ? 00:00:00 kworker/0:1H-mmc_complete 66 ? 00:00:00 rpciod 68 ? 00:00:00 xprtiod 69 ? 00:00:00 kswapd0 70 ? 00:00:00 nfsiod 71 ? 00:00:00 kthrotld 73 ? 00:00:00 iscsi_eh 74 ? 00:00:00 iscsi_destroy 75 ? 00:00:00 nvme-wq 76 ? 00:00:00 nvme-reset-wq 77 ? 00:00:00 nvme-delete-wq 80 ? 00:00:00 DWC Notificatio 81 ? 00:00:00 uas 82 ? 00:00:00 vchiq-slot/0 83 ? 00:00:00 vchiq-recy/0 84 ? 00:00:00 vchiq-sync/0 85 ? 00:00:00 zswap-shrink 89 ? 00:00:00 sdhci 90 ? 00:00:00 irq/51-mmc0 96 ? 00:00:00 mmc_complete 97 ? 00:00:00 kworker/2:1H-kblockd 98 ? 00:00:00 kworker/1:1H-kblockd 99 ? 00:00:00 jbd2/mmcblk0p2- 100 ? 00:00:00 ext4-rsv-conver 103 ? 00:00:00 ipv6_addrconf 112 ? 00:00:00 kworker/3:2H-kblockd 145 ? 00:00:01 systemd-journal 166 ? 00:00:00 systemd-udevd 203 ? 00:00:00 vchiq-keep/0 204 ? 00:00:00 SMIO 212 ? 00:00:00 mmal-vchiq 213 ? 00:00:00 mmal-vchiq 215 ? 00:00:00 mmal-vchiq 216 ? 00:00:00 mmal-vchiq 218 ? 00:00:00 mmal-vchiq 221 ? 00:00:00 mmal-vchiq 258 ? 00:00:00 cfg80211 266 ? 00:00:20 v3d_bin 267 ? 00:00:24 v3d_render 268 ? 00:00:00 v3d_tfu 269 ? 00:00:00 v3d_csd 270 ? 00:00:00 v3d_cache_clean 273 ? 00:00:00 brcmf_wq/mmc1:0 276 ? 00:00:00 brcmf_wdog/mmc1 305 ? 00:00:02 kworker/0:3-events 385 ? 00:00:00 irq/42-vc4 hdmi 386 ? 00:00:00 irq/43-vc4 hdmi 387 ? 00:00:00 avahi-daemon 388 ? 00:00:00 cec-vc4 389 ? 00:00:00 irq/39-vc4 hdmi 390 ? 00:00:00 irq/38-vc4 hdmi 391 ? 00:00:00 cron 392 ? 00:00:00 dbus-daemon 393 ? 00:00:00 irq/48-vc4 hdmi 394 ? 00:00:00 irq/49-vc4 hdmi 395 ? 00:00:00 cec-vc4 396 ? 00:00:00 irq/45-vc4 hdmi 397 ? 00:00:00 irq/44-vc4 hdmi 399 ? 00:00:00 card0-crtc0 400 ? 00:00:00 card0-crtc1 401 ? 00:00:00 card0-crtc2 402 ? 00:00:00 card0-crtc3 403 ? 00:00:00 card0-crtc4 404 ? 00:00:00 card0-crtc5 414 ? 00:00:00 avahi-daemon 428 ? 00:00:00 rsyslogd 451 ? 00:00:00 systemd-logind 455 ? 00:00:06 thd 461 ? 00:00:00 udisksd 463 ? 00:00:00 wpa_supplicant 531 ? 00:00:00 rngd 542 ? 00:00:00 cupsd 544 ? 00:00:00 dhcpcd 550 ? 00:00:00 lightdm 578 tty7 00:05:20 Xorg 582 tty1 00:00:00 login 583 ? 00:00:00 polkitd 586 ? 00:00:00 wpa_supplicant 601 ? 00:00:00 cups-browsed 615 ? 00:00:00 lightdm 620 ? 00:00:00 systemd 621 ? 00:00:00 (sd-pam) 640 ? 00:00:00 pipewire 641 ? 00:00:02 pulseaudio 642 ? 00:00:00 lxsession 653 ? 00:00:00 rtkit-daemon 654 ? 00:00:00 dbus-daemon 662 ? 00:00:00 pipewire-media- 697 ? 00:00:00 ssh-agent 726 tty1 00:00:00 bash 738 ? 00:00:00 gvfsd 745 ? 00:00:00 gvfsd-fuse 756 ? 00:02:26 mutter 759 ? 00:00:00 lxpolkit 763 ? 00:01:41 lxpanel 764 ? 00:00:01 pcmanfm 772 ? 00:00:00 kworker/u9:1-hci0 773 ? 00:00:00 hciattach 774 ? 00:00:00 kworker/u9:2-hci0 781 ? 00:00:00 applet.py 790 ? 00:00:00 ssh-agent 831 ? 00:00:00 bluetoothd 849 ? 00:00:00 krfcommd 878 ? 00:00:00 menu-cached 885 ? 00:00:00 gvfs-udisks2-vo 890 ? 00:00:00 gvfs-afc-volume 895 ? 00:00:00 gvfs-mtp-volume 899 ? 00:00:00 gvfs-goa-volume 903 ? 00:00:00 gvfs-gphoto2-vo 927 ? 00:00:00 gvfsd-trash 1070 ? 00:00:00 systemd-timesyn 1072 ? 00:00:01 lxterminal 1078 pts/0 00:00:00 bash 1085 ? 00:01:39 geany 1093 pts/1 00:00:00 bash 1104 ? 00:00:05 packagekitd 1469 ? 00:04:03 mousepad 1477 ? 00:00:00 xfconfd 1484 ? 00:00:00 dconf-service 1492 ? 00:00:00 gvfsd-network 1505 ? 00:00:00 gvfsd-dnssd 1601 ? 00:00:00 kworker/3:0H 1720 ? 00:00:00 kworker/1:2H 1763 ? 00:00:00 kworker/3:0-events_power_efficient 1778 ? 00:00:00 kworker/0:2H 1784 ? 00:00:00 kworker/u8:0-events_unbound 1789 ? 00:00:00 kworker/1:0-events 1790 ? 00:00:00 kworker/3:2-events_power_efficient 1793 ? 00:00:00 kworker/2:1-mm_percpu_wq 1802 ? 00:00:00 kworker/u8:2-cfg80211 1806 ? 00:00:00 kworker/0:0-events 1807 ? 00:00:00 kworker/2:2H 1808 ? 00:00:00 kworker/1:1-events 1810 ? 00:00:00 kworker/2:0-events 1812 ? 00:00:00 kworker/0:1-events 1813 ? 00:00:00 kworker/u8:1-brcmf_wq/mmc1:0001:1 1814 ? 00:00:00 kworker/1:2-mm_percpu_wq 1816 ? 00:00:00 kworker/2:0H 1817 ? 00:00:00 kworker/3:1-events_power_efficient 1818 ? 00:00:00 kworker/2:2-events_freezable 1819 pts/0 00:00:00 sudo 1820 ? 00:00:00 thttpd 1821 pts/1 00:00:00 ps pi@raspberrypi:~ $ # # ### At this point we need to kill the two PID numbers for "sudo" and "thttpd" which in my case are: sudo 1819 and thttpd 1820 # sudo kill 1819 1820 and repeat it to make sure they are gone. # ### I just discovered the "ps p then the 'PID' number"! It is good to verify what you are killing! # pi@raspberrypi:~ $ ps p 1819 1820 ### This will help you to not destroy something you should not! (ps p (p for PID) and then the PID numbers). PID TTY STAT TIME COMMAND 1819 pts/2 S+ 0:00 sudo /home/local/sbin/thttpd -D -C /home/local/www/thttpd_config 1820 ? Rs 1:20 /home/local/sbin/thttpd -D -C /home/local/www/thttpd_config pi@raspberrypi:~ $ # pi@raspberrypi:~ $ sudo kill 1819 1820 ### sudo Make sure you use the right numbers! pi@raspberrypi:~ $ sudo kill 1819 1820 ### sudo (use the up arrow to get the previous command) kill: (1819): No such process kill: (1820): No such process pi@raspberrypi:~ $ # ### The new terminal should now be back to the command prompt waiting for commands. # ### Now you can look at your log file in: /home/local/www/logs/ # pi@raspberrypi:~ $ cd /home/local/www/logs ### pi@raspberrypi:/home/local/www/logs $ # pi@raspberrypi:/home/local/www/logs $ ls -al ### total 12 drwxr-xr-x 2 root www 4096 Mar 17 12:26 . drwxr-xr-x 5 root www 4096 Mar 17 12:04 .. -rw-r--r-- 1 nobody nogroup 556 Mar 17 12:27 thttpd_log pi@raspberrypi:/home/local/www/logs $ # pi@raspberrypi:/home/local/www/logs $ cat *log ### 127.0.0.1 - - [17/Mar/2022:18:27:19 +0000] "GET / HTTP/1.1" 200 25000 "" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 127.0.0.1 - - [17/Mar/2022:18:27:20 +0000] "GET /favicon.ico HTTP/1.1" 404 0 "http://localhost/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 127.0.0.1 - - [17/Mar/2022:18:27:24 +0000] "GET /ac0xl/ HTTP/1.1" 200 25000 "http://localhost/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 127.0.0.1 - - [17/Mar/2022:18:27:30 +0000] "UNKNOWN UNKNOWN" 400 0 "" "" # # the 200 25000 shows that it found a directory and returned 25000 bytes, the 404 0 shows that it didn't find what was asked for (favicon.ico) and didn't return and bytes. # ### The program thttpd is working OK. # ### Now we need to add the files to "users" that are in "/home/local/sbin/thttpd-extras". # pi@raspberrypi:/home/local/www/logs $ cd /home/local/sbin/thttpd-extras/ ### pi@raspberrypi:/home/local/sbin/thttpd-extras $ # pi@raspberrypi:/home/local/sbin/thttpd-extras $ ls -al ### total 76 drwxr-xr-x 2 root root 4096 Mar 17 11:13 . drwxr-xr-x 4 root root 4096 Mar 17 11:41 .. -r--r--r-- 1 root root 533 Mar 17 11:13 anvil_thttpd.gif -rw-r--r-- 1 root root 533 Mar 17 11:13 favicon.ico -rwxr-xr-- 1 root root 485 Mar 17 11:13 rc.local -r-xr-xr-- 1 root root 485 Mar 17 11:13 rc.local~ -rw-r--r-- 1 root root 308 Mar 17 11:13 readme.txt -r--r--r-- 1 root root 73 Mar 17 11:13 robots-site.txt -rw-r--r-- 1 root root 27 Mar 17 11:13 robots.txt -rw-r--r-- 1 root root 186 Mar 17 11:13 sitemap.xml -r--r--r-- 1 root root 186 Mar 17 11:13 sitemap.xml.txt -rwxr-xr-- 1 root root 472 Mar 17 11:13 thttpd_config -r-xr-xr-- 1 root root 472 Mar 17 11:13 thttpd_config~ -rwxr-xr-- 1 root root 1746 Mar 17 11:13 thttpd-rotate -r-xr-xr-- 1 root root 1746 Mar 17 11:13 thttpd-rotate~ -rwxr-xr-- 1 root root 138 Mar 17 11:13 thttpd.sh -r-xr-xr-- 1 root root 138 Mar 17 11:13 thttpd.sh~ -rwxr-xr-- 1 root root 122 Mar 17 11:13 thttpd_wrapper -r-xr-xr-- 1 root root 122 Mar 17 11:13 thttpd_wrapper~ pi@raspberrypi:/home/local/sbin/thttpd-extras $ # pi@raspberrypi:/home/local/sbin/thttpd-extras $ sudo cp -iav favicon.ico /home/local/www/users/ ### sudo 'favicon.ico' -> '/home/local/www/users/favicon.ico' pi@raspberrypi:/home/local/sbin/thttpd-extras $ # pi@raspberrypi:/home/local/sbin/thttpd-extras $ sudo cp -iav readme.txt /home/local/www/users/ ### sudo 'readme.txt' -> '/home/local/www/users/readme.txt' pi@raspberrypi:/home/local/sbin/thttpd-extras $ # pi@raspberrypi:/home/local/sbin/thttpd-extras $ sudo cp -iav robots.txt /home/local/www/users/ ### sudo 'robots.txt' -> '/home/local/www/users/robots.txt' pi@raspberrypi:/home/local/sbin/thttpd-extras $ # pi@raspberrypi:/home/local/sbin/thttpd-extras $ sudo ls -al /home/local/www/users/ ### sudo total 24 drwxrwxr-x 3 root www 4096 Mar 17 12:58 . drwxr-xr-x 5 root www 4096 Mar 17 12:04 .. drwxr-xr-x 2 ac0xl www 4096 Mar 16 23:48 ac0xl -rw-r--r-- 1 root root 533 Mar 17 11:13 favicon.ico -rw-r--r-- 1 root root 308 Mar 17 11:13 readme.txt -rw-r--r-- 1 root root 27 Mar 17 11:13 robots.txt pi@raspberrypi:/home/local/sbin/thttpd-extras $ # # ********* # pi@raspberrypi:/home/local/sbin/thttpd-extras $ cat robots-site.txt ### User-agent: * Disallow: Sitemap: http://xxx.xxx.xxx.xxx/sitemap.xml/ pi@raspberrypi:/home/local/sbin/thttpd-extras $ # pi@raspberrypi:/home/local/sbin/thttpd-extras $ cat sitemap.xml ### http://xxx.xxx.xxx.xxx/ pi@raspberrypi:/home/local/sbin/thttpd-extras $ # # ********* # ### You would use "robots-site.txt" replacing the XXX.xxx.xxx.xxx with your external static IPv4 address and then naming it "robots.txt". Likewise, with the "sitemap.xml" file and keep the same name for it. Adding both of these files to “/home/local/www/users/”, if you have an external static IP address. # # ******************* # pi@raspberrypi:/home/local/sbin/thttpd-extras $ cd /etc ### pi@raspberrypi:/etc $ # ### **** If you don't use sudo here it will start looping every 10 seconds. Then you would have to find the pid number for thttpd_wrapper and sudo kill "pid-number" because it is trying to write to root files!!!, or just turn off the computer. **** # pi@raspberrypi:/etc $ sudo ./rc.local ### sudo (Starting thttpd from rc.local, REMEMBER the sudo!!!!!!) My IP address is 192.168.19.15 Starting thttpd. thttpdpi@raspberrypi:/etc $ # on the line above, (Notice the thttpd in front of pi@raspberrypi:/etc$ on the terminal screen, it is still running.) # # Here we see that my local IP Address is 192.168.19.15 and thttpd has started and is now running. so we will see if this IP Address will get to my web site. # ### Typing "192.168.19.15" on the browser, we get: # # Index of / # # mode links bytes last-changed name # # dr-x 3 4096 Mar 17 18:58 ./ # dr-x 5 4096 Mar 17 18:04 ../ # dr-x 2 4096 Mar 17 05:48 ac0xl/ # -r-- 1 533 Mar 17 17:13 favicon.ico # -r-- 1 308 Mar 17 17:13 readme.txt # -r-- 1 27 Mar 17 17:13 robots.txt # # # pi@raspberrypi:/etc $ cat /home/local/www/logs/*log ### 127.0.0.1 - - [17/Mar/2022:18:27:19 +0000] "GET / HTTP/1.1" 200 25000 "" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 127.0.0.1 - - [17/Mar/2022:18:27:20 +0000] "GET /favicon.ico HTTP/1.1" 404 0 "http://localhost/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 127.0.0.1 - - [17/Mar/2022:18:27:24 +0000] "GET /ac0xl/ HTTP/1.1" 200 25000 "http://localhost/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 127.0.0.1 - - [17/Mar/2022:18:27:30 +0000] "UNKNOWN UNKNOWN" 400 0 "" "" 192.168.19.15 - - [17/Mar/2022:19:18:17 +0000] "GET / HTTP/1.1" 200 25000 "" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 192.168.19.15 - - [17/Mar/2022:19:18:17 +0000] "GET /favicon.ico HTTP/1.1" 200 533 "http://192.168.19.15/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 192.168.19.15 - - [17/Mar/2022:19:31:27 +0000] "GET /ac0xl/ HTTP/1.1" 200 25000 "http://192.168.19.15/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 192.168.19.15 - - [17/Mar/2022:19:31:29 +0000] "GET / HTTP/1.1" 200 25000 "http://192.168.19.15/ac0xl/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 192.168.19.15 - - [17/Mar/2022:19:31:31 +0000] "GET /favicon.ico HTTP/1.1" 304 0 "http://192.168.19.15/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 192.168.19.15 - - [17/Mar/2022:19:31:52 +0000] "GET /readme.txt HTTP/1.1" 200 308 "http://192.168.19.15/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 192.168.19.15 - - [17/Mar/2022:19:31:52 +0000] "GET /favicon.ico HTTP/1.1" 200 533 "http://192.168.19.15/readme.txt" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 192.168.19.15 - - [17/Mar/2022:19:33:55 +0000] "GET /robots.txt HTTP/1.1" 200 27 "http://192.168.19.15/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" # # # This time we see that the request is from the IP Address of 192.168.19.15 the first address, "GET /favicon.ico HTTP/1.1" 200 533 "http://192.168.19.15/" sent back 533 bytes and the request was to "http://192.168.19.15/", the second one, "GET /favicon.ico HTTP/1.1" 304 0 "http://192.168.19.15/" shows that I already had the same information thus the 304 and no bytes sent, "GET /readme.txt HTTP/1.1" 200 308 "http://192.168.19.15/" sent back 308 bytes, and "GET /robots.txt HTTP/1.1" 200 27 "http://192.168.19.15/" sent back 27 bytes. I accidentally killed my browser so had to reload it. Notice it also shows what kind of machine requested the information. # ### At this point I want to do a log rotate and check it out. # pi@raspberrypi:/etc $ cd cron.daily ### pi@raspberrypi:/etc/cron.daily $ # pi@raspberrypi:/etc/cron.daily $ ls -al ### total 40 drwxr-xr-x 2 root root 4096 Mar 25 13:08 . drwxr-xr-x 128 root root 12288 Mar 25 13:01 .. -rwxr-xr-x 1 root root 1478 Jun 10 2021 apt-compat -rwxr-xr-x 1 root root 1298 Apr 29 2021 dpkg -rwxr-xr-x 1 root root 377 Feb 28 2021 logrotate -rwxr-xr-x 1 root root 1123 Feb 19 2021 man-db -rw-r--r-- 1 root root 102 Feb 22 2021 .placeholder -rwxr-xr-- 1 root root 1746 Mar 25 12:43 thttpd-rotate pi@raspberrypi:/etc/cron.daily $ # ### One has to use sudo because they are owned by root. The period "." stands for "do" then it needs a space, hence the "/". # pi@raspberrypi:/etc/cron.daily $ sudo ./thttpd-rotate ### # These files do not exist yet because we do not have 50 log files. mv: cannot stat 'thttpd_log.49': No such file or directory mv: cannot stat 'thttpd_log.48': No such file or directory mv: cannot stat 'thttpd_log.47': No such file or directory mv: cannot stat 'thttpd_log.46': No such file or directory mv: cannot stat 'thttpd_log.45': No such file or directory mv: cannot stat 'thttpd_log.44': No such file or directory mv: cannot stat 'thttpd_log.43': No such file or directory mv: cannot stat 'thttpd_log.42': No such file or directory mv: cannot stat 'thttpd_log.41': No such file or directory mv: cannot stat 'thttpd_log.40': No such file or directory mv: cannot stat 'thttpd_log.39': No such file or directory mv: cannot stat 'thttpd_log.38': No such file or directory mv: cannot stat 'thttpd_log.37': No such file or directory mv: cannot stat 'thttpd_log.36': No such file or directory mv: cannot stat 'thttpd_log.35': No such file or directory mv: cannot stat 'thttpd_log.34': No such file or directory mv: cannot stat 'thttpd_log.33': No such file or directory mv: cannot stat 'thttpd_log.32': No such file or directory mv: cannot stat 'thttpd_log.31': No such file or directory mv: cannot stat 'thttpd_log.30': No such file or directory mv: cannot stat 'thttpd_log.29': No such file or directory mv: cannot stat 'thttpd_log.28': No such file or directory mv: cannot stat 'thttpd_log.27': No such file or directory mv: cannot stat 'thttpd_log.26': No such file or directory mv: cannot stat 'thttpd_log.25': No such file or directory mv: cannot stat 'thttpd_log.24': No such file or directory mv: cannot stat 'thttpd_log.23': No such file or directory mv: cannot stat 'thttpd_log.22': No such file or directory mv: cannot stat 'thttpd_log.21': No such file or directory mv: cannot stat 'thttpd_log.20': No such file or directory mv: cannot stat 'thttpd_log.19': No such file or directory mv: cannot stat 'thttpd_log.18': No such file or directory mv: cannot stat 'thttpd_log.17': No such file or directory mv: cannot stat 'thttpd_log.16': No such file or directory mv: cannot stat 'thttpd_log.15': No such file or directory mv: cannot stat 'thttpd_log.14': No such file or directory mv: cannot stat 'thttpd_log.13': No such file or directory mv: cannot stat 'thttpd_log.12': No such file or directory mv: cannot stat 'thttpd_log.11': No such file or directory mv: cannot stat 'thttpd_log.10': No such file or directory mv: cannot stat 'thttpd_log.09': No such file or directory mv: cannot stat 'thttpd_log.08': No such file or directory mv: cannot stat 'thttpd_log.07': No such file or directory mv: cannot stat 'thttpd_log.06': No such file or directory mv: cannot stat 'thttpd_log.05': No such file or directory mv: cannot stat 'thttpd_log.04': No such file or directory mv: cannot stat 'thttpd_log.03': No such file or directory mv: cannot stat 'thttpd_log.02': No such file or directory mv: cannot stat 'thttpd_log.01': No such file or directory pi@raspberrypi:/etc/cron.daily $ # # # Since thttpd is still running, I will try connecting with my Android phone. # pi@raspberrypi:/etc/cron.daily $ ls -al /home/local/www/logs ### total 16 drwxr-xr-x 2 root www 4096 Mar 17 14:48 . drwxr-xr-x 5 root www 4096 Mar 17 12:04 .. -rw-r--r-- 1 root root 334 Mar 17 14:48 thttpd_log -rw-r--r-- 1 nobody nogroup 2291 Mar 17 14:48 thttpd_log.01 pi@raspberrypi:/etc/cron.daily $ # pi@raspberrypi:/etc/cron.daily $ cat /home/local/www/logs/*log ### # # # ***************************** # pi@raspberrypi:/etc $ man makeweb ### # pi@raspberrypi:/etc $ man htpasswd ### # pi@raspberrypi:/etc $ man syslogtocern ### # pi@raspberrypi:/etc $ man thttpd ### # pi@raspberrypi:/etc $ man redirect ### # pi@raspberrypi:/etc $ man ssi ### # pi@raspberrypi:/etc $ man strftime ### # pi@raspberrypi:/etc $ man weblog_parse ### No manual entry for weblog_parse # pi@raspberrypi:/etc $ man http_get ### No manual entry for http_get # ### It looks like all of the man pages that come with thttpd are working. Some systems will not find the path to the man pages and those systems can use: sudo cp -iav /home/local/man/* /usr/local/man # to copy them over into "/usr/local/man" (see below). # # ************************************ # ### If the man pages did not work, this should let them work. # pi@raspberrypi:/etc $ cd /home/local/man ### pi@raspberrypi:/home/local/man $ pi@raspberrypi:/home/local/man $ ls -al ### total 16 drwxr-xr-x 4 root root 4096 Mar 16 21:27 . drwxr-xr-x 5 root root 4096 Mar 16 21:27 .. drwxr-xr-x 2 root root 4096 Mar 16 21:27 man1 drwxr-xr-x 2 root root 4096 Mar 16 21:27 man8 pi@raspberrypi:/home/local/man $ # pi@raspberrypi:/home/local/man $ sudo cp -iav /home/local/man/* /usr/local/man ### sudo '/home/local/man/man1' -> '/usr/local/man/man1' '/home/local/man/man1/makeweb.1' -> '/usr/local/man/man1/makeweb.1' '/home/local/man/man1/htpasswd.1' -> '/usr/local/man/man1/htpasswd.1' '/home/local/man/man8' -> '/usr/local/man/man8' '/home/local/man/man8/thttpd.8' -> '/usr/local/man/man8/thttpd.8' '/home/local/man/man8/redirect.8' -> '/usr/local/man/man8/redirect.8' '/home/local/man/man8/ssi.8' -> '/usr/local/man/man8/ssi.8' '/home/local/man/man8/syslogtocern.8' -> '/usr/local/man/man8/syslogtocern.8' pi@raspberrypi:/home/local/man $ # ### Then test to see if the man pages work, as was done above. # pi@raspberrypi:/home/local/man $ cd /etc ### pi@raspberrypi:/etc $ # # ###****************************make log entries* # ### Since I was having problems with my setup I decided I needed more information in my logs to be able to see when I had to restart my computer when my power went down, I am on batteries and an inverter, and other problems so I built the "os-debug" directory under /home/local/sbin/. # ### thttpd is still running and I am going to change and add the os-debug files and then you can see the difference they make to the log # files. # pi@raspberrypi:/home/local/www/logs $ cd /home/local/sbin/os-debug/ ### pi@raspberrypi:/home/local/sbin/os-debug $ # ### The files in os-debug have additional thttpd pid numbers to help with OS problems. # pi@raspberrypi:/home/local/sbin/os-debug $ ls -al ### total 48 drwxr-xr-x 2 root root 4096 Mar 17 11:14 . drwxr-xr-x 4 root root 4096 Mar 17 11:41 .. -rwxr-xr-- 1 root root 185 Mar 17 11:14 datelog -r-xr-xr-- 1 root root 185 Mar 17 11:14 datelog~ -rwxr-xr-- 1 root root 385 Mar 17 11:14 dead-thttpd -r-xr-xr-- 1 root root 385 Mar 17 11:14 dead-thttpd~ -r--r--r-- 1 root root 805 Mar 17 11:14 readme.txt -r--r--r-- 1 root root 805 Mar 17 11:14 readme.txt~ -rwxr-xr-- 1 root root 1965 Mar 17 11:14 thttpd-rotate -r-xr-xr-- 1 root root 1965 Mar 17 11:14 thttpd-rotate~ -rwxr-xr-- 1 root root 153 Mar 17 11:14 thttpd_wrapper -r-xr-xr-- 1 root root 153 Mar 17 11:14 thttpd_wrapper~ pi@raspberrypi:/home/local/sbin/os-debug $ # pi@AC0XL-Pi-400:~/freedom/os-debug $ cat readme.txt ### #readme.txt # # The files in os-debug have additional thttpd pid numbers to help with OS problems. # #pi@AC0XL-Pi-400:~$ #pi@AC0XL-Pi-400:~$ cd /home/local/sbin/os-debug/ ### #pi@AC0XL-Pi-400:/home/local/sbin/os-debug$ #pi@AC0XL-Pi-400:/home/local/sbin/os-debug$ sudo cp -av d* thttp*r ../ ### sudo #'datelog' -> '../datelog' #'dead-thttpd' -> '../dead-thttpd' #'thttpd_wrapper' -> '../thttpd_wrapper' #pi@AC0XL-Pi-400:/home/local/sbin/os-debug$ #pi@AC0XL-Pi-400:/home/local/sbin/os-debug$ # # Now we have to replace thttpd-rotate in /etc/cron.daily. # #pi@AC0XL-Pi-400:/home/local/sbin/os-debug$ sudo cp -av thttpd-rotate /etc/cron.daily ### sudo - we are adding lines for thttpd pid information. #pi@AC0XL-Pi-400:/home/local/sbin/os-debug$ # pi@AC0XL-Pi-400:~/freedom/os-debug $ # # # ***************** # # pi@raspberrypi:/home/local/sbin/os-debug $ pi@raspberrypi:/home/local/sbin/os-debug $ sudo cp -av d* thttp*r ../ ### sudo 'datelog' -> '../datelog' 'datelog~' -> '../datelog~' 'dead-thttpd' -> '../dead-thttpd' 'dead-thttpd~' -> '../dead-thttpd~' 'thttpd_wrapper' -> '../thttpd_wrapper' pi@raspberrypi:/home/local/sbin/os-debug $ pi@raspberrypi:/home/local/sbin/os-debug $ # ### Now we have to replace thttpd-rotate in /etc/cron.daily. # pi@raspberrypi:/home/local/sbin/os-debug $ sudo cp -av thttpd-rotate /etc/cron.daily ### sudo - we are adding lines for thttpd PID information. 'thttpd-rotate' -> '/etc/cron.daily/thttpd-rotate' pi@raspberrypi:/home/local/sbin/os-debug $ # # pi@raspberrypi:/home/local/sbin/os-debug $ cat thttpd_wrapper ### #!/bin/sh # thttpd_wrapper while true ; do /home/local/sbin/thttpd -D -C /home/local/www/thttpd_config /home/local/sbin/dead-thttpd sleep 10 done # pi@raspberrypi:/home/local/sbin/os-debug $ # # pi@raspberrypi:/home/local/sbin/os-debug $ cat thttpd-rotate ### #!/bin/sh # /etc/cron.daily/thttpd-rotate cd /home/local/www/logs rm -f thttpd_log.50 mv thttpd_log.49 thttpd_log.50 mv thttpd_log.48 thttpd_log.49 mv thttpd_log.47 thttpd_log.48 mv thttpd_log.46 thttpd_log.47 mv thttpd_log.45 thttpd_log.46 mv thttpd_log.44 thttpd_log.45 mv thttpd_log.43 thttpd_log.44 mv thttpd_log.42 thttpd_log.43 mv thttpd_log.41 thttpd_log.42 mv thttpd_log.40 thttpd_log.41 mv thttpd_log.39 thttpd_log.40 mv thttpd_log.38 thttpd_log.39 mv thttpd_log.37 thttpd_log.38 mv thttpd_log.36 thttpd_log.37 mv thttpd_log.35 thttpd_log.36 mv thttpd_log.34 thttpd_log.35 mv thttpd_log.33 thttpd_log.34 mv thttpd_log.32 thttpd_log.33 mv thttpd_log.31 thttpd_log.32 mv thttpd_log.30 thttpd_log.31 mv thttpd_log.29 thttpd_log.30 mv thttpd_log.28 thttpd_log.29 mv thttpd_log.27 thttpd_log.28 mv thttpd_log.26 thttpd_log.27 mv thttpd_log.25 thttpd_log.26 mv thttpd_log.24 thttpd_log.25 mv thttpd_log.23 thttpd_log.24 mv thttpd_log.22 thttpd_log.23 mv thttpd_log.21 thttpd_log.22 mv thttpd_log.20 thttpd_log.21 mv thttpd_log.19 thttpd_log.20 mv thttpd_log.18 thttpd_log.19 mv thttpd_log.17 thttpd_log.18 mv thttpd_log.16 thttpd_log.17 mv thttpd_log.15 thttpd_log.16 mv thttpd_log.14 thttpd_log.15 mv thttpd_log.13 thttpd_log.14 mv thttpd_log.12 thttpd_log.13 mv thttpd_log.11 thttpd_log.12 mv thttpd_log.10 thttpd_log.11 mv thttpd_log.09 thttpd_log.10 mv thttpd_log.08 thttpd_log.09 mv thttpd_log.07 thttpd_log.08 mv thttpd_log.06 thttpd_log.07 mv thttpd_log.05 thttpd_log.06 mv thttpd_log.04 thttpd_log.05 mv thttpd_log.03 thttpd_log.04 mv thttpd_log.02 thttpd_log.03 mv thttpd_log.01 thttpd_log.02 date >> thttpd_log echo "log rotate end, thttpd pid = " `ps -C thttpd` >> thttpd_log w >> thttpd_log mv thttpd_log thttpd_log.01 date > thttpd_log echo "old log rotate end, old thttpd pid = " `ps -C thttpd` >> thttpd_log kill -usr1 `cat /var/run/thttpd.pid` sleep 15 echo "log rotate new, thttpd pid = " `ps -C thttpd` >> thttpd_log w >> thttpd_log # pi@raspberrypi:/home/local/sbin/os-debug $ # # pi@raspberrypi:/home/local/sbin/os-debug $ cat dead-thttpd ### #!/bin/sh # dead-thttpd echo "old dead-thttpd pid = " `cat /var/run/thttpd.pid` >> /home/local/www/logs/thttpd_log date >> /home/local/www/logs/thttpd_log w >> /home/local/www/logs/thttpd_log # sleep 15 # echo "dead-thttpd, new thttpd pid = " `ps -C thttpd` >> /home/local/www/logs/thttpd_log # date >> /home/local/www/logs/thttpd_log # w >> /home/local/www/logs/thttpd_log # pi@raspberrypi:/home/local/sbin/os-debug $ # # pi@raspberrypi:/home/local/sbin/os-debug $ cat datelog ### #!/bin/sh # datelog echo "datelog, thttpd pid = " `ps -C thttpd` >> /home/local/www/logs/thttpd_log date >> /home/local/www/logs/thttpd_log w >> /home/local/www/logs/thttpd_log # pi@raspberrypi:/home/local/sbin/os-debug $ # # ### sudo datelog is entered at the command prompt and there has been a problem with the system finding it, which I will test. When the commands are run from the system they all work but there seems to be a bug with them coming from the command line. # pi@raspberrypi:/home/local/sbin/os-debug $ cd /etc/cron.daily ### pi@raspberrypi:/etc/cron.daily $ # pi@raspberrypi:/etc/cron.daily $ ls -al ### total 40 drwxr-xr-x 2 root root 4096 Mar 17 11:48 . drwxr-xr-x 126 root root 12288 Mar 17 11:37 .. -rwxr-xr-x 1 root root 1478 Jun 10 2021 apt-compat -rwxr-xr-x 1 root root 1298 Jan 29 2021 dpkg -rwxr-xr-x 1 root root 377 Feb 28 2021 logrotate -rwxr-xr-x 1 root root 1123 Feb 19 2021 man-db -rw-r--r-- 1 root root 102 Feb 22 2021 .placeholder -rwxr-xr-- 1 root root 1965 Mar 17 11:14 thttpd-rotate pi@raspberrypi:/etc/cron.daily $ # i@raspberrypi:/etc/cron.daily $ cat thttpd-rotate ### #!/bin/sh # /etc/cron.daily/thttpd-rotate cd /home/local/www/logs rm -f thttpd_log.50 mv thttpd_log.49 thttpd_log.50 mv thttpd_log.48 thttpd_log.49 mv thttpd_log.47 thttpd_log.48 mv thttpd_log.46 thttpd_log.47 mv thttpd_log.45 thttpd_log.46 mv thttpd_log.44 thttpd_log.45 mv thttpd_log.43 thttpd_log.44 mv thttpd_log.42 thttpd_log.43 mv thttpd_log.41 thttpd_log.42 mv thttpd_log.40 thttpd_log.41 mv thttpd_log.39 thttpd_log.40 mv thttpd_log.38 thttpd_log.39 mv thttpd_log.37 thttpd_log.38 mv thttpd_log.36 thttpd_log.37 mv thttpd_log.35 thttpd_log.36 mv thttpd_log.34 thttpd_log.35 mv thttpd_log.33 thttpd_log.34 mv thttpd_log.32 thttpd_log.33 mv thttpd_log.31 thttpd_log.32 mv thttpd_log.30 thttpd_log.31 mv thttpd_log.29 thttpd_log.30 mv thttpd_log.28 thttpd_log.29 mv thttpd_log.27 thttpd_log.28 mv thttpd_log.26 thttpd_log.27 mv thttpd_log.25 thttpd_log.26 mv thttpd_log.24 thttpd_log.25 mv thttpd_log.23 thttpd_log.24 mv thttpd_log.22 thttpd_log.23 mv thttpd_log.21 thttpd_log.22 mv thttpd_log.20 thttpd_log.21 mv thttpd_log.19 thttpd_log.20 mv thttpd_log.18 thttpd_log.19 mv thttpd_log.17 thttpd_log.18 mv thttpd_log.16 thttpd_log.17 mv thttpd_log.15 thttpd_log.16 mv thttpd_log.14 thttpd_log.15 mv thttpd_log.13 thttpd_log.14 mv thttpd_log.12 thttpd_log.13 mv thttpd_log.11 thttpd_log.12 mv thttpd_log.10 thttpd_log.11 mv thttpd_log.09 thttpd_log.10 mv thttpd_log.08 thttpd_log.09 mv thttpd_log.07 thttpd_log.08 mv thttpd_log.06 thttpd_log.07 mv thttpd_log.05 thttpd_log.06 mv thttpd_log.04 thttpd_log.05 mv thttpd_log.03 thttpd_log.04 mv thttpd_log.02 thttpd_log.03 mv thttpd_log.01 thttpd_log.02 date >> thttpd_log echo "log rotate end, thttpd pid = " `ps -C thttpd` >> thttpd_log w >> thttpd_log mv thttpd_log thttpd_log.01 date > thttpd_log echo "old log rotate end, old thttpd pid = " `ps -C thttpd` >> thttpd_log kill -usr1 `cat /var/run/thttpd.pid` sleep 15 echo "log rotate new, thttpd pid = " `ps -C thttpd` >> thttpd_log w >> thttpd_log # # ### That looks better! there is a sleep 15 near the end and that is to wait for the new pid to be set up. ### Notice that this program takes 15 seconds so that the new PID number will have time to come up. ### Also, the lines are not written to the log file until they finish. The "kill -usr1 `cat /var/run/thttpd.pid`" stops thttpd from taking any more requests but lets the ones that are running finish before it starts again with a new log file. That is why at times one will see extra lines after the log rotate normal ending. # # pi@raspberrypi:/etc/cron.daily $ sudo ./thttpd-rotate ### sudo mv: cannot stat 'thttpd_log.49': No such file or directory mv: cannot stat 'thttpd_log.48': No such file or directory mv: cannot stat 'thttpd_log.47': No such file or directory mv: cannot stat 'thttpd_log.46': No such file or directory mv: cannot stat 'thttpd_log.45': No such file or directory mv: cannot stat 'thttpd_log.44': No such file or directory mv: cannot stat 'thttpd_log.43': No such file or directory mv: cannot stat 'thttpd_log.42': No such file or directory mv: cannot stat 'thttpd_log.41': No such file or directory mv: cannot stat 'thttpd_log.40': No such file or directory mv: cannot stat 'thttpd_log.39': No such file or directory mv: cannot stat 'thttpd_log.38': No such file or directory mv: cannot stat 'thttpd_log.37': No such file or directory mv: cannot stat 'thttpd_log.36': No such file or directory mv: cannot stat 'thttpd_log.35': No such file or directory mv: cannot stat 'thttpd_log.34': No such file or directory mv: cannot stat 'thttpd_log.33': No such file or directory mv: cannot stat 'thttpd_log.32': No such file or directory mv: cannot stat 'thttpd_log.31': No such file or directory mv: cannot stat 'thttpd_log.30': No such file or directory mv: cannot stat 'thttpd_log.29': No such file or directory mv: cannot stat 'thttpd_log.28': No such file or directory mv: cannot stat 'thttpd_log.27': No such file or directory mv: cannot stat 'thttpd_log.26': No such file or directory mv: cannot stat 'thttpd_log.25': No such file or directory mv: cannot stat 'thttpd_log.24': No such file or directory mv: cannot stat 'thttpd_log.23': No such file or directory mv: cannot stat 'thttpd_log.22': No such file or directory mv: cannot stat 'thttpd_log.21': No such file or directory mv: cannot stat 'thttpd_log.20': No such file or directory mv: cannot stat 'thttpd_log.19': No such file or directory mv: cannot stat 'thttpd_log.18': No such file or directory mv: cannot stat 'thttpd_log.17': No such file or directory mv: cannot stat 'thttpd_log.16': No such file or directory mv: cannot stat 'thttpd_log.15': No such file or directory mv: cannot stat 'thttpd_log.14': No such file or directory mv: cannot stat 'thttpd_log.13': No such file or directory mv: cannot stat 'thttpd_log.12': No such file or directory mv: cannot stat 'thttpd_log.11': No such file or directory mv: cannot stat 'thttpd_log.10': No such file or directory mv: cannot stat 'thttpd_log.09': No such file or directory mv: cannot stat 'thttpd_log.08': No such file or directory mv: cannot stat 'thttpd_log.07': No such file or directory mv: cannot stat 'thttpd_log.06': No such file or directory mv: cannot stat 'thttpd_log.05': No such file or directory mv: cannot stat 'thttpd_log.04': No such file or directory mv: cannot stat 'thttpd_log.03': No such file or directory pi@raspberrypi:/etc/cron.daily $ # # pi@raspberrypi:/etc/cron.daily $ sudo datelog ### sudo sudo: datelog: command not found # This is the problem when the command is entered from the command line and it is not in "/usr/local/sbin/" even though all of the other commands ran from "/home/local/sbin/"! pi@raspberrypi:/etc/cron.daily $ # # pi@raspberrypi:/etc/cron.daily $ sudo ls -al /home/local/sbin ### total 192 drwxr-xr-x 4 root root 4096 Mar 17 15:33 . drwxr-xr-x 5 root root 4096 Mar 16 21:27 .. -rwxr-xr-- 1 root root 185 Mar 17 11:14 datelog -r-xr-xr-- 1 root root 185 Mar 17 11:14 datelog~ -rwxr-xr-- 1 root root 385 Mar 17 11:14 dead-thttpd -r-xr-xr-- 1 root root 385 Mar 17 11:14 dead-thttpd~ -rwxr-xr-x 1 root root 15296 Mar 16 21:27 htpasswd -rwxr-sr-x 1 root www 14504 Mar 16 21:27 makeweb drwxr-xr-x 2 root root 4096 Mar 17 11:14 os-debug -r-xr-xr-x 1 root root 2878 Mar 16 21:27 syslogtocern -r-xr-xr-x 1 bin bin 121272 Mar 16 21:27 thttpd drwxr-xr-x 2 root root 4096 Mar 17 11:13 thttpd-extras -rwxr-xr-- 1 root root 153 Mar 17 11:14 thttpd_wrapper pi@raspberrypi:/etc/cron.daily $ # # pi@raspberrypi:/etc/cron.daily $ sudo cp -iav /home/local/sbin/* /usr/local/sbin ### sudo '/home/local/sbin/datelog' -> '/usr/local/sbin/datelog' '/home/local/sbin/datelog~' -> '/usr/local/sbin/datelog~' '/home/local/sbin/dead-thttpd' -> '/usr/local/sbin/dead-thttpd' '/home/local/sbin/dead-thttpd~' -> '/usr/local/sbin/dead-thttpd~' '/home/local/sbin/htpasswd' -> '/usr/local/sbin/htpasswd' '/home/local/sbin/makeweb' -> '/usr/local/sbin/makeweb' '/home/local/sbin/os-debug' -> '/usr/local/sbin/os-debug' '/home/local/sbin/os-debug/dead-thttpd' -> '/usr/local/sbin/os-debug/dead-thttpd' '/home/local/sbin/os-debug/readme.txt' -> '/usr/local/sbin/os-debug/readme.txt' '/home/local/sbin/os-debug/thttpd-rotate~' -> '/usr/local/sbin/os-debug/thttpd-rotate~' '/home/local/sbin/os-debug/thttpd-rotate' -> '/usr/local/sbin/os-debug/thttpd-rotate' '/home/local/sbin/os-debug/datelog~' -> '/usr/local/sbin/os-debug/datelog~' '/home/local/sbin/os-debug/dead-thttpd~' -> '/usr/local/sbin/os-debug/dead-thttpd~' '/home/local/sbin/os-debug/thttpd_wrapper' -> '/usr/local/sbin/os-debug/thttpd_wrapper' '/home/local/sbin/os-debug/readme.txt~' -> '/usr/local/sbin/os-debug/readme.txt~' '/home/local/sbin/os-debug/datelog' -> '/usr/local/sbin/os-debug/datelog' '/home/local/sbin/os-debug/thttpd_wrapper~' -> '/usr/local/sbin/os-debug/thttpd_wrapper~' '/home/local/sbin/syslogtocern' -> '/usr/local/sbin/syslogtocern' '/home/local/sbin/thttpd' -> '/usr/local/sbin/thttpd' '/home/local/sbin/thttpd-extras' -> '/usr/local/sbin/thttpd-extras' '/home/local/sbin/thttpd-extras/thttpd.sh' -> '/usr/local/sbin/thttpd-extras/thttpd.sh' '/home/local/sbin/thttpd-extras/thttpd_config' -> '/usr/local/sbin/thttpd-extras/thttpd_config' '/home/local/sbin/thttpd-extras/anvil_thttpd.gif' -> '/usr/local/sbin/thttpd-extras/anvil_thttpd.gif' '/home/local/sbin/thttpd-extras/readme.txt' -> '/usr/local/sbin/thttpd-extras/readme.txt' '/home/local/sbin/thttpd-extras/thttpd-rotate~' -> '/usr/local/sbin/thttpd-extras/thttpd-rotate~' '/home/local/sbin/thttpd-extras/thttpd.sh~' -> '/usr/local/sbin/thttpd-extras/thttpd.sh~' '/home/local/sbin/thttpd-extras/thttpd_config~' -> '/usr/local/sbin/thttpd-extras/thttpd_config~' '/home/local/sbin/thttpd-extras/sitemap.xml' -> '/usr/local/sbin/thttpd-extras/sitemap.xml' '/home/local/sbin/thttpd-extras/thttpd-rotate' -> '/usr/local/sbin/thttpd-extras/thttpd-rotate' '/home/local/sbin/thttpd-extras/sitemap.xml.txt' -> '/usr/local/sbin/thttpd-extras/sitemap.xml.txt' '/home/local/sbin/thttpd-extras/favicon.ico' -> '/usr/local/sbin/thttpd-extras/favicon.ico' '/home/local/sbin/thttpd-extras/rc.local~' -> '/usr/local/sbin/thttpd-extras/rc.local~' '/home/local/sbin/thttpd-extras/thttpd_wrapper' -> '/usr/local/sbin/thttpd-extras/thttpd_wrapper' '/home/local/sbin/thttpd-extras/robots-site.txt' -> '/usr/local/sbin/thttpd-extras/robots-site.txt' '/home/local/sbin/thttpd-extras/robots.txt' -> '/usr/local/sbin/thttpd-extras/robots.txt' '/home/local/sbin/thttpd-extras/rc.local' -> '/usr/local/sbin/thttpd-extras/rc.local' '/home/local/sbin/thttpd-extras/thttpd_wrapper~' -> '/usr/local/sbin/thttpd-extras/thttpd_wrapper~' '/home/local/sbin/thttpd_wrapper' -> '/usr/local/sbin/thttpd_wrapper' pi@raspberrypi:/etc/cron.daily $ # # pi@raspberrypi:/etc/cron.daily $ ls -al /usr/local/sbin ### total 192 drwxr-xr-x 4 root root 4096 Mar 17 16:09 . drwxr-xr-x 10 root root 4096 Jan 27 19:58 .. -rwxr-xr-- 1 root root 185 Mar 17 11:14 datelog -r-xr-xr-- 1 root root 185 Mar 17 11:14 datelog~ -rwxr-xr-- 1 root root 385 Mar 17 11:14 dead-thttpd -r-xr-xr-- 1 root root 385 Mar 17 11:14 dead-thttpd~ -rwxr-xr-x 1 root root 15296 Mar 16 21:27 htpasswd -rwxr-sr-x 1 root www 14504 Mar 16 21:27 makeweb drwxr-xr-x 2 root root 4096 Mar 17 11:14 os-debug -r-xr-xr-x 1 root root 2878 Mar 16 21:27 syslogtocern -r-xr-xr-x 1 bin bin 121272 Mar 16 21:27 thttpd drwxr-xr-x 2 root root 4096 Mar 17 11:13 thttpd-extras -rwxr-xr-- 1 root root 153 Mar 17 11:14 thttpd_wrapper pi@raspberrypi:/etc/cron.daily $ # # pi@raspberrypi:/etc/cron.daily $ sudo datelog ### pi@raspberrypi:/etc/cron.daily $ ### Magic!! Now sudo datelog works!!! The only thing different is the command is coming from the command line and not from a program which all of the other commands come from and work without being under /usr/local/sbin/!!! pi@raspberrypi:/etc/cron.daily $ # # pi@raspberrypi:/etc/cron.daily $ cd /home/local/www/logs ### pi@raspberrypi:/home/local/www/logs $ # pi@raspberrypi:/home/local/www/logs $ ls -al ### total 24 drwxr-xr-x 2 root www 4096 Mar 17 16:04 . drwxr-xr-x 5 root www 4096 Mar 17 12:04 .. -rw-r--r-- 1 nobody nogroup 1404 Mar 17 16:09 thttpd_log -rw-r--r-- 1 nobody nogroup 1582 Mar 17 16:04 thttpd_log.01 -rw-r--r-- 1 nobody nogroup 1685 Mar 17 15:16 thttpd_log.02 -rw-r--r-- 1 nobody nogroup 2291 Mar 17 14:48 thttpd_log.03 pi@raspberrypi:/home/local/www/logs $ # # pi@raspberrypi:/home/local/www/logs $ cat *log.03 ### 127.0.0.1 - - [17/Mar/2022:18:27:19 +0000] "GET / HTTP/1.1" 200 25000 "" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 127.0.0.1 - - [17/Mar/2022:18:27:20 +0000] "GET /favicon.ico HTTP/1.1" 404 0 "http://localhost/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 127.0.0.1 - - [17/Mar/2022:18:27:24 +0000] "GET /ac0xl/ HTTP/1.1" 200 25000 "http://localhost/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 127.0.0.1 - - [17/Mar/2022:18:27:30 +0000] "UNKNOWN UNKNOWN" 400 0 "" "" 192.168.19.15 - - [17/Mar/2022:19:18:17 +0000] "GET / HTTP/1.1" 200 25000 "" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 192.168.19.15 - - [17/Mar/2022:19:18:17 +0000] "GET /favicon.ico HTTP/1.1" 200 533 "http://192.168.19.15/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 192.168.19.15 - - [17/Mar/2022:19:31:27 +0000] "GET /ac0xl/ HTTP/1.1" 200 25000 "http://192.168.19.15/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 192.168.19.15 - - [17/Mar/2022:19:31:29 +0000] "GET / HTTP/1.1" 200 25000 "http://192.168.19.15/ac0xl/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 192.168.19.15 - - [17/Mar/2022:19:31:31 +0000] "GET /favicon.ico HTTP/1.1" 304 0 "http://192.168.19.15/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 192.168.19.15 - - [17/Mar/2022:19:31:52 +0000] "GET /readme.txt HTTP/1.1" 200 308 "http://192.168.19.15/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 192.168.19.15 - - [17/Mar/2022:19:31:52 +0000] "GET /favicon.ico HTTP/1.1" 200 533 "http://192.168.19.15/readme.txt" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" 192.168.19.15 - - [17/Mar/2022:19:33:55 +0000] "GET /robots.txt HTTP/1.1" 200 27 "http://192.168.19.15/" "Mozilla/5.0 (X11; Linux aarch64; rv:91.0) Gecko/20100101 Firefox/91.0" Thu 17 Mar 2022 02:48:42 PM MDT 14:48:42 up 4:24, 2 users, load average: 0.08, 0.06, 0.07 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT pi tty7 :0 00:03 14:45m 8:19 0.60s /usr/bin/lxsession -s LXDE-pi -e LXDE pi tty1 - 00:03 14:45m 0.09s 0.06s -bash pi@raspberrypi:/home/local/www/logs $ # # pi@raspberrypi:/home/local/www/logs $ cat *log.02 ### Thu 17 Mar 2022 02:48:42 PM MDT 14:48:42 up 4:24, 2 users, load average: 0.08, 0.06, 0.07 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT pi tty7 :0 00:03 14:45m 8:19 0.60s /usr/bin/lxsession -s LXDE-pi -e LXDE pi tty1 - 00:03 14:45m 0.09s 0.06s -bash 192.168.19.12 - - [17/Mar/2022:21:12:10 +0000] "GET / HTTP/1.1" 200 25000 "" "Mozilla/5.0 (Android 4.4.2; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0" 192.168.19.12 - - [17/Mar/2022:21:12:11 +0000] "GET /favicon.ico HTTP/1.1" 200 533 "" "Mozilla/5.0 (Android 4.4.2; Mobile; rv:68.3.0) Gecko/68.3.0 Firefox/68.3.0" 192.168.19.12 - - [17/Mar/2022:21:12:39 +0000] "GET /ac0xl/ HTTP/1.1" 200 25000 "http://192.168.19.15/" "Mozilla/5.0 (Android 4.4.2; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0" 192.168.19.12 - - [17/Mar/2022:21:12:53 +0000] "GET /favicon.ico HTTP/1.1" 200 533 "http://192.168.19.15/" "Mozilla/5.0 (Android 4.4.2; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0" 192.168.19.12 - - [17/Mar/2022:21:13:03 +0000] "GET /readme.txt HTTP/1.1" 200 308 "http://192.168.19.15/" "Mozilla/5.0 (Android 4.4.2; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0" 192.168.19.12 - - [17/Mar/2022:21:13:11 +0000] "GET /robots.txt HTTP/1.1" 200 27 "http://192.168.19.15/" "Mozilla/5.0 (Android 4.4.2; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0" Thu 17 Mar 2022 03:16:38 PM MDT 15:16:38 up 4:52, 2 users, load average: 0.11, 0.26, 0.25 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT pi tty7 :0 00:03 15:13m 9:29 0.61s /usr/bin/lxsession -s LXDE-pi -e LXDE pi tty1 - 00:03 15:13m 0.09s 0.06s -bash pi@raspberrypi:/home/local/www/logs $ # # pi@raspberrypi:/home/local/www/logs $ cat *log.01 ### Thu 17 Mar 2022 03:16:38 PM MDT 15:16:38 up 4:52, 2 users, load average: 0.11, 0.26, 0.25 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT pi tty7 :0 00:03 15:13m 9:29 0.61s /usr/bin/lxsession -s LXDE-pi -e LXDE pi tty1 - 00:03 15:13m 0.09s 0.06s -bash 192.168.19.23 - - [17/Mar/2022:21:46:12 +0000] "GET / HTTP/1.1" 200 25000 "" "Mozilla/5.0 (Android 6.0; Mobile; rv:98.0) Gecko/98.0 Firefox/98.0" 192.168.19.23 - - [17/Mar/2022:21:46:20 +0000] "GET /ac0xl/ HTTP/1.1" 200 25000 "http://192.168.19.15/" "Mozilla/5.0 (Android 6.0; Mobile; rv:98.0) Gecko/98.0 Firefox/98.0" 192.168.19.23 - - [17/Mar/2022:21:46:26 +0000] "GET /favicon.ico HTTP/1.1" 200 533 "http://192.168.19.15/" "Mozilla/5.0 (Android 6.0; Mobile; rv:98.0) Gecko/98.0 Firefox/98.0" 192.168.19.23 - - [17/Mar/2022:21:46:38 +0000] "GET /readme.txt HTTP/1.1" 200 308 "http://192.168.19.15/" "Mozilla/5.0 (Android 6.0; Mobile; rv:98.0) Gecko/98.0 Firefox/98.0" 192.168.19.23 - - [17/Mar/2022:21:46:44 +0000] "GET /robots.txt HTTP/1.1" 200 27 "http://192.168.19.15/" "Mozilla/5.0 (Android 6.0; Mobile; rv:98.0) Gecko/98.0 Firefox/98.0" Thu 17 Mar 2022 04:04:46 PM MDT log rotate end, thttpd pid = PID TTY TIME CMD 3157 ? 00:00:35 thttpd 16:04:46 up 5:41, 2 users, load average: 0.02, 0.04, 0.06 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT pi tty7 :0 00:03 16:01m 10:09 0.65s /usr/bin/lxsession -s LXDE-pi -e LXDE pi tty1 - 00:03 16:01m 0.09s 0.06s -bash pi@raspberrypi:/home/local/www/logs $ # # pi@raspberrypi:/home/local/www/logs $ cat *log ### Thu 17 Mar 2022 04:04:46 PM MDT old log rotate end, old thttpd pid = PID TTY TIME CMD 3157 ? 00:00:35 thttpd log rotate new, thttpd pid = PID TTY TIME CMD 3387 ? 00:00:00 thttpd 16:05:01 up 5:41, 2 users, load average: 0.01, 0.03, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT pi tty7 :0 00:03 16:01m 10:09 0.65s /usr/bin/lxsession -s LXDE-pi -e LXDE pi tty1 - 00:03 16:01m 0.09s 0.06s -bash 192.168.19.12 - - [17/Mar/2022:22:06:40 +0000] "GET / HTTP/1.1" 200 25000 "http://192.168.19.15/ac0xl/" "Mozilla/5.0 (Android 4.4.2; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0" 192.168.19.12 - - [17/Mar/2022:22:06:46 +0000] "GET /robots.txt HTTP/1.1" 304 0 "http://192.168.19.15/" "Mozilla/5.0 (Android 4.4.2; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0" 192.168.19.12 - - [17/Mar/2022:22:06:52 +0000] "GET /readme.txt HTTP/1.1" 304 0 "http://192.168.19.15/" "Mozilla/5.0 (Android 4.4.2; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0" datelog, thttpd pid = PID TTY TIME CMD 3387 ? 00:00:03 thttpd Thu 17 Mar 2022 04:09:56 PM MDT 16:09:56 up 5:46, 2 users, load average: 0.00, 0.00, 0.02 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT pi tty7 :0 00:03 16:06m 10:14 0.65s /usr/bin/lxsession -s LXDE-pi -e LXDE pi tty1 - 00:03 16:06m 0.09s 0.06s -bash pi@raspberrypi:/home/local/www/logs $ # ### As you can see thttpd can be updated while it is still running! ### While it is still running I will finish with adding more "users" to the web site. # # ***************************** # ***************************** # ### Adding more Web Users, (Headings). # Other ideas for web "users" could be: documents, downloads, games, memes, music, notices, pictures, videos, etc., just categories of what you want on your website, or what you want to share. This time we will use a different process to add only www users. # pi@raspberrypi:/home/local/www/logs $ cd /home/ ### # # pi@raspberrypi:/home/local/www/logs $ addgroup --help ### adduser [--home DIR] [--shell SHELL] [--no-create-home] [--uid ID] [--firstuid ID] [--lastuid ID] [--gecos GECOS] [--ingroup GROUP | --gid ID] [--disabled-password] [--disabled-login] [--add_extra_groups] USER Add a normal user # # pi@raspberrypi:/home/local/www/logs $ date ### Just to input the time. # # # Again the process: # # sudo adduser --ingroup www videos # (new web user "videos") # (use a password that is different from the one for "(pi)") # su videos # (shell to user "videos") # cd # touch .user-number # that is a period and the number all in one. # makeweb # ls -al # exit # (exit the shell back to where you were) # # ********* # # This is where if you have a list of typed "users" you can just copy the "name" and then be able to paste it several times without having to re-type it, or making typing mistakes. # # Since I am rebuilding my site I will add delinquent-accounts/ just to keep my numbers the same. # # pi@raspberrypi:/home/local/www/logs $ sudo adduser --ingroup www delinquent-accounts ### sudo Adding user `delinquent-accounts' ... Adding new user `delinquent-accounts' (1002) with group `www' ... Creating home directory `/home/delinquent-accounts' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for delinquent-accounts Enter the new value, or press ENTER for the default Full Name []: delinquent-accounts ### Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y pi@raspberrypi:/home/local/www/logs $ # # pi@raspberrypi:/home/local/www/logs $ su delinquent-accounts ### Password: delinquent-accounts@raspberrypi:/home/local/www/logs $ # delinquent-accounts@raspberrypi:/home/local/www/logs $ cd ### delinquent-accounts@raspberrypi:~ $ # delinquent-accounts@raspberrypi:~ $ touch .1002 ### # delinquent-accounts@raspberrypi:~ $ makeweb ### Created web directory /home/local/www/users/delinquent-accounts Created symbolic link /home/delinquent-accounts/public_html delinquent-accounts@raspberrypi:~ $ # delinquent-accounts@raspberrypi:~ $ ls -al ### total 24 drwxr-xr-x 2 delinquent-accounts www 4096 Mar 17 16:40 . drwxr-xr-x 6 root root 4096 Mar 17 16:37 .. -rw-r--r-- 1 delinquent-accounts www 0 Mar 17 16:40 .1002 -rw-r--r-- 1 delinquent-accounts www 220 Mar 17 16:37 .bash_logout -rw-r--r-- 1 delinquent-accounts www 3523 Mar 17 16:37 .bashrc -rw-r--r-- 1 delinquent-accounts www 1670 Mar 17 16:37 .mkshrc -rw-r--r-- 1 delinquent-accounts www 807 Mar 17 16:37 .profile lrwxrwxrwx 1 delinquent-accounts www 41 Mar 17 16:40 public_html -> /home/local/www/users/delinquent-accounts delinquent-accounts@raspberrypi:~ $ # delinquent-accounts@raspberrypi:~ $ exit ### exit pi@raspberrypi:/home/local/www/logs $ pi@raspberrypi:/home/local/www/logs $ # # # ********* # # This is where if you have a list of typed "users" you can just copy the "name" and then be able to paste it several times without having to re-type it, or making typing mistakes. # # ******************** Lets try adding "documents". # # pi@raspberrypi:/home/local/www/logs $ sudo adduser --ingroup www documents ### sudo Adding user `documents' ... Adding new user `documents' (1003) with group `www' ... Creating home directory `/home/documents' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for documents Enter the new value, or press ENTER for the default Full Name []: documents ### Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y pi@raspberrypi:/home/local/www/logs $ # # i@raspberrypi:/home/local/www/logs $ su documents ### Password: documents@raspberrypi:/home/local/www/logs $ # documents@raspberrypi:/home/local/www/logs $ cd ### documents@raspberrypi:~ $ # documents@raspberrypi:~ $ touch .1003 ### # documents@raspberrypi:~ $ makeweb ### Created web directory /home/local/www/users/documents Created symbolic link /home/documents/public_html documents@raspberrypi:~ $ # documents@raspberrypi:~ $ ls -al ### total 24 drwxr-xr-x 2 documents www 4096 Mar 17 16:46 . drwxr-xr-x 7 root root 4096 Mar 17 16:44 .. -rw-r--r-- 1 documents www 0 Mar 17 16:46 .1003 -rw-r--r-- 1 documents www 220 Mar 17 16:44 .bash_logout -rw-r--r-- 1 documents www 3523 Mar 17 16:44 .bashrc -rw-r--r-- 1 documents www 1670 Mar 17 16:44 .mkshrc -rw-r--r-- 1 documents www 807 Mar 17 16:44 .profile lrwxrwxrwx 1 documents www 31 Mar 17 16:46 public_html -> /home/local/www/users/documents documents@raspberrypi:~ $ # documents@raspberrypi:~ $ exit ### exit pi@raspberrypi:/home/local/www/logs $ # # # pi@raspberrypi:/home/local/www/logs $ sudo adduser --ingroup www downloads ### sudo Adding user `downloads' ... Adding new user `downloads' (1004) with group `www' ... Creating home directory `/home/downloads' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for downloads Enter the new value, or press ENTER for the default Full Name []: downloads ### Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y pi@raspberrypi:/home/local/www/logs $ pi@raspberrypi:/home/local/www/logs $ pi@raspberrypi:/home $ # # pi@raspberrypi:/home $ su downloads ### Password: downloads@raspberrypi:/home $ # downloads@raspberrypi:/home $ cd ### downloads@raspberrypi:~ $ # downloads@raspberrypi:~ $ touch .1004 ### # downloads@raspberrypi:~ $ makeweb ### Created web directory /home/local/www/users/downloads Created symbolic link /home/downloads/public_html downloads@raspberrypi:~ $ # downloads@raspberrypi:~ $ ls -al ### total 24 drwxr-xr-x 2 downloads www 4096 Mar 17 16:53 . drwxr-xr-x 8 root root 4096 Mar 17 16:47 .. -rw-r--r-- 1 downloads www 0 Mar 17 16:53 .1004 -rw-r--r-- 1 downloads www 220 Mar 17 16:47 .bash_logout -rw-r--r-- 1 downloads www 3523 Mar 17 16:47 .bashrc -rw-r--r-- 1 downloads www 1670 Mar 17 16:47 .mkshrc -rw-r--r-- 1 downloads www 807 Mar 17 16:47 .profile lrwxrwxrwx 1 downloads www 31 Mar 17 16:53 public_html -> /home/local/www/users/downloads downloads@raspberrypi:~ $ # downloads@raspberrypi:~ $ exit ### exit pi@raspberrypi:/home $ # # # pi@raspberrypi:/home $ pi@raspberrypi:/home $ ls -al ### Just to see how we are doing. total 32 drwxr-xr-x 8 root root 4096 Mar 17 16:47 . drwxr-xr-x 18 root root 4096 Jan 27 20:21 .. drwxr-xr-x 2 ac0xl www 4096 Mar 16 23:48 ac0xl drwxr-xr-x 2 delinquent-accounts www 4096 Mar 17 16:40 delinquent-accounts drwxr-xr-x 2 documents www 4096 Mar 17 16:46 documents drwxr-xr-x 2 downloads www 4096 Mar 17 16:53 downloads drwxr-xr-x 5 root root 4096 Mar 16 21:27 local drwxr-xr-x 19 pi pi 4096 Mar 17 16:48 pi pi@raspberrypi:/home $ # # # pi@raspberrypi:/home $ sudo adduser --ingroup www freedom ### sudo Adding user `freedom' ... Adding new user `freedom' (1005) with group `www' ... Creating home directory `/home/freedom' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for freedom Enter the new value, or press ENTER for the default Full Name []: freedom ### Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y pi@raspberrypi:/home $ # # @raspberrypi:/home $ su freedom ### Password: freedom@raspberrypi:/home $ # freedom@raspberrypi:/home $ cd ### freedom@raspberrypi:~ $ # freedom@raspberrypi:~ $ touch .1005 ### # freedom@raspberrypi:~ $ makeweb ### Created web directory /home/local/www/users/freedom Created symbolic link /home/freedom/public_html freedom@raspberrypi:~ $ # freedom@raspberrypi:~ $ ls -al ### total 24 drwxr-xr-x 2 freedom www 4096 Mar 17 16:57 . drwxr-xr-x 9 root root 4096 Mar 17 16:55 .. -rw-r--r-- 1 freedom www 0 Mar 17 16:57 .1005 -rw-r--r-- 1 freedom www 220 Mar 17 16:55 .bash_logout -rw-r--r-- 1 freedom www 3523 Mar 17 16:55 .bashrc -rw-r--r-- 1 freedom www 1670 Mar 17 16:55 .mkshrc -rw-r--r-- 1 freedom www 807 Mar 17 16:55 .profile lrwxrwxrwx 1 freedom www 29 Mar 17 16:57 public_html -> /home/local/www/users/freedom freedom@raspberrypi:~ $ # freedom@raspberrypi:~ $ exit ### exit pi@raspberrypi:/home $ # # # pi@raspberrypi:/home $ sudo adduser --ingroup www memes ### sudo Adding user `memes' ... Adding new user `memes' (1006) with group `www' ... Creating home directory `/home/memes' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for memes Enter the new value, or press ENTER for the default Full Name []: memes ### Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y pi@raspberrypi:/home $ # # pi@raspberrypi:/home $ su memes ### Password: memes@raspberrypi:/home $ # memes@raspberrypi:/home $ cd ### memes@raspberrypi:~ $ # memes@raspberrypi:~ $ touch .1006 ### # memes@raspberrypi:~ $ makeweb ### Created web directory /home/local/www/users/memes Created symbolic link /home/memes/public_html memes@raspberrypi:~ $ # memes@raspberrypi:~ $ ls -al ### total 24 drwxr-xr-x 2 memes www 4096 Mar 17 16:59 . drwxr-xr-x 10 root root 4096 Mar 17 16:58 .. -rw-r--r-- 1 memes www 0 Mar 17 16:59 .1006 -rw-r--r-- 1 memes www 220 Mar 17 16:58 .bash_logout -rw-r--r-- 1 memes www 3523 Mar 17 16:58 .bashrc -rw-r--r-- 1 memes www 1670 Mar 17 16:58 .mkshrc -rw-r--r-- 1 memes www 807 Mar 17 16:58 .profile lrwxrwxrwx 1 memes www 27 Mar 17 16:59 public_html -> /home/local/www/users/memes memes@raspberrypi:~ $ # memes@raspberrypi:~ $ exit ### exit pi@raspberrypi:/home $ # # # pi@raspberrypi:/home $ sudo adduser --ingroup www music ### sudo Adding user `music' ... Adding new user `music' (1007) with group `www' ... Creating home directory `/home/music' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for music Enter the new value, or press ENTER for the default Full Name []: music ### Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y pi@raspberrypi:/home $ # # pi@raspberrypi:/home $ su music ### Password: music@raspberrypi:/home $ # music@raspberrypi:/home $ cd ### music@raspberrypi:~ $ # music@raspberrypi:~ $ touch .1007 ### # music@raspberrypi:~ $ makeweb ### Created web directory /home/local/www/users/music Created symbolic link /home/music/public_html music@raspberrypi:~ $ # music@raspberrypi:~ $ ls -al ### total 24 drwxr-xr-x 2 music www 4096 Mar 17 17:02 . drwxr-xr-x 11 root root 4096 Mar 17 17:00 .. -rw-r--r-- 1 music www 0 Mar 17 17:02 .1007 -rw-r--r-- 1 music www 220 Mar 17 17:00 .bash_logout -rw-r--r-- 1 music www 3523 Mar 17 17:00 .bashrc -rw-r--r-- 1 music www 1670 Mar 17 17:00 .mkshrc -rw-r--r-- 1 music www 807 Mar 17 17:00 .profile lrwxrwxrwx 1 music www 27 Mar 17 17:02 public_html -> /home/local/www/users/music music@raspberrypi:~ $ # music@raspberrypi:~ $ exit ### exit pi@raspberrypi:/home $ # # # pi@raspberrypi:/home $ sudo adduser --ingroup www notices ### sudo Adding user `notices' ... Adding new user `notices' (1008) with group `www' ... Creating home directory `/home/notices' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for notices Enter the new value, or press ENTER for the default Full Name []: notices ### Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y pi@raspberrypi:/home $ # # pi@raspberrypi:/home $ su notices ### Password: notices@raspberrypi:/home $ # notices@raspberrypi:/home $ cd ### notices@raspberrypi:~ $ # notices@raspberrypi:~ $ touch .1008 ### # notices@raspberrypi:~ $ makeweb ### Created web directory /home/local/www/users/notices Created symbolic link /home/notices/public_html notices@raspberrypi:~ $ # notices@raspberrypi:~ $ ls -al ### total 24 drwxr-xr-x 2 notices www 4096 Mar 17 17:04 . drwxr-xr-x 12 root root 4096 Mar 17 17:03 .. -rw-r--r-- 1 notices www 0 Mar 17 17:04 .1008 -rw-r--r-- 1 notices www 220 Mar 17 17:03 .bash_logout -rw-r--r-- 1 notices www 3523 Mar 17 17:03 .bashrc -rw-r--r-- 1 notices www 1670 Mar 17 17:03 .mkshrc -rw-r--r-- 1 notices www 807 Mar 17 17:03 .profile lrwxrwxrwx 1 notices www 29 Mar 17 17:04 public_html -> /home/local/www/users/notices notices@raspberrypi:~ $ # notices@raspberrypi:~ $ exit ### exit pi@raspberrypi:/home $ # # # pi@raspberrypi:/home $ sudo adduser --ingroup www pictures ### sudo Adding user `pictures' ... Adding new user `pictures' (1009) with group `www' ... Creating home directory `/home/pictures' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for pictures Enter the new value, or press ENTER for the default Full Name []: pictures ### Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y pi@raspberrypi:/home $ # # pi@raspberrypi:/home $ su pictures ### Password: pictures@raspberrypi:/home $ # pictures@raspberrypi:/home $ cd ### pictures@raspberrypi:~ $ # pictures@raspberrypi:~ $ touch .1009 ### # pictures@raspberrypi:~ $ makeweb ### Created web directory /home/local/www/users/pictures Created symbolic link /home/pictures/public_html pictures@raspberrypi:~ $ # pictures@raspberrypi:~ $ ls -al ### total 24 drwxr-xr-x 2 pictures www 4096 Mar 17 17:06 . drwxr-xr-x 13 root root 4096 Mar 17 17:05 .. -rw-r--r-- 1 pictures www 0 Mar 17 17:06 .1009 -rw-r--r-- 1 pictures www 220 Mar 17 17:05 .bash_logout -rw-r--r-- 1 pictures www 3523 Mar 17 17:05 .bashrc -rw-r--r-- 1 pictures www 1670 Mar 17 17:05 .mkshrc -rw-r--r-- 1 pictures www 807 Mar 17 17:05 .profile lrwxrwxrwx 1 pictures www 30 Mar 17 17:06 public_html -> /home/local/www/users/pictures pictures@raspberrypi:~ $ # ictures@raspberrypi:~ $ exit ### exit pi@raspberrypi:/home $ # # # pi@raspberrypi:/home $ sudo adduser --ingroup www rome ### sudo Adding user `rome' ... Adding new user `rome' (1010) with group `www' ... Creating home directory `/home/rome' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for rome Enter the new value, or press ENTER for the default Full Name []: rome ### Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y pi@raspberrypi:/home $ # # pi@raspberrypi:/home $ su rome ### Password: rome@raspberrypi:/home $ # rome@raspberrypi:/home $ cd ### rome@raspberrypi:~ $ # rome@raspberrypi:~ $ touch .1010 ### # rome@raspberrypi:~ $ makeweb ### Created web directory /home/local/www/users/rome Created symbolic link /home/rome/public_html rome@raspberrypi:~ $ # rome@raspberrypi:~ $ ls -al ### total 24 drwxr-xr-x 2 rome www 4096 Mar 17 17:07 . drwxr-xr-x 14 root root 4096 Mar 17 17:06 .. -rw-r--r-- 1 rome www 0 Mar 17 17:07 .1010 -rw-r--r-- 1 rome www 220 Mar 17 17:06 .bash_logout -rw-r--r-- 1 rome www 3523 Mar 17 17:06 .bashrc -rw-r--r-- 1 rome www 1670 Mar 17 17:06 .mkshrc -rw-r--r-- 1 rome www 807 Mar 17 17:06 .profile lrwxrwxrwx 1 rome www 26 Mar 17 17:07 public_html -> /home/local/www/users/rome rome@raspberrypi:~ $ # rome@raspberrypi:~ $ exit ### exit pi@raspberrypi:/home $ # # # pi@raspberrypi:/home $ sudo adduser --ingroup www searles-sav-on-propane ### sudo Adding user `searles-sav-on-propane' ... Adding new user `searles-sav-on-propane' (1011) with group `www' ... Creating home directory `/home/searles-sav-on-propane' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for searles-sav-on-propane Enter the new value, or press ENTER for the default Full Name []: searles-sav-on-propane ### Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y pi@raspberrypi:/home $ # # pi@raspberrypi:/home $ su searles-sav-on-propane ### Password: searles-sav-on-propane@raspberrypi:/home $ # searles-sav-on-propane@raspberrypi:/home $ cd ### searles-sav-on-propane@raspberrypi:~ $ # searles-sav-on-propane@raspberrypi:~ $ touch .1011 ### # searles-sav-on-propane@raspberrypi:~ $ makeweb ### Created web directory /home/local/www/users/searles-sav-on-propane Created symbolic link /home/searles-sav-on-propane/public_html searles-sav-on-propane@raspberrypi:~ $ # searles-sav-on-propane@raspberrypi:~ $ ls -al ### total 24 drwxr-xr-x 2 searles-sav-on-propane www 4096 Mar 17 17:10 . drwxr-xr-x 15 root root 4096 Mar 17 17:09 .. -rw-r--r-- 1 searles-sav-on-propane www 0 Mar 17 17:10 .1011 -rw-r--r-- 1 searles-sav-on-propane www 220 Mar 17 17:09 .bash_logout -rw-r--r-- 1 searles-sav-on-propane www 3523 Mar 17 17:09 .bashrc -rw-r--r-- 1 searles-sav-on-propane www 1670 Mar 17 17:09 .mkshrc -rw-r--r-- 1 searles-sav-on-propane www 807 Mar 17 17:09 .profile lrwxrwxrwx 1 searles-sav-on-propane www 44 Mar 17 17:10 public_html -> /home/local/www/users/searles-sav-on-propane searles-sav-on-propane@raspberrypi:~ $ # searles-sav-on-propane@raspberrypi:~ $ exit ### exit pi@raspberrypi:/home $ # # # pi@raspberrypi:/home $ sudo adduser --ingroup www va ### sudo Adding user `va' ... Adding new user `va' (1012) with group `www' ... Creating home directory `/home/va' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for va Enter the new value, or press ENTER for the default Full Name []: va ### Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y pi@raspberrypi:/home $ # # pi@raspberrypi:/home $ su va ### Password: va@raspberrypi:/home $ # va@raspberrypi:/home $ cd ### va@raspberrypi:~ $ # va@raspberrypi:~ $ touch .1012 ### # va@raspberrypi:~ $ makeweb ### Created web directory /home/local/www/users/va Created symbolic link /home/va/public_html va@raspberrypi:~ $ # va@raspberrypi:~ $ ls -al ### total 24 drwxr-xr-x 2 va www 4096 Mar 17 17:12 . drwxr-xr-x 16 root root 4096 Mar 17 17:11 .. -rw-r--r-- 1 va www 0 Mar 17 17:12 .1012 -rw-r--r-- 1 va www 220 Mar 17 17:11 .bash_logout -rw-r--r-- 1 va www 3523 Mar 17 17:11 .bashrc -rw-r--r-- 1 va www 1670 Mar 17 17:11 .mkshrc -rw-r--r-- 1 va www 807 Mar 17 17:11 .profile lrwxrwxrwx 1 va www 24 Mar 17 17:12 public_html -> /home/local/www/users/va va@raspberrypi:~ $ # va@raspberrypi:~ $ exit ### exit pi@raspberrypi:/home $ # # # pi@raspberrypi:/home $ sudo adduser --ingroup www videos ### sudo Adding user `videos' ... Adding new user `videos' (1013) with group `www' ... Creating home directory `/home/videos' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for videos Enter the new value, or press ENTER for the default Full Name []: videos ### Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y pi@raspberrypi:/home $ # # pi@raspberrypi:/home $ su videos ### Password: videos@raspberrypi:/home $ # videos@raspberrypi:/home $ cd ### videos@raspberrypi:~ $ # videos@raspberrypi:~ $ touch .1013 ### # videos@raspberrypi:~ $ makeweb ### Created web directory /home/local/www/users/videos Created symbolic link /home/videos/public_html videos@raspberrypi:~ $ # videos@raspberrypi:~ $ ls -al ### total 24 drwxr-xr-x 2 videos www 4096 Mar 17 17:14 . drwxr-xr-x 17 root root 4096 Mar 17 17:13 .. -rw-r--r-- 1 videos www 0 Mar 17 17:14 .1013 -rw-r--r-- 1 videos www 220 Mar 17 17:13 .bash_logout -rw-r--r-- 1 videos www 3523 Mar 17 17:13 .bashrc -rw-r--r-- 1 videos www 1670 Mar 17 17:13 .mkshrc -rw-r--r-- 1 videos www 807 Mar 17 17:13 .profile lrwxrwxrwx 1 videos www 28 Mar 17 17:14 public_html -> /home/local/www/users/videos videos@raspberrypi:~ $ # videos@raspberrypi:~ $ exit ### exit pi@raspberrypi:/home $ # # # pi@raspberrypi:/home $ ls -al ### total 68 drwxr-xr-x 17 root root 4096 Mar 17 17:13 . drwxr-xr-x 18 root root 4096 Jan 27 20:21 .. drwxr-xr-x 2 ac0xl www 4096 Mar 16 23:48 ac0xl drwxr-xr-x 2 delinquent-accounts www 4096 Mar 17 16:40 delinquent-accounts drwxr-xr-x 2 documents www 4096 Mar 17 16:46 documents drwxr-xr-x 2 downloads www 4096 Mar 17 16:53 downloads drwxr-xr-x 2 freedom www 4096 Mar 17 16:57 freedom drwxr-xr-x 5 root root 4096 Mar 16 21:27 local drwxr-xr-x 2 memes www 4096 Mar 17 16:59 memes drwxr-xr-x 2 music www 4096 Mar 17 17:02 music drwxr-xr-x 2 notices www 4096 Mar 17 17:04 notices drwxr-xr-x 19 pi pi 4096 Mar 17 16:48 pi drwxr-xr-x 2 pictures www 4096 Mar 17 17:06 pictures drwxr-xr-x 2 rome www 4096 Mar 17 17:08 rome drwxr-xr-x 2 searles-sav-on-propane www 4096 Mar 17 17:10 searles-sav-on-propane drwxr-xr-x 2 va www 4096 Mar 17 17:12 va drwxr-xr-x 2 videos www 4096 Mar 17 17:14 videos pi@raspberrypi:/home $ # # # pi@raspberrypi:/home $ cd pi ### pi@raspberrypi:~ $ # i@raspberrypi:~ $ ls -al ### This is to check if anything got added here like a touch number or the public_html symbolic link. total 3720 drwxr-xr-x 19 pi pi 4096 Mar 17 17:16 . drwxr-xr-x 17 root root 4096 Mar 17 17:13 .. -rw-r--r-- 1 pi pi 116535 Mar 17 15:08 2022-03-16-Install-thttpd-on-Raspberry-Pi-OS.txt -rw------- 1 pi pi 6131 Mar 17 00:02 .bash_history -rw-r--r-- 1 pi pi 220 Jan 27 20:00 .bash_logout -rw-r--r-- 1 pi pi 3523 Jan 27 20:00 .bashrc drwxr-xr-x 2 pi pi 4096 Jan 27 20:09 Bookshelf drwxr-xr-x 8 pi pi 4096 Mar 16 22:37 .cache drwx------ 20 pi pi 4096 Mar 17 13:31 .config drwxr-xr-x 2 pi pi 4096 Mar 16 15:29 Desktop -rw-r--r-- 1 pi pi 35 Mar 16 16:30 .dmrc drwxr-xr-x 2 pi pi 4096 Jan 27 20:22 Documents drwxr-xr-x 2 pi pi 4096 Jan 27 20:22 Downloads drwxr-xr-x 6 pi pi 4096 Sep 13 2021 freedom -rw-r--r-- 1 pi pi 3574892 Mar 16 15:53 freedom.zip drwxr-xr-x 3 pi pi 4096 Jan 27 20:09 .local drwx------ 5 pi pi 4096 Mar 16 15:34 .mozilla drwxr-xr-x 2 pi pi 4096 Jan 27 20:22 Music drwxr-xr-x 2 pi pi 4096 Jan 27 20:22 Pictures drwx------ 3 pi pi 4096 Mar 16 22:37 .pki drwx------ 4 pi pi 4096 Mar 16 15:25 .pp_backup -rw-r--r-- 1 pi pi 807 Jan 27 20:00 .profile drwxr-xr-x 2 pi pi 4096 Jan 27 20:22 Public drwxr-xr-x 2 pi pi 4096 Jan 27 20:22 Templates drwx------ 4 pi pi 4096 Mar 16 15:52 .thunderbird drwxr-xr-x 2 pi pi 4096 Jan 27 20:22 Videos -rw------- 1 pi pi 56 Mar 17 00:03 .Xauthority -rw------- 1 pi pi 2522 Mar 17 00:03 .xsession-errors -rw------- 1 pi pi 2522 Mar 16 16:44 .xsession-errors.old pi@raspberrypi:~ $ # pi@raspberrypi:~ $ cat /etc/group ### ***********************remove ps -e***************keep running pi@raspberrypi:/etc $ ps -e ### PID TTY TIME CMD 1 ? 00:00:03 systemd 2 ? 00:00:00 kthreadd 3 ? 00:00:00 rcu_gp 4 ? 00:00:00 rcu_par_gp 8 ? 00:00:00 mm_percpu_wq 9 ? 00:00:00 rcu_tasks_kthre 10 ? 00:00:00 rcu_tasks_rude_ 11 ? 00:00:00 rcu_tasks_trace 12 ? 00:00:00 ksoftirqd/0 13 ? 00:00:08 rcu_preempt 14 ? 00:00:00 migration/0 15 ? 00:00:00 cpuhp/0 16 ? 00:00:00 cpuhp/1 17 ? 00:00:00 migration/1 18 ? 00:00:00 ksoftirqd/1 21 ? 00:00:00 cpuhp/2 22 ? 00:00:00 migration/2 23 ? 00:00:00 ksoftirqd/2 26 ? 00:00:00 cpuhp/3 27 ? 00:00:00 migration/3 28 ? 00:00:00 ksoftirqd/3 31 ? 00:00:00 kdevtmpfs 32 ? 00:00:00 netns 33 ? 00:00:00 kauditd 35 ? 00:00:04 kworker/0:2-events 36 ? 00:00:00 khungtaskd 37 ? 00:00:00 oom_reaper 38 ? 00:00:00 writeback 39 ? 00:00:00 kcompactd0 61 ? 00:00:00 kblockd 62 ? 00:00:00 blkcg_punt_bio 63 ? 00:00:00 watchdogd 65 ? 00:00:00 kworker/0:1H-mmc_complete 66 ? 00:00:00 rpciod 68 ? 00:00:00 xprtiod 69 ? 00:00:00 kswapd0 70 ? 00:00:00 nfsiod 71 ? 00:00:00 kthrotld 73 ? 00:00:00 iscsi_eh 74 ? 00:00:00 iscsi_destroy 75 ? 00:00:00 nvme-wq 76 ? 00:00:00 nvme-reset-wq 77 ? 00:00:00 nvme-delete-wq 80 ? 00:00:00 DWC Notificatio 81 ? 00:00:00 uas 82 ? 00:00:00 vchiq-slot/0 83 ? 00:00:00 vchiq-recy/0 84 ? 00:00:00 vchiq-sync/0 85 ? 00:00:00 zswap-shrink 89 ? 00:00:00 sdhci 90 ? 00:00:00 irq/51-mmc0 96 ? 00:00:00 mmc_complete 97 ? 00:00:00 kworker/2:1H-kblockd 98 ? 00:00:00 kworker/1:1H-kblockd 99 ? 00:00:00 jbd2/mmcblk0p2- 100 ? 00:00:00 ext4-rsv-conver 103 ? 00:00:00 ipv6_addrconf 112 ? 00:00:00 kworker/3:2H-kblockd 145 ? 00:00:01 systemd-journal 166 ? 00:00:00 systemd-udevd 203 ? 00:00:00 vchiq-keep/0 204 ? 00:00:00 SMIO 212 ? 00:00:00 mmal-vchiq 213 ? 00:00:00 mmal-vchiq 215 ? 00:00:00 mmal-vchiq 216 ? 00:00:00 mmal-vchiq 218 ? 00:00:00 mmal-vchiq 221 ? 00:00:00 mmal-vchiq 258 ? 00:00:00 cfg80211 266 ? 00:00:25 v3d_bin 267 ? 00:00:30 v3d_render 268 ? 00:00:00 v3d_tfu 269 ? 00:00:00 v3d_csd 270 ? 00:00:00 v3d_cache_clean 273 ? 00:00:00 brcmf_wq/mmc1:0 276 ? 00:00:00 brcmf_wdog/mmc1 385 ? 00:00:00 irq/42-vc4 hdmi 386 ? 00:00:00 irq/43-vc4 hdmi 387 ? 00:00:00 avahi-daemon 388 ? 00:00:00 cec-vc4 389 ? 00:00:00 irq/39-vc4 hdmi 390 ? 00:00:00 irq/38-vc4 hdmi 391 ? 00:00:00 cron 392 ? 00:00:00 dbus-daemon 393 ? 00:00:00 irq/48-vc4 hdmi 394 ? 00:00:00 irq/49-vc4 hdmi 395 ? 00:00:00 cec-vc4 396 ? 00:00:00 irq/45-vc4 hdmi 397 ? 00:00:00 irq/44-vc4 hdmi 399 ? 00:00:00 card0-crtc0 400 ? 00:00:00 card0-crtc1 401 ? 00:00:00 card0-crtc2 402 ? 00:00:00 card0-crtc3 403 ? 00:00:00 card0-crtc4 404 ? 00:00:00 card0-crtc5 414 ? 00:00:00 avahi-daemon 428 ? 00:00:00 rsyslogd 451 ? 00:00:00 systemd-logind 455 ? 00:00:10 thd 461 ? 00:00:00 udisksd 463 ? 00:00:00 wpa_supplicant 531 ? 00:00:00 rngd 542 ? 00:00:00 cupsd 544 ? 00:00:00 dhcpcd 550 ? 00:00:00 lightdm 578 tty7 00:07:12 Xorg 582 tty1 00:00:00 login 583 ? 00:00:00 polkitd 586 ? 00:00:00 wpa_supplicant 601 ? 00:00:00 cups-browsed 615 ? 00:00:00 lightdm 620 ? 00:00:00 systemd 621 ? 00:00:00 (sd-pam) 640 ? 00:00:00 pipewire 641 ? 00:00:05 pulseaudio 642 ? 00:00:00 lxsession 653 ? 00:00:00 rtkit-daemon 654 ? 00:00:00 dbus-daemon 662 ? 00:00:00 pipewire-media- 697 ? 00:00:00 ssh-agent 726 tty1 00:00:00 bash 738 ? 00:00:00 gvfsd 745 ? 00:00:00 gvfsd-fuse 756 ? 00:03:26 mutter 759 ? 00:00:00 lxpolkit 763 ? 00:02:57 lxpanel 764 ? 00:00:01 pcmanfm 772 ? 00:00:00 kworker/u9:1-hci0 773 ? 00:00:00 hciattach 774 ? 00:00:00 kworker/u9:2-hci0 781 ? 00:00:00 applet.py 790 ? 00:00:00 ssh-agent 831 ? 00:00:00 bluetoothd 849 ? 00:00:00 krfcommd 878 ? 00:00:00 menu-cached 885 ? 00:00:00 gvfs-udisks2-vo 890 ? 00:00:00 gvfs-afc-volume 895 ? 00:00:00 gvfs-mtp-volume 899 ? 00:00:00 gvfs-goa-volume 903 ? 00:00:00 gvfs-gphoto2-vo 927 ? 00:00:00 gvfsd-trash 1070 ? 00:00:00 systemd-timesyn 1072 ? 00:00:02 lxterminal 1078 pts/0 00:00:00 bash 1085 ? 00:02:37 geany 1093 pts/1 00:00:01 bash 1104 ? 00:00:05 packagekitd 1469 ? 00:04:03 mousepad 1477 ? 00:00:00 xfconfd 1484 ? 00:00:00 dconf-service 1492 ? 00:00:00 gvfsd-network 1505 ? 00:00:00 gvfsd-dnssd 1823 ? 00:01:40 firefox-esr 1901 ? 00:00:15 Web Content 1933 ? 00:00:00 Privileged Cont 1963 ? 00:00:06 WebExtensions 1999 ? 00:00:00 RDD Process 2058 ? 00:00:02 Web Content 2265 ? 00:00:00 kworker/0:0-events 2270 pts/1 00:00:00 thttpd_wrapper 2271 ? 00:00:27 thttpd 2288 ? 00:00:01 kworker/u8:3-events_unbound 2300 ? 00:00:00 kworker/1:1-events 2438 ? 00:00:00 kworker/3:2-events_power_efficient 2443 ? 00:00:00 kworker/2:1-mm_percpu_wq 2447 ? 00:00:00 kworker/3:0H 2465 ? 00:00:00 gvfsd-metadata 2492 ? 00:00:01 Web Content 2539 ? 00:00:00 kworker/1:2H 2540 ? 00:00:00 Web Content 2563 ? 00:00:00 kworker/2:0H 2577 ? 00:00:00 kworker/u8:0-events_unbound 2578 ? 00:00:00 kworker/2:2-mm_percpu_wq 2592 ? 00:00:00 kworker/0:2H 2593 ? 00:00:00 kworker/3:0-events 2595 ? 00:00:00 kworker/1:3-events 2596 ? 00:00:00 kworker/2:3-events 2603 ? 00:00:00 kworker/0:1-events 2608 ? 00:00:00 kworker/2:2H 2609 ? 00:00:00 kworker/3:1-events 2610 ? 00:00:00 kworker/u8:1-events_unbound 2611 ? 00:00:00 kworker/u8:2-events_unbound 2612 ? 00:00:00 kworker/1:0-events 2613 ? 00:00:00 kworker/0:3-events 2614 pts/1 00:00:00 ps pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ # This time we started thttpd with the wrapper and the PID's are: 2270 pts/1 00:00:00 thttpd_wrapper # 2271 ? 00:00:27 thttpd # pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ sudo kill 2270 2271 ### sudo entering the command twice shows that it actually killed the processes. pi@raspberrypi:/etc $ sudo kill 2270 2271 ### sudo entering the command twice shows that it actually killed the processes. kill: (2270): No such process kill: (2271): No such process pi@raspberrypi:/etc $ pi@raspberrypi:/home/local/www/logs $ pi@raspberrypi:/home/local/www/logs $ pi@raspberrypi:/home/local/www/logs $ pi@raspberrypi:/home/local/www/logs $ ### 3075 pts/1 00:00:00 thttpd_wrapper pi@raspberrypi:/home/local/www/logs $ ### 3387 ? 00:01:21 thttpd pi@raspberrypi:/home/local/www/logs $ pi@raspberrypi:/home/local/www/logs $ ### Notice the wrapper is still running at 3075 while thttpd is at 3387 and it should show up in the log files when the PID's were changed. pi@raspberrypi:/home/local/www/logs $ pi@raspberrypi:/home/local/www/logs $ pi@raspberrypi:/home/local/www/logs $ sudo kill 3075 3387 ### pi@raspberrypi:/home/local/www/logs $ sudo kill 3075 3387 ### kill: (3075): No such process kill: (3387): No such process pi@raspberrypi:/home/local/www/logs $ ### Thttpd is now off until I restart the computer when it will start autoomatically as the computer loads. pi@raspberrypi:/home/local/www/logs $ pi@raspberrypi:/home/local/www/logs $ pi@raspberrypi:/home/local/www/logs $ # Stop the computer, then start the computer to see where "thttpd_wrapper" ends up as the computer loads from scratch! Using ps -e. pi@raspberrypi:/home/local/sbin/thttpd-extras $ # ***************************** pi@raspberrypi:/home/local/sbin/thttpd-extras $ pi@raspberrypi:/home/local/sbin/thttpd-extras $ pi@raspberrypi:/home/local/sbin/thttpd-extras $ cd /etc ### pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ # less services ### This will show a listing of service ports. pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ # (This file has a list of "Ports" that are in use. The default "HTTP port is 80.") thttpd's default port is 80, port numbers are 16-bit so can range from 1 - 65536. Only one service can use a port number at a time, thus we see that my Raspberry Pi web server will give the same information on all of the IPv4 addresses that are attached to it, i.e., eth0, and wlan0 with its different IP addresses are both connected to the same http port 80. In a classroom situation, more than 200 students can be connected to the same "C" class network (192.168.xxx.0/24) and can each connect to each other's web servers, where xxx is the same for all, and the 0 position can very from 2 - 254, with 0 representing the network, 255 is reserved for the broadcast address, and 1 reserved for the router address. With the router set up as a “DHCP Server” all of the computers would receive dynamic IP addresses and all of their http websites would be available in the addresses they were assigned. The http port number (80) is assigned by thttpd and the IP addresses are assigned from the router. pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ ### The router separates the “Local Area Network” (LAN) from the “Wide Area Network” (WAN). Just as the HTTP default address is port 80 and is static, the router has to have the internal IP address for our website “static” so it can pass information back and forth from our internal web server to the external Internet. In the file “2019-10-01-website.txt” I discuss the process of setting the internal web server to a static internal IP address. pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ # In the router, under the “Advanced” tab, select “Virtual Server”, and it should display a message similar to: “This page allows you to configure a virtual server, so others can access the server through the Gateway.” This will probably very with different routers so one might have to search a bit to find the similar place. The “usual Service Name” should have a selection of something like “web” or “http” and choose this. It should then show the “Protocol” as “TCP”, “WAN Port” as “80”, and “LAN Open Port” as “80”. In the “LAN IP Address” type in the static internal IP address of your web server, and press, “Apply Changes”. This should fill in a table in “Current Virtual Server Forwarding Table” with “ServerName - WEB”, “Protocol - tcp”, “Local IP Address - 192.168.x.2” i.e., your internal IP address, “Local Port - 80-80”, “WAN Port - 80-80”, “State - Enable”, and possibly “Action either Delete or Disable”. pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ # With this enabled, your website should be available to the WAN. Since your ISP is providing your external IP address, it doesn’t matter if it is dynamic or static. Until you get an idea of the activity that is taking place on the web, it would probably be good just to have a dynamic address if that is what you have. If you are in an area of extreme censorship, it will make the censorship game more of a “Cat and Mouse” game since your site could be bouncing around all sorts of different IP addresses. “Free Speech for the WORLD!” pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ # Another reason we use "/home" user directories in the "www" group is to be able to keep all of our original web files there and then just send a copy to the "public_html" directory where it is instantly live. This also reduces the size of our web site by eliminating the bloat of having original files mixed in with our files needed for the web site. It will also reduce the time it will take for the Web Search "spiders" to see what content is available on our sites. When we use "HTML" code for our web pages, the root of the page will be in "index.html" and then the items listed in this file can be in the same directory or in sub directories. If you have a lot of "images" on your web page, you would probably want to put all of them in a sub-directory called, "images" just to keep similar things together and easier to find. To test your "index.html" file, you just open it with a web browser and see if everything is functioning. Then when everything is OK, just move your changed file and additions to "public_html", and then open your web browser to "http://xxx.xxx.xxx.xxx/" and see if everything is working. Most web browsers keep a copy of your pages in cache so if the changes don't appear you will have to refresh your web page (usually the little circle with an arrow on it). If the changes still don't appear, possibly you forgot to move the changes to "public_html". Just a reminder, all of the directories in "public_html" need to be "0755" to work and files need to be "0644" to work. If you get to the point of using "cgi" programs they will also need to be "0755" so they can execute, and also need to have the right ending on those files, the documentation for "thttpd" talks about all of this. Sometimes I even need to use "0754" if it is a program type file that should be readable. pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ # ***************************** pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ # Https://news.netcraft.com - August 2021 Web Server Survey - 25th August, 2021 pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ # In the August 2021 survey we received responses from 1,211,444,849 sites across 263,733,974 unique domains and 11,327,711 web-facing computers. This reflects a loss of 4.99 million sites, but a gain of 1.64 million domains and 67,600 computers. pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ # Https://news.netcraft.com - February 2022 Web Server Survey - 28th February, 2022 pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ # In the February 2022 survey we received responses from 1,173,621,471 sites across 271,199,972 unique domains and 11,774,714 web-facing computers. This reflects a gain of 5.91 million sites, 1.36 million domains and 73,800 computers. pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ # ***************************** pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ pi@raspberrypi:/etc $ cd ### pi@raspberrypi:~ $ pi@raspberrypi:~ $ pi@raspberrypi:~ $ ### Setting the router for World Wide Web service pi@raspberrypi:~ $ pi@raspberrypi:~ $ ### It took me a long time to finally figure out how to set up the router so most people could do it without too much trouble. My routers are old so will be different than newer ones, but I will go through three routers that I have and that might help. pi@raspberrypi:~ $ pi@raspberrypi:~ $ ### 1: D-Link GO-RT-N300, 12VDC @ 0.5 Amps. Out of the box, it's address is: 192.168.0.1 but I set mine to: 192.168.19.1, just so it would have less trouble with neighboring routers. In the setup page, under "Local Network" and on "DHCP Server Settings" I selected my IP Pool Range from 192.168.19.10 to 192.168.19.254, that blocked the section of addresses of 192.168.19.2 through 192.168.19.9 so I could use them for static IP Addresses, and used 192.168.19.2 for my web server. pi@raspberrypi:~ $ # The next header "DHCP Static IP Configuration" has: pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # IP Address: 0.0.0.0 pi@raspberrypi:~ $ # Mac Address: 000000000000 (ex. 00E086710502) pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # followed with selections: Add, Update, Delete Selection, and Reset. pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # The next header "DHCP Static IP Table" pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # Select IP Address MAC Address pi@raspberrypi:~ $ # () 192.168.19.2 DC:A6:32:19:95:B9 pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # As I remember it would say that "192.168.19.2" was not in the pool, but I think I managed to get it to accept it by clicking the Select and then the update choice. pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # Click on the top header "Advanced" and then at the bottom of the list "Virtual Server". On this page, the box will list "Virtual Service Name" and the choice that is right is "WEB" which will bring up "WEB" Protocol "TCP" WAN Port "80" LAN Port "80" LAN IP Address "xxx.xxx.xxx.xxx" (actually no xxx's) but is where you enter the IP Address of your web server. Then click "apply changes" (Since) The header below is: pi@raspberrypi:~ $ # "Current Virtual Server Forwarding Table" pi@raspberrypi:~ $ # ServerName Protocol Local IP Address Local Port WAN Port State Action pi@raspberrypi:~ $ # WEB tcp 192.168.19.2 80-80 80-80 Enable Delete Disable pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # pi@raspberrypi:~ $ ### 2: Zonet1), ZSR4154WE(01), 802.11n Wireless Broadband Router, Power: 9V-1A, IP Address: 192.168.0.1 pi@raspberrypi:~ $ # On "192.168.0.1/main.html", Select "Virtual Server", then "Port Range Forwarding", and under "Well Known Service Ports", select "HTTP(80) and then "ADD" (1-10) for possible selections. This populates the selected line with: "Start Port - End Port" with "80 - 80", "To IP Address" "192.168.0.""100", "Protocol", "TCP", "Enable", "checked". Then click "Apply", and "Logout". pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # pi@raspberrypi:~ $ ### 3: Western Digital My Net N750, 12 VDC @ 2 Amps, Tabs: Additional Features / Port Forwarding pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # Port Forwarding pi@raspberrypi:~ $ # This option is used to open multiple ports or a range of ports in your router and redirect data through those ports to a single computer on your network. This feature allows you to enter external start port, external end port, and internal start port in the fields. The internal end port will be generated automatically. This option is only applicable to the Internet session. pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # Enabled Name: HTTP Application Name: HTTP External Port Range From: 80 To: 80 Protocol TCP pi@raspberrypi:~ $ @ IP Address: 192.168.1.138 Computer Name: frank-desktop (102.168.1.138) Internal Port Range From: 80 To: 80 bash: syntax error near unexpected token `(' pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # Then "SAVE". pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # This pretty much automates the process. One would need to set a static IP address on the web server machine so it would always be at the same address. pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # ***************************** pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # pi@raspberrypi:~ $ ### Links: pi@raspberrypi:~ $ # These links are the easiest and best I have found for sharing the “Good News” I found around my seventh birthday, the Fall of 1955. Frank Anderson, ac0xl. pi@raspberrypi:~ $ # http://4laws.com/laws/languages.html, 4 Spiritual Laws. pi@raspberrypi:~ $ # https://www.cru.org/us/en/train-and-grow/spiritual-growth/the-spirit-filled-life.html, The Spirit Filled Life. pi@raspberrypi:~ $ # https://www.cru.org, Exploring Your Life’s Purpose - Let’s journey together. pi@raspberrypi:~ $ # https://godtoolsapp.com, GodTools - Helping You Share Your Faith. pi@raspberrypi:~ $ # pi@raspberrypi:~ $ # *************************************** pi@raspberrypi:~ $ pi@raspberrypi:~ $ ### Ths is a back-up copy of my web server that I am pulling to a new copy of the OS to rebuild a new web server, I had lost sound on the original and was re-writing that SD card. pi@AC0XL-Pi-400:~/32G-SD $ pi@AC0XL-Pi-400:~/32G-SD $ cd /media/pi/writable/AC0XL-www-Pi-4B/ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B $ ls -al total 12 drwxr-xr-x 3 root root 4096 Apr 8 12:51 . drwxr-xr-x 30 root root 4096 Apr 8 12:22 .. drwxr-xr-x 3 root root 4096 Apr 8 12:51 2022-04-08 pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B $ cd 2022-04-08/ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08 $ ls -al total 12 drwxr-xr-x 3 root root 4096 Apr 8 12:51 . drwxr-xr-x 3 root root 4096 Apr 8 12:51 .. drwxr-xr-x 17 root root 4096 Feb 5 19:19 home pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08 $ cd home/ ### This is the copy of the /home/ directory that was on the Pi 4B web server. pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08/home $ ls -al total 84 drwxr-xr-x 17 root root 4096 Feb 5 19:19 . drwxr-xr-x 3 root root 4096 Apr 8 12:51 .. drwxr-xr-x 16 ac0xl www 4096 Feb 10 16:54 ac0xl drwxr-xr-x 4 delinquent-accounts www 4096 Feb 6 11:39 delinquent-accounts drwxr-xr-x 3 documents www 4096 Feb 6 11:41 documents drwxr-xr-x 13 downloads www 4096 Feb 6 11:45 downloads drwxr-xr-x 10 freedom www 4096 Feb 6 11:55 freedom drwxr-xr-x 5 root root 4096 Feb 5 17:11 local drwxr-xr-x 3 memes www 4096 Feb 6 11:59 memes drwxr-xr-x 4 music www 4096 Feb 6 12:01 music drwxr-xr-x 4 notices www 4096 Feb 6 12:04 notices drwxr-xr-x 21 pi pi 4096 Apr 8 00:40 pi drwxr-xr-x 4 pictures www 4096 Feb 6 12:07 pictures drwxr-xr-x 50 rome www 20480 Feb 6 12:16 rome drwxr-xr-x 4 searles-sav-on-propane www 4096 Feb 6 12:18 searles-sav-on-propane drwxr-xr-x 4 va www 4096 Feb 6 12:20 va drwxr-xr-x 9 videos www 4096 Feb 11 17:02 videos pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08/home $ cd music/ ### changing to the back-up music directory. pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08/home/music $ ls -al total 42448 drwxr-xr-x 4 music www 4096 Feb 6 12:01 . drwxr-xr-x 17 root root 4096 Feb 5 19:19 .. drwxr-xr-x 2 music www 4096 Feb 5 18:55 .1007 -rw-r--r-- 1 music www 43202902 Dec 31 2019 20Hz-square.wav -rw------- 1 music www 92 Feb 6 21:55 .bash_history -rw-r--r-- 1 music www 220 Feb 5 18:53 .bash_logout -rw-r--r-- 1 music www 3523 Feb 5 18:53 .bashrc -rw-r--r-- 1 music www 1670 Feb 5 18:53 .mkshrc -rwxr--r-- 1 music www 221475 Feb 18 2020 NotePamphlet.pdf -rw-r--r-- 1 music www 807 Feb 5 18:53 .profile lrwxrwxrwx 1 music www 27 Feb 5 18:55 public_html -> /home/local/www/users/music drwxr-xr-x 2 music www 4096 Feb 18 2020 Songs pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08/home/music $ su music ### su to the new music user on the new SD card. Password: music@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08/home/music $ cp -iav * ~/ ### Pulling from the web back-up copy and writing to the new SD card. Notice I did not cd into the music directory but stayed in the back-up directory and copied into the root of the music user. '20Hz-square.wav' -> '/home/music/20Hz-square.wav' 'NotePamphlet.pdf' -> '/home/music/NotePamphlet.pdf' cp: overwrite '/home/music/public_html'? n 'Songs' -> '/home/music/Songs' 'Songs/saviour_is_waiting-chords.pdf' -> '/home/music/Songs/saviour_is_waiting-chords.pdf' 'Songs/Songs001.pdf' -> '/home/music/Songs/Songs001.pdf' 'Songs/Songs002.pdf' -> '/home/music/Songs/Songs002.pdf' music@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08/home/music $ exit ### Exiting from user music. exit pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08/home/music $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ # Now I will copy some of my old web pages to see how fast thttpd can go. ### pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 115G 94G 17G 86% / devtmpfs 1.7G 0 1.7G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 759M 996K 758M 1% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock /dev/mmcblk0p1 253M 31M 222M 12% /boot tmpfs 380M 32K 380M 1% /run/user/1000 /dev/sda1 253M 112M 141M 45% /media/pi/system-boot /dev/sda2 917G 560G 321G 64% /media/pi/writable ### These are the steps I used to build my back-up of my Pi-400 since that was the only other 128GB microSD card I had and just copied the /home/ directory from my Pi-4B web server to a 1TB hard drive. I also needed some extra space so I copied the 32G0SD directory to a directory called pulled and copied my e-mail files ".thunderbird" there too. To rebuild Thunderbird, one just needs to install Thunderbird and skip the setup page, Then copy the old dot file (cp -av .thunderbird to ~/ ) which will put your old thuderbird files back in your home directory. ( cp -iav .thunderbird to your back-up media. Install Thunderbird, and open it, but do not run the setup, but delete it. Then repplace the .thunderbird file in your home directory with your back-up copy with cp -av .thunderbird ~/ (leave the "i" off so you do not have to answer all of the over-write questions)). # Now I will copy some of my old web pages to see how fast thttpd can go. ### I just listed the commands that I used before this line. # df -h # cd /media/pi/writable/ # ls -al # sudo mkdir AC0XL-Pi-400 # cd *400 # mkdir 2022-04-08 # sudo mkdir 2022-04-08 # cd 2022-04-08/ # sudo cp -iav /home/ . # du -hd2 # df -h # # pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ du -hd2 ### A listing of my back-up for my new copy for the Pi 400. and the Pi 4B web server. 8.1G ./pulled/.thunderbird 35G ./pulled/32G-SD 43G ./pulled 24K ./home/music 24K ./home/documents 24K ./home/pictures 24K ./home/delinquent-accounts 49G ./home/pi 1.4M ./home/local 24K ./home/va 24K ./home/searles-sav-on-propane 24K ./home/notices 24K ./home/memes 24K ./home/downloads 24K ./home/rome 24K ./home/ac0xl 24K ./home/freedom 24K ./home/videos 49G ./home 91G . pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 115G 94G 17G 86% / devtmpfs 1.7G 0 1.7G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 759M 996K 758M 1% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock /dev/mmcblk0p1 253M 31M 222M 12% /boot tmpfs 380M 32K 380M 1% /run/user/1000 /dev/sda1 253M 112M 141M 45% /media/pi/system-boot /dev/sda2 917G 560G 321G 64% /media/pi/writable pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ sudo cp -iav /home . ### Making a backup for the web server. ### /home/pi (printout text skipped) '/home/local' -> './home/local' '/home/local/man' -> './home/local/man' '/home/local/man/man1' -> './home/local/man/man1' '/home/local/man/man1/makeweb.1' -> './home/local/man/man1/makeweb.1' '/home/local/man/man1/htpasswd.1' -> './home/local/man/man1/htpasswd.1' '/home/local/man/man8' -> './home/local/man/man8' '/home/local/man/man8/thttpd.8' -> './home/local/man/man8/thttpd.8' '/home/local/man/man8/redirect.8' -> './home/local/man/man8/redirect.8' '/home/local/man/man8/ssi.8' -> './home/local/man/man8/ssi.8' '/home/local/man/man8/syslogtocern.8' -> './home/local/man/man8/syslogtocern.8' '/home/local/sbin' -> './home/local/sbin' '/home/local/sbin/pathtest' -> './home/local/sbin/pathtest' '/home/local/sbin/thttpd' -> './home/local/sbin/thttpd' '/home/local/sbin/makeweb' -> './home/local/sbin/makeweb' '/home/local/sbin/htpasswd' -> './home/local/sbin/htpasswd' '/home/local/sbin/syslogtocern' -> './home/local/sbin/syslogtocern' '/home/local/sbin/thttpd_wrapper' -> './home/local/sbin/thttpd_wrapper' '/home/local/sbin/datelog' -> './home/local/sbin/datelog' '/home/local/sbin/datelog~' -> './home/local/sbin/datelog~' '/home/local/sbin/dead-thttpd' -> './home/local/sbin/dead-thttpd' '/home/local/sbin/dead-thttpd~' -> './home/local/sbin/dead-thttpd~' '/home/local/sbin/thttpd-extras' -> './home/local/sbin/thttpd-extras' '/home/local/sbin/thttpd-extras/thttpd.sh' -> './home/local/sbin/thttpd-extras/thttpd.sh' '/home/local/sbin/thttpd-extras/thttpd_config' -> './home/local/sbin/thttpd-extras/thttpd_config' '/home/local/sbin/thttpd-extras/anvil_thttpd.gif' -> './home/local/sbin/thttpd-extras/anvil_thttpd.gif' '/home/local/sbin/thttpd-extras/readme.txt' -> './home/local/sbin/thttpd-extras/readme.txt' '/home/local/sbin/thttpd-extras/thttpd-rotate~' -> './home/local/sbin/thttpd-extras/thttpd-rotate~' '/home/local/sbin/thttpd-extras/thttpd.sh~' -> './home/local/sbin/thttpd-extras/thttpd.sh~' '/home/local/sbin/thttpd-extras/thttpd_config~' -> './home/local/sbin/thttpd-extras/thttpd_config~' '/home/local/sbin/thttpd-extras/sitemap.xml' -> './home/local/sbin/thttpd-extras/sitemap.xml' '/home/local/sbin/thttpd-extras/thttpd-rotate' -> './home/local/sbin/thttpd-extras/thttpd-rotate' '/home/local/sbin/thttpd-extras/sitemap.xml.txt' -> './home/local/sbin/thttpd-extras/sitemap.xml.txt' '/home/local/sbin/thttpd-extras/favicon.ico' -> './home/local/sbin/thttpd-extras/favicon.ico' '/home/local/sbin/thttpd-extras/rc.local~' -> './home/local/sbin/thttpd-extras/rc.local~' '/home/local/sbin/thttpd-extras/thttpd_wrapper' -> './home/local/sbin/thttpd-extras/thttpd_wrapper' '/home/local/sbin/thttpd-extras/robots-site.txt' -> './home/local/sbin/thttpd-extras/robots-site.txt' '/home/local/sbin/thttpd-extras/robots.txt' -> './home/local/sbin/thttpd-extras/robots.txt' '/home/local/sbin/thttpd-extras/rc.local' -> './home/local/sbin/thttpd-extras/rc.local' '/home/local/sbin/thttpd-extras/thttpd_wrapper~' -> './home/local/sbin/thttpd-extras/thttpd_wrapper~' '/home/local/sbin/os-debug' -> './home/local/sbin/os-debug' '/home/local/sbin/os-debug/2022-03-25-Install-thttpd-Raspberry-Pi-Model-B-Plus-Rev-1.2-with-512-MB-RAM.txt' -> './home/local/sbin/os-debug/2022-03-25-Install-thttpd-Raspberry-Pi-Model-B-Plus-Rev-1.2-with-512-MB-RAM.txt' '/home/local/sbin/os-debug/readme.txt' -> './home/local/sbin/os-debug/readme.txt' '/home/local/sbin/os-debug/dead-thttpd' -> './home/local/sbin/os-debug/dead-thttpd' '/home/local/sbin/os-debug/thttpd-rotate~' -> './home/local/sbin/os-debug/thttpd-rotate~' '/home/local/sbin/os-debug/thttpd-rotate' -> './home/local/sbin/os-debug/thttpd-rotate' '/home/local/sbin/os-debug/datelog~' -> './home/local/sbin/os-debug/datelog~' '/home/local/sbin/os-debug/dead-thttpd~' -> './home/local/sbin/os-debug/dead-thttpd~' '/home/local/sbin/os-debug/thttpd_wrapper' -> './home/local/sbin/os-debug/thttpd_wrapper' '/home/local/sbin/os-debug/readme.txt~' -> './home/local/sbin/os-debug/readme.txt~' '/home/local/sbin/os-debug/datelog' -> './home/local/sbin/os-debug/datelog' '/home/local/sbin/os-debug/thttpd_wrapper~' -> './home/local/sbin/os-debug/thttpd_wrapper~' '/home/local/bin' -> './home/local/bin' '/home/local/www' -> './home/local/www' '/home/local/www/cgi-bin' -> './home/local/www/cgi-bin' '/home/local/www/cgi-bin/redirect' -> './home/local/www/cgi-bin/redirect' '/home/local/www/cgi-bin/ssi' -> './home/local/www/cgi-bin/ssi' '/home/local/www/cgi-bin/phf' -> './home/local/www/cgi-bin/phf' '/home/local/www/logs' -> './home/local/www/logs' '/home/local/www/logs/thttpd_log.02' -> './home/local/www/logs/thttpd_log.02' '/home/local/www/logs/thttpd_log.01' -> './home/local/www/logs/thttpd_log.01' '/home/local/www/logs/thttpd_log' -> './home/local/www/logs/thttpd_log' '/home/local/www/users' -> './home/local/www/users' '/home/local/www/users/ac0xl' -> './home/local/www/users/ac0xl' '/home/local/www/users/favicon.ico' -> './home/local/www/users/favicon.ico' '/home/local/www/users/readme.txt' -> './home/local/www/users/readme.txt' '/home/local/www/users/robots.txt' -> './home/local/www/users/robots.txt' '/home/local/www/users/delinquent-accounts' -> './home/local/www/users/delinquent-accounts' '/home/local/www/users/documents' -> './home/local/www/users/documents' '/home/local/www/users/downloads' -> './home/local/www/users/downloads' '/home/local/www/users/freedom' -> './home/local/www/users/freedom' '/home/local/www/users/memes' -> './home/local/www/users/memes' '/home/local/www/users/music' -> './home/local/www/users/music' '/home/local/www/users/notices' -> './home/local/www/users/notices' '/home/local/www/users/pictures' -> './home/local/www/users/pictures' '/home/local/www/users/rome' -> './home/local/www/users/rome' '/home/local/www/users/searles-sav-on-propane' -> './home/local/www/users/searles-sav-on-propane' '/home/local/www/users/va' -> './home/local/www/users/va' '/home/local/www/users/videos' -> './home/local/www/users/videos' '/home/local/www/thttpd_config' -> './home/local/www/thttpd_config' '/home/local/www/thttpd_config~' -> './home/local/www/thttpd_config~' '/home/ac0xl' -> './home/ac0xl' '/home/ac0xl/.bashrc' -> './home/ac0xl/.bashrc' '/home/ac0xl/.mkshrc' -> './home/ac0xl/.mkshrc' '/home/ac0xl/.bash_logout' -> './home/ac0xl/.bash_logout' '/home/ac0xl/.profile' -> './home/ac0xl/.profile' '/home/ac0xl/.1001' -> './home/ac0xl/.1001' '/home/ac0xl/public_html' -> './home/ac0xl/public_html' '/home/ac0xl/.bash_history' -> './home/ac0xl/.bash_history' '/home/delinquent-accounts' -> './home/delinquent-accounts' '/home/delinquent-accounts/.bashrc' -> './home/delinquent-accounts/.bashrc' '/home/delinquent-accounts/.mkshrc' -> './home/delinquent-accounts/.mkshrc' '/home/delinquent-accounts/.bash_logout' -> './home/delinquent-accounts/.bash_logout' '/home/delinquent-accounts/.profile' -> './home/delinquent-accounts/.profile' '/home/delinquent-accounts/.1002' -> './home/delinquent-accounts/.1002' '/home/delinquent-accounts/public_html' -> './home/delinquent-accounts/public_html' '/home/delinquent-accounts/.bash_history' -> './home/delinquent-accounts/.bash_history' '/home/documents' -> './home/documents' '/home/documents/.bashrc' -> './home/documents/.bashrc' '/home/documents/.mkshrc' -> './home/documents/.mkshrc' '/home/documents/.bash_logout' -> './home/documents/.bash_logout' '/home/documents/.profile' -> './home/documents/.profile' '/home/documents/.1003' -> './home/documents/.1003' '/home/documents/public_html' -> './home/documents/public_html' '/home/documents/.bash_history' -> './home/documents/.bash_history' '/home/downloads' -> './home/downloads' '/home/downloads/.bashrc' -> './home/downloads/.bashrc' '/home/downloads/.mkshrc' -> './home/downloads/.mkshrc' '/home/downloads/.bash_logout' -> './home/downloads/.bash_logout' '/home/downloads/.profile' -> './home/downloads/.profile' '/home/downloads/.1004' -> './home/downloads/.1004' '/home/downloads/public_html' -> './home/downloads/public_html' '/home/downloads/.bash_history' -> './home/downloads/.bash_history' '/home/freedom' -> './home/freedom' '/home/freedom/.bashrc' -> './home/freedom/.bashrc' '/home/freedom/.mkshrc' -> './home/freedom/.mkshrc' '/home/freedom/.bash_logout' -> './home/freedom/.bash_logout' '/home/freedom/.profile' -> './home/freedom/.profile' '/home/freedom/.1005' -> './home/freedom/.1005' '/home/freedom/public_html' -> './home/freedom/public_html' '/home/freedom/.bash_history' -> './home/freedom/.bash_history' '/home/memes' -> './home/memes' '/home/memes/.bashrc' -> './home/memes/.bashrc' '/home/memes/.mkshrc' -> './home/memes/.mkshrc' '/home/memes/.bash_logout' -> './home/memes/.bash_logout' '/home/memes/.profile' -> './home/memes/.profile' '/home/memes/.1006' -> './home/memes/.1006' '/home/memes/public_html' -> './home/memes/public_html' '/home/memes/.bash_history' -> './home/memes/.bash_history' '/home/music' -> './home/music' '/home/music/.bashrc' -> './home/music/.bashrc' '/home/music/.mkshrc' -> './home/music/.mkshrc' '/home/music/.bash_logout' -> './home/music/.bash_logout' '/home/music/.profile' -> './home/music/.profile' '/home/music/.1007' -> './home/music/.1007' '/home/music/public_html' -> './home/music/public_html' '/home/music/.bash_history' -> './home/music/.bash_history' '/home/notices' -> './home/notices' '/home/notices/.bashrc' -> './home/notices/.bashrc' '/home/notices/.mkshrc' -> './home/notices/.mkshrc' '/home/notices/.bash_logout' -> './home/notices/.bash_logout' '/home/notices/.profile' -> './home/notices/.profile' '/home/notices/.1008' -> './home/notices/.1008' '/home/notices/public_html' -> './home/notices/public_html' '/home/notices/.bash_history' -> './home/notices/.bash_history' '/home/pictures' -> './home/pictures' '/home/pictures/.bashrc' -> './home/pictures/.bashrc' '/home/pictures/.mkshrc' -> './home/pictures/.mkshrc' '/home/pictures/.bash_logout' -> './home/pictures/.bash_logout' '/home/pictures/.profile' -> './home/pictures/.profile' '/home/pictures/.1009' -> './home/pictures/.1009' '/home/pictures/public_html' -> './home/pictures/public_html' '/home/pictures/.bash_history' -> './home/pictures/.bash_history' '/home/rome' -> './home/rome' '/home/rome/.bashrc' -> './home/rome/.bashrc' '/home/rome/.mkshrc' -> './home/rome/.mkshrc' '/home/rome/.bash_logout' -> './home/rome/.bash_logout' '/home/rome/.profile' -> './home/rome/.profile' '/home/rome/.1010' -> './home/rome/.1010' '/home/rome/public_html' -> './home/rome/public_html' '/home/rome/.bash_history' -> './home/rome/.bash_history' '/home/searles-sav-on-propane' -> './home/searles-sav-on-propane' '/home/searles-sav-on-propane/.bashrc' -> './home/searles-sav-on-propane/.bashrc' '/home/searles-sav-on-propane/.mkshrc' -> './home/searles-sav-on-propane/.mkshrc' '/home/searles-sav-on-propane/.bash_logout' -> './home/searles-sav-on-propane/.bash_logout' '/home/searles-sav-on-propane/.profile' -> './home/searles-sav-on-propane/.profile' '/home/searles-sav-on-propane/.1011' -> './home/searles-sav-on-propane/.1011' '/home/searles-sav-on-propane/public_html' -> './home/searles-sav-on-propane/public_html' '/home/searles-sav-on-propane/.bash_history' -> './home/searles-sav-on-propane/.bash_history' '/home/va' -> './home/va' '/home/va/.bashrc' -> './home/va/.bashrc' '/home/va/.mkshrc' -> './home/va/.mkshrc' '/home/va/.bash_logout' -> './home/va/.bash_logout' '/home/va/.profile' -> './home/va/.profile' '/home/va/.1012' -> './home/va/.1012' '/home/va/public_html' -> './home/va/public_html' '/home/va/.bash_history' -> './home/va/.bash_history' '/home/videos' -> './home/videos' '/home/videos/.bashrc' -> './home/videos/.bashrc' '/home/videos/.mkshrc' -> './home/videos/.mkshrc' '/home/videos/.bash_logout' -> './home/videos/.bash_logout' '/home/videos/.profile' -> './home/videos/.profile' '/home/videos/.1013' -> './home/videos/.1013' '/home/videos/public_html' -> './home/videos/public_html' '/home/videos/.bash_history' -> './home/videos/.bash_history' pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ du -hd2 24K ./home/music 24K ./home/documents 24K ./home/pictures 24K ./home/delinquent-accounts 49G ./home/pi 1.4M ./home/local 24K ./home/va 24K ./home/searles-sav-on-propane 24K ./home/notices 24K ./home/memes 24K ./home/downloads 24K ./home/rome 24K ./home/ac0xl 24K ./home/freedom 24K ./home/videos 49G ./home 49G . pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 115G 94G 17G 86% / devtmpfs 1.7G 0 1.7G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 759M 996K 758M 1% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock /dev/mmcblk0p1 253M 31M 222M 12% /boot tmpfs 380M 32K 380M 1% /run/user/1000 /dev/sda1 253M 112M 141M 45% /media/pi/system-boot /dev/sda2 917G 560G 321G 64% /media/pi/writable pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-Pi-400/2022-04-08 $ pi@AC0XL-Pi-400:~ $ cd /home pi@AC0XL-Pi-400:/home $ ls -a; . delinquent-accounts freedom music pictures va .. documents local notices rome videos ac0xl downloads memes pi searles-sav-on-propane pi@AC0XL-Pi-400:/home $ ls -al total 68 drwxr-xr-x 17 root root 4096 Apr 7 19:15 . drwxr-xr-x 21 root root 4096 Apr 5 16:05 .. drwxr-xr-x 2 ac0xl ac0xl 4096 Apr 7 15:29 ac0xl drwxr-xr-x 2 delinquent-accounts www 4096 Apr 7 18:47 delinquent-accounts drwxr-xr-x 2 documents www 4096 Apr 7 18:55 documents drwxr-xr-x 2 downloads www 4096 Apr 7 18:57 downloads drwxr-xr-x 2 freedom www 4096 Apr 7 19:00 freedom drwxr-xr-x 6 root root 4096 Apr 7 15:13 local drwxr-xr-x 2 memes www 4096 Apr 7 19:03 memes drwxr-xr-x 2 music www 4096 Apr 7 19:04 music drwxr-xr-x 2 notices www 4096 Apr 7 19:06 notices drwxr-xr-x 24 pi pi 4096 Apr 7 20:52 pi drwxr-xr-x 2 pictures www 4096 Apr 7 19:08 pictures drwxr-xr-x 2 rome www 4096 Apr 7 19:10 rome drwxr-xr-x 2 searles-sav-on-propane www 4096 Apr 7 19:12 searles-sav-on-propane drwxr-xr-x 2 va www 4096 Apr 7 19:14 va drwxr-xr-x 2 videos www 4096 Apr 7 19:17 videos pi@AC0XL-Pi-400:/home $ cd ac0xl/ pi@AC0XL-Pi-400:/home/ac0xl $ ls -al total 28 drwxr-xr-x 2 ac0xl ac0xl 4096 Apr 7 15:29 . drwxr-xr-x 17 root root 4096 Apr 7 19:15 .. -rw-r--r-- 1 ac0xl ac0xl 0 Apr 7 15:29 .1001 -rw------- 1 ac0xl ac0xl 449 Apr 7 15:33 .bash_history -rw-r--r-- 1 ac0xl ac0xl 220 Apr 7 15:22 .bash_logout -rw-r--r-- 1 ac0xl ac0xl 3523 Apr 7 15:22 .bashrc -rw-r--r-- 1 ac0xl ac0xl 1670 Apr 7 15:22 .mkshrc -rw-r--r-- 1 ac0xl ac0xl 807 Apr 7 15:22 .profile lrwxrwxrwx 1 ac0xl www 27 Apr 7 15:29 public_html -> /home/local/www/users/ac0xl pi@AC0XL-Pi-400:/home/ac0xl $ cd .. pi@AC0XL-Pi-400:/home $ sudo chown -vR ac0xl:www ac0xl/ ### Changing owner and group on ac0xl and all of it's sub-directories. ownership of 'ac0xl/public_html' retained as ac0xl:www changed ownership of 'ac0xl/.bashrc' from ac0xl:ac0xl to ac0xl:www changed ownership of 'ac0xl/.1001' from ac0xl:ac0xl to ac0xl:www changed ownership of 'ac0xl/.mkshrc' from ac0xl:ac0xl to ac0xl:www changed ownership of 'ac0xl/.bash_history' from ac0xl:ac0xl to ac0xl:www changed ownership of 'ac0xl/.bash_logout' from ac0xl:ac0xl to ac0xl:www changed ownership of 'ac0xl/.profile' from ac0xl:ac0xl to ac0xl:www changed ownership of 'ac0xl/' from ac0xl:ac0xl to ac0xl:www pi@AC0XL-Pi-400:/home $ ls -al total 68 drwxr-xr-x 17 root root 4096 Apr 7 19:15 . drwxr-xr-x 21 root root 4096 Apr 5 16:05 .. drwxr-xr-x 2 ac0xl www 4096 Apr 7 15:29 ac0xl drwxr-xr-x 2 delinquent-accounts www 4096 Apr 7 18:47 delinquent-accounts drwxr-xr-x 2 documents www 4096 Apr 7 18:55 documents drwxr-xr-x 2 downloads www 4096 Apr 7 18:57 downloads drwxr-xr-x 2 freedom www 4096 Apr 7 19:00 freedom drwxr-xr-x 6 root root 4096 Apr 7 15:13 local drwxr-xr-x 2 memes www 4096 Apr 7 19:03 memes drwxr-xr-x 2 music www 4096 Apr 7 19:04 music drwxr-xr-x 2 notices www 4096 Apr 7 19:06 notices drwxr-xr-x 24 pi pi 4096 Apr 7 20:52 pi drwxr-xr-x 2 pictures www 4096 Apr 7 19:08 pictures drwxr-xr-x 2 rome www 4096 Apr 7 19:10 rome drwxr-xr-x 2 searles-sav-on-propane www 4096 Apr 7 19:12 searles-sav-on-propane drwxr-xr-x 2 va www 4096 Apr 7 19:14 va drwxr-xr-x 2 videos www 4096 Apr 7 19:17 videos pi@AC0XL-Pi-400:/home $ cd downloads pi@AC0XL-Pi-400:/home/downloads $ ls -al total 28 drwxr-xr-x 2 downloads www 4096 Apr 7 18:57 . drwxr-xr-x 17 root root 4096 Apr 7 19:15 .. -rw-r--r-- 1 downloads www 0 Apr 7 18:56 .1004 -rw------- 1 downloads www 35 Apr 7 18:57 .bash_history -rw-r--r-- 1 downloads www 220 Apr 7 18:55 .bash_logout -rw-r--r-- 1 downloads www 3523 Apr 7 18:55 .bashrc -rw-r--r-- 1 downloads www 1670 Apr 7 18:55 .mkshrc -rw-r--r-- 1 downloads www 807 Apr 7 18:55 .profile lrwxrwxrwx 1 downloads www 31 Apr 7 18:56 public_html -> /home/local/www/users/downloads pi@AC0XL-Pi-400:/home/downloads $ cd freedom bash: cd: freedom: No such file or directory pi@AC0XL-Pi-400:/home/downloads $ cd pi@AC0XL-Pi-400:~ $ cd freedom pi@AC0XL-Pi-400:~/freedom $ ls -al total 7304 drwxr-xr-x 6 pi pi 4096 Apr 4 13:59 . drwxr-xr-x 30 pi pi 4096 Apr 8 13:47 .. -r--r--r-- 1 pi pi 32014 Jan 8 2020 2010Website.pdf -r--r--r-- 1 pi pi 11024 Jan 8 2020 2019-09-05-Project.txt -r--r--r-- 1 pi pi 11941 Jan 8 2020 2019-10-01-website.txt -r--r--r-- 1 pi pi 6365 Jan 8 2020 2019-11-26-web-server.txt -r--r--r-- 1 pi pi 21340 Jan 8 2020 2019-12-06-Google-Search-Is-Broken.txt -r--r--r-- 1 pi pi 12787 Mar 18 2021 2020-07-17-thttpd.txt -r--r--r-- 1 pi pi 17955 Sep 10 2021 2021-09-01.txt -r--r--r-- 1 pi pi 17955 Sep 10 2021 2021-09-01.txt~ -r--r--r-- 1 pi pi 18393 Sep 11 2021 2021-09-07-Formatting-Drives-Greater-Than-512GB.txt -rw-r--r-- 1 pi pi 225785 Mar 23 18:33 2022-03-21-Install-thttpd-on-Raspberry-Pi-OS.txt -r--r--r-- 1 pi pi 225785 Mar 23 18:36 2022-03-21-Install-thttpd-on-Raspberry-Pi-OS.txt~ -rw-r--r-- 1 pi pi 916555 Mar 30 21:09 2022-03-25-Install-thttpd-32-or-64bit.txt -rw-r--r-- 1 pi pi 916555 Mar 30 21:09 2022-03-25-Install-thttpd-on-32-or-64-bit-OS.txt -rw-r--r-- 1 pi pi 916545 Mar 30 19:53 2022-03-25-Install-thttpd-Raspberry-Pi-Model-B-Plus-Rev-1.2-with-512-MB-RAM.txt -rw-r--r-- 1 pi pi 1145421 Apr 2 22:41 2022-04-01-Install-thttpd-on-32-or-64-bit-OS-bak.txt -rw-r--r-- 1 pi pi 1177316 Apr 2 22:21 2022-04-01-Install-thttpd-on-32-or-64-bit-OS.txt -rw-r--r-- 1 pi pi 1145420 Apr 1 01:06 2022-04-01-Install-thttpd-on-32-or-64-bit-OS.txt~ -r--r--r-- 1 pi pi 214133 Apr 2 22:32 2022-04-02-Install.test.txt -rw-r--r-- 1 pi pi 214133 Apr 2 22:32 2022-04-02-Install.test.txt~ drwxr-xr-x 22 pi pi 4096 Mar 23 11:09 Acme.com drwxr-xr-x 4 pi pi 4096 Mar 23 11:09 'HTML Sampler_files' -r--r--r-- 1 pi pi 26907 Aug 16 2021 'HTML Sampler.html' drwxr-xr-x 2 pi pi 4096 Apr 7 17:43 os-debug -r--r--r-- 1 pi pi 40532 Sep 13 2021 readme.txt -r--r--r-- 1 pi pi 80728 Sep 8 2021 rfc3875-CGI.txt -r--r--r-- 1 pi pi 186 Jan 8 2020 sitemap.xml -r--r--r-- 1 pi pi 186 Jan 8 2020 sitemap.xml.txt -rwxr-xr-- 1 pi pi 472 Aug 31 2021 thttpd_config -r-xr-xr-- 1 pi pi 472 Aug 31 2021 thttpd_config~ drwxr-xr-x 2 pi pi 4096 Mar 23 11:09 thttpd-extras pi@AC0XL-Pi-400:~/freedom $ cd pi@AC0XL-Pi-400:~ $ ls -al pi@AC0XL-Pi-400:~/32G-SD $ pi@AC0XL-Pi-400:~/32G-SD $ cd /media/pi/writable/AC0XL-www-Pi-4B/ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B $ ls -al total 12 drwxr-xr-x 3 root root 4096 Apr 8 12:51 . drwxr-xr-x 30 root root 4096 Apr 8 12:22 .. drwxr-xr-x 3 root root 4096 Apr 8 12:51 2022-04-08 pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B $ cd 2022-04-08/ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08 $ ls -al total 12 drwxr-xr-x 3 root root 4096 Apr 8 12:51 . drwxr-xr-x 3 root root 4096 Apr 8 12:51 .. drwxr-xr-x 17 root root 4096 Feb 5 19:19 home pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08 $ cd home/ pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08/home $ ls -al total 84 drwxr-xr-x 17 root root 4096 Feb 5 19:19 . drwxr-xr-x 3 root root 4096 Apr 8 12:51 .. drwxr-xr-x 16 ac0xl www 4096 Feb 10 16:54 ac0xl drwxr-xr-x 4 delinquent-accounts www 4096 Feb 6 11:39 delinquent-accounts drwxr-xr-x 3 documents www 4096 Feb 6 11:41 documents drwxr-xr-x 13 downloads www 4096 Feb 6 11:45 downloads drwxr-xr-x 10 freedom www 4096 Feb 6 11:55 freedom drwxr-xr-x 5 root root 4096 Feb 5 17:11 local drwxr-xr-x 3 memes www 4096 Feb 6 11:59 memes drwxr-xr-x 4 music www 4096 Feb 6 12:01 music drwxr-xr-x 4 notices www 4096 Feb 6 12:04 notices drwxr-xr-x 21 pi pi 4096 Apr 8 00:40 pi drwxr-xr-x 4 pictures www 4096 Feb 6 12:07 pictures drwxr-xr-x 50 rome www 20480 Feb 6 12:16 rome drwxr-xr-x 4 searles-sav-on-propane www 4096 Feb 6 12:18 searles-sav-on-propane drwxr-xr-x 4 va www 4096 Feb 6 12:20 va drwxr-xr-x 9 videos www 4096 Feb 11 17:02 videos pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08/home $ cd music/ ### changing to the music directory on the back-up drive. pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08/home/music $ ls -al total 42448 drwxr-xr-x 4 music www 4096 Feb 6 12:01 . drwxr-xr-x 17 root root 4096 Feb 5 19:19 .. drwxr-xr-x 2 music www 4096 Feb 5 18:55 .1007 -rw-r--r-- 1 music www 43202902 Dec 31 2019 20Hz-square.wav -rw------- 1 music www 92 Feb 6 21:55 .bash_history -rw-r--r-- 1 music www 220 Feb 5 18:53 .bash_logout -rw-r--r-- 1 music www 3523 Feb 5 18:53 .bashrc -rw-r--r-- 1 music www 1670 Feb 5 18:53 .mkshrc -rwxr--r-- 1 music www 221475 Feb 18 2020 NotePamphlet.pdf -rw-r--r-- 1 music www 807 Feb 5 18:53 .profile lrwxrwxrwx 1 music www 27 Feb 5 18:55 public_html -> /home/local/www/users/music drwxr-xr-x 2 music www 4096 Feb 18 2020 Songs pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08/home/music $ su music ### su to user music. Password: music@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08/home/music $ cp -iav * ~/ ### copy back-up to user music home. '20Hz-square.wav' -> '/home/music/20Hz-square.wav' 'NotePamphlet.pdf' -> '/home/music/NotePamphlet.pdf' cp: overwrite '/home/music/public_html'? n 'Songs' -> '/home/music/Songs' 'Songs/saviour_is_waiting-chords.pdf' -> '/home/music/Songs/saviour_is_waiting-chords.pdf' 'Songs/Songs001.pdf' -> '/home/music/Songs/Songs001.pdf' 'Songs/Songs002.pdf' -> '/home/music/Songs/Songs002.pdf' music@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08/home/music $ exit exit pi@AC0XL-Pi-400:/media/pi/writable/AC0XL-www-Pi-4B/2022-04-08/home/music $ pi@AC0XL-Pi-400:/home $ ls ac0xl delinquent-accounts documents downloads freedom local memes music notices pi pictures rome searles-sav-on-propane va videos pi@AC0XL-Pi-400:/home $ su memes ### change to user memes Password: memes@AC0XL-Pi-400:/home $ cd memes@AC0XL-Pi-400:~ $ ls -al total 348 drwxr-xr-x 2 memes www 4096 Apr 8 13:32 . drwxr-xr-x 17 root root 4096 Apr 7 19:15 .. -rw-r--r-- 1 memes www 0 Apr 7 19:02 .1006 -rw------- 1 memes www 64 Apr 8 13:33 .bash_history -rw-r--r-- 1 memes www 220 Apr 7 19:00 .bash_logout -rw-r--r-- 1 memes www 3523 Apr 7 19:00 .bashrc -rw-r--r-- 1 memes www 135459 May 18 2020 fauci-faucet-768x614.jpg -rw-r--r-- 1 memes www 1670 Apr 7 19:00 .mkshrc -rw-r--r-- 1 memes www 807 Apr 7 19:00 .profile lrwxrwxrwx 1 memes www 27 Apr 7 19:02 public_html -> /home/local/www/users/memes -rw-r--r-- 1 memes www 81642 Feb 13 2020 romney-272396_image.jpg -rw-r--r-- 1 memes www 103706 Jun 4 2020 trump-who2-768x564.jpg memes@AC0XL-Pi-400:~ $ cp -iav * public_html ### copy everything to the web page 'fauci-faucet-768x614.jpg' -> 'public_html/fauci-faucet-768x614.jpg' 'public_html' -> 'public_html/public_html' 'romney-272396_image.jpg' -> 'public_html/romney-272396_image.jpg' 'trump-who2-768x564.jpg' -> 'public_html/trump-who2-768x564.jpg' memes@AC0XL-Pi-400:~ $ cd public_html ### Change to the web page. memes@AC0XL-Pi-400:~/public_html $ ls -al total 328 drwxr-xr-x 2 memes www 4096 Apr 8 16:23 . drwxrwxr-x 15 root www 4096 Apr 7 19:17 .. -rw-r--r-- 1 memes www 135459 May 18 2020 fauci-faucet-768x614.jpg lrwxrwxrwx 1 memes www 27 Apr 7 19:02 public_html -> /home/local/www/users/memes -rw-r--r-- 1 memes www 81642 Feb 13 2020 romney-272396_image.jpg -rw-r--r-- 1 memes www 103706 Jun 4 2020 trump-who2-768x564.jpg memes@AC0XL-Pi-400:~/public_html $ rm -v public_html ### remove the symlink from the web page removed 'public_html' memes@AC0XL-Pi-400:~/public_html $ ls -al total 328 drwxr-xr-x 2 memes www 4096 Apr 8 16:23 . drwxrwxr-x 15 root www 4096 Apr 7 19:17 .. -rw-r--r-- 1 memes www 135459 May 18 2020 fauci-faucet-768x614.jpg -rw-r--r-- 1 memes www 81642 Feb 13 2020 romney-272396_image.jpg -rw-r--r-- 1 memes www 103706 Jun 4 2020 trump-who2-768x564.jpg memes@AC0XL-Pi-400:~/public_html $ cd .. memes@AC0XL-Pi-400:~ $ ls fauci-faucet-768x614.jpg public_html romney-272396_image.jpg trump-who2-768x564.jpg memes@AC0XL-Pi-400:~ $ exit ### exit user memes exit # # # pi@AC0XL-Pi-400:/home $ ls ### ac0xl delinquent-accounts documents downloads freedom local memes music notices pi pictures rome searles-sav-on-propane va videos pi@AC0XL-Pi-400:/home $ su music ### change to user nusic Password: music@AC0XL-Pi-400:/home $ cd music@AC0XL-Pi-400:~ $ ls -al total 42444 drwxr-xr-x 3 music www 4096 Apr 8 16:28 . drwxr-xr-x 17 root root 4096 Apr 7 19:15 .. -rw-r--r-- 1 music www 0 Apr 7 19:04 .1007 -rw-r--r-- 1 music www 43202902 Dec 31 2019 20Hz-square.wav -rw------- 1 music www 68 Apr 8 16:28 .bash_history -rw-r--r-- 1 music www 220 Apr 7 19:03 .bash_logout -rw-r--r-- 1 music www 3523 Apr 7 19:03 .bashrc -rw-r--r-- 1 music www 1670 Apr 7 19:03 .mkshrc -rwxr--r-- 1 music www 221475 Feb 18 2020 NotePamphlet.pdf -rw-r--r-- 1 music www 807 Apr 7 19:03 .profile lrwxrwxrwx 1 music www 27 Apr 7 19:04 public_html -> /home/local/www/users/music drwxr-xr-x 2 music www 4096 Feb 18 2020 Songs music@AC0XL-Pi-400:~ $ cp -iav * public_html ### copy everything to web page. '20Hz-square.wav' -> 'public_html/20Hz-square.wav' 'NotePamphlet.pdf' -> 'public_html/NotePamphlet.pdf' 'public_html' -> 'public_html/public_html' 'Songs' -> 'public_html/Songs' 'Songs/saviour_is_waiting-chords.pdf' -> 'public_html/Songs/saviour_is_waiting-chords.pdf' 'Songs/Songs001.pdf' -> 'public_html/Songs/Songs001.pdf' 'Songs/Songs002.pdf' -> 'public_html/Songs/Songs002.pdf' music@AC0XL-Pi-400:~ $ cd public_html ### change to web page. music@AC0XL-Pi-400:~/public_html $ ls -al total 42424 drwxr-xr-x 3 music www 4096 Apr 8 16:30 . drwxrwxr-x 15 root www 4096 Apr 7 19:17 .. -rw-r--r-- 1 music www 43202902 Dec 31 2019 20Hz-square.wav -rwxr--r-- 1 music www 221475 Feb 18 2020 NotePamphlet.pdf lrwxrwxrwx 1 music www 27 Apr 7 19:04 public_html -> /home/local/www/users/music drwxr-xr-x 2 music www 4096 Feb 18 2020 Songs music@AC0XL-Pi-400:~/public_html $ rm -v public_html removed 'public_html' ### remove symlink from web page. music@AC0XL-Pi-400:~/public_html $ ls -al total 42424 drwxr-xr-x 3 music www 4096 Apr 8 16:30 . drwxrwxr-x 15 root www 4096 Apr 7 19:17 .. -rw-r--r-- 1 music www 43202902 Dec 31 2019 20Hz-square.wav -rwxr--r-- 1 music www 221475 Feb 18 2020 NotePamphlet.pdf drwxr-xr-x 2 music www 4096 Feb 18 2020 Songs music@AC0XL-Pi-400:~/public_html $ cd Songs/ music@AC0XL-Pi-400:~/public_html/Songs $ ls -al total 768 drwxr-xr-x 2 music www 4096 Feb 18 2020 . drwxr-xr-x 3 music www 4096 Apr 8 16:30 .. -rwxr--r-- 1 music www 14835 Feb 18 2020 saviour_is_waiting-chords.pdf -rwxr--r-- 1 music www 381866 Feb 18 2020 Songs001.pdf -rwxr--r-- 1 music www 372884 Feb 18 2020 Songs002.pdf music@AC0XL-Pi-400:~/public_html/Songs $ exit ### exit user music. exit # # # pi@AC0XL-Pi-400:/home $ ls ac0xl delinquent-accounts documents downloads freedom local memes music notices pi pictures rome searles-sav-on-propane va videos pi@AC0XL-Pi-400:/home $ su notices ### change to user notices. Password: notices@AC0XL-Pi-400:/home $ cd notices@AC0XL-Pi-400:~ $ ls -al total 216 drwxr-xr-x 3 notices www 4096 Apr 8 13:34 . drwxr-xr-x 17 root root 4096 Apr 7 19:15 .. -rw-r--r-- 1 notices www 0 Apr 7 19:06 .1008 drwxrwxrwx 3 notices www 4096 Oct 9 13:14 2021-court -rw------- 1 notices www 64 Apr 8 13:34 .bash_history -rw-r--r-- 1 notices www 220 Apr 7 19:05 .bash_logout -rw-r--r-- 1 notices www 3523 Apr 7 19:05 .bashrc -rw-r--r-- 1 notices www 56900 Aug 26 2020 court-2020-08-26.pdf -rw-r--r-- 1 notices www 1670 Apr 7 19:05 .mkshrc -rw-r--r-- 1 notices www 22753 May 10 2021 post.txt -rw-r--r-- 1 notices www 807 Apr 7 19:05 .profile lrwxrwxrwx 1 notices www 29 Apr 7 19:06 public_html -> /home/local/www/users/notices -rw-r--r-- 1 notices www 13031 Mar 15 2021 Shake-Dust.pdf -rw-r--r-- 1 notices www 86478 Nov 7 20:44 Twelve-Presumptions-of-the-Court.pdf notices@AC0XL-Pi-400:~ $ cp -iav * public_html ### copy everything to web page. '2021-court' -> 'public_html/2021-court' '2021-court/Frank-court.pdf' -> 'public_html/2021-court/Frank-court.pdf' '2021-court/Damages--18-USC-241-242-001.pdf' -> 'public_html/2021-court/Damages--18-USC-241-242-001.pdf' '2021-court/2021-06-21-acknowledgement.pdf' -> 'public_html/2021-court/2021-06-21-acknowledgement.pdf' '2021-court/2019-2020-receipts-001.pdf' -> 'public_html/2021-court/2019-2020-receipts-001.pdf' '2021-court/2020-proof-of-service-001.pdf' -> 'public_html/2021-court/2020-proof-of-service-001.pdf' '2021-court/2019-07-25-whom-it-concerns-001.pdf' -> 'public_html/2021-court/2019-07-25-whom-it-concerns-001.pdf' '2021-court/2020-08-03-service-001.pdf' -> 'public_html/2021-court/2020-08-03-service-001.pdf' '2021-court/2021-05-13--18-USC-241-001.pdf' -> 'public_html/2021-court/2021-05-13--18-USC-241-001.pdf' '2021-court/2021-05-13--18-USC-242-001.pdf' -> 'public_html/2021-court/2021-05-13--18-USC-242-001.pdf' '2021-court/2021-court-pgs-001.pdf' -> 'public_html/2021-court/2021-court-pgs-001.pdf' '2021-court/2021-05-16-dismiss-001.pdf' -> 'public_html/2021-court/2021-05-16-dismiss-001.pdf' '2021-court/Shake-Dust.pdf' -> 'public_html/2021-court/Shake-Dust.pdf' '2021-court/Public-Law-114-328-section-212-f-2017-12791.pdf' -> 'public_html/2021-court/Public-Law-114-328-section-212-f-2017-12791.pdf' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/navigation.jpg' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/navigation.jpg' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/navigation_002.jpg' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/navigation_002.jpg' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/application-4fdea103132214cddbfcfcc4088079a679c37de0d5b8d62fd.js' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/application-4fdea103132214cddbfcfcc4088079a679c37de0d5b8d62fd.js' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/navigation_003.jpg' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/navigation_003.jpg' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/navigation_004.jpg' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/navigation_004.jpg' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/Universal-Federated-Analytics-Min.js' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/Universal-Federated-Analytics-Min.js' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/js.js' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/js.js' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/vendor-6e87781da741343f2b0a098d4d413d07b4e357d57598f3c08d0448.js' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/vendor-6e87781da741343f2b0a098d4d413d07b4e357d57598f3c08d0448.js' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/navigation_005.jpg' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/navigation_005.jpg' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/navigation_006.jpg' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/navigation_006.jpg' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/tender_widget_custom-bc7fefb47a52544c5c80fe69787d7b2085e77e9f.js' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/tender_widget_custom-bc7fefb47a52544c5c80fe69787d7b2085e77e9f.js' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/application-215599cc8af5ddbaf4390af22887802d6c6ce13f26bd6263.css' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/application-215599cc8af5ddbaf4390af22887802d6c6ce13f26bd6263.css' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/vendor-4efd9cfa1df894eab8a17da9df88afe76c47237e33a6a8571f416.css' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/vendor-4efd9cfa1df894eab8a17da9df88afe76c47237e33a6a8571f416.css' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/print-ff752e0e22629332d2b6f568ee54b056703ccc9116678ec1d5bc34.css' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/print-ff752e0e22629332d2b6f568ee54b056703ccc9116678ec1d5bc34.css' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/analytics.js' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report_files/analytics.js' '2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report.html' -> 'public_html/2021-court/114-328-212f-Federal Register Global Magnitsky Human Rights Accountability Act Report.html' '2021-court/eo-13818-glomag_eo.pdf' -> 'public_html/2021-court/eo-13818-glomag_eo.pdf' '2021-court/Frank-court.abw' -> 'public_html/2021-court/Frank-court.abw' '2021-court/Frank-court.odt' -> 'public_html/2021-court/Frank-court.odt' 'court-2020-08-26.pdf' -> 'public_html/court-2020-08-26.pdf' 'post.txt' -> 'public_html/post.txt' 'public_html' -> 'public_html/public_html' 'Shake-Dust.pdf' -> 'public_html/Shake-Dust.pdf' 'Twelve-Presumptions-of-the-Court.pdf' -> 'public_html/Twelve-Presumptions-of-the-Court.pdf' notices@AC0XL-Pi-400:~ $ cd public_html ### change to web page. notices@AC0XL-Pi-400:~/public_html $ ls -al total 196 drwxr-xr-x 3 notices www 4096 Apr 8 16:32 . drwxrwxr-x 15 root www 4096 Apr 7 19:17 .. drwxrwxrwx 3 notices www 4096 Oct 9 13:14 2021-court -rw-r--r-- 1 notices www 56900 Aug 26 2020 court-2020-08-26.pdf -rw-r--r-- 1 notices www 22753 May 10 2021 post.txt lrwxrwxrwx 1 notices www 29 Apr 7 19:06 public_html -> /home/local/www/users/notices -rw-r--r-- 1 notices www 13031 Mar 15 2021 Shake-Dust.pdf -rw-r--r-- 1 notices www 86478 Nov 7 20:44 Twelve-Presumptions-of-the-Court.pdf notices@AC0XL-Pi-400:~/public_html $ rm -v public_html ### remove symlink from web page. removed 'public_html' notices@AC0XL-Pi-400:~/public_html $ ls -al total 196 drwxr-xr-x 3 notices www 4096 Apr 8 16:32 . drwxrwxr-x 15 root www 4096 Apr 7 19:17 .. drwxrwxrwx 3 notices www 4096 Oct 9 13:14 2021-court -rw-r--r-- 1 notices www 56900 Aug 26 2020 court-2020-08-26.pdf -rw-r--r-- 1 notices www 22753 May 10 2021 post.txt -rw-r--r-- 1 notices www 13031 Mar 15 2021 Shake-Dust.pdf -rw-r--r-- 1 notices www 86478 Nov 7 20:44 Twelve-Presumptions-of-the-Court.pdf notices@AC0XL-Pi-400:~/public_html $ exit ### exit user notices. exit # # # pi@AC0XL-Pi-400:/home $ ls ac0xl delinquent-accounts documents downloads freedom local memes music notices pi pictures rome searles-sav-on-propane va videos pi@AC0XL-Pi-400:/home $ su pictures ### change to user pictures. Password: pictures@AC0XL-Pi-400:/home $ cd pictures@AC0XL-Pi-400:~ $ ls -al total 152 drwxr-xr-x 3 pictures www 4096 Apr 8 13:36 . drwxr-xr-x 17 root root 4096 Apr 7 19:15 .. -rw-r--r-- 1 pictures www 0 Apr 7 19:08 .1009 -rw------- 1 pictures www 63 Apr 8 13:36 .bash_history -rw-r--r-- 1 pictures www 220 Apr 7 19:07 .bash_logout -rw-r--r-- 1 pictures www 3523 Apr 7 19:07 .bashrc -rw-r--r-- 1 pictures www 1670 Apr 7 19:07 .mkshrc -rw-rw-r-- 1 pictures www 40506 Dec 30 14:33 Obama.jpg -rw-r--r-- 1 pictures www 807 Apr 7 19:07 .profile lrwxrwxrwx 1 pictures www 30 Apr 7 19:08 public_html -> /home/local/www/users/pictures -rw-r--r-- 1 pictures www 81642 Feb 25 2020 romney-272396_image.jpg drwxr-xr-x 4 pictures www 4096 Oct 26 20:04 StMichaelTheArchangelMission pictures@AC0XL-Pi-400:~ $ cp -iav * public_html ### copy everytinng to web page. 'Obama.jpg' -> 'public_html/Obama.jpg' 'public_html' -> 'public_html/public_html' 'romney-272396_image.jpg' -> 'public_html/romney-272396_image.jpg' 'StMichaelTheArchangelMission' -> 'public_html/StMichaelTheArchangelMission' 'StMichaelTheArchangelMission/2020-02-25' -> 'public_html/StMichaelTheArchangelMission/2020-02-25' 'StMichaelTheArchangelMission/2020-02-25/SANY0981.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0981.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0982.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0982.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0983.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0983.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0984.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0984.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0985.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0985.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0986.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0986.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0987.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0987.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0988.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0988.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0989.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0989.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0990.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0990.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0991.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0991.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0992.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0992.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0993.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0993.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0994.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0994.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0995.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0995.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0996.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0996.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0997.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0997.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0998.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0998.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY0999.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY0999.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1000.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1000.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1001.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1001.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1002.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1002.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1003.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1003.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1004.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1004.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1005.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1005.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1006.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1006.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1007.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1007.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1008.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1008.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1009.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1009.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1010.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1010.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1011.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1011.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1012.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1012.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1013.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1013.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1014.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1014.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1015.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1015.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1016.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1016.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1017.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1017.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1018.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1018.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1019.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1019.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1020.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1020.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1021.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1021.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1022.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1022.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1023.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1023.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1024.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1024.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1025.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1025.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1026.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1026.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1027.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1027.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1028.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1028.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1029.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1029.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1030.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1030.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1031.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1031.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1032.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1032.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1033.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1033.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1034.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1034.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1035.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1035.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1036.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1036.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1037.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1037.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1038.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1038.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1039.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1039.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1040.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1040.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1041.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1041.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1042.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1042.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1043.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1043.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1044.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1044.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1045.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1045.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1046.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1046.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1047.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1047.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1048.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1048.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1049.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1049.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1050.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1050.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1051.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1051.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1052.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1052.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1053.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1053.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1054.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1054.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1055.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1055.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1056.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1056.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1057.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1057.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1058.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1058.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1059.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1059.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1060.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1060.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1061.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1061.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1062.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1062.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1063.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1063.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1064.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1064.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1065.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1065.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1066.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1066.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1067.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1067.JPG' 'StMichaelTheArchangelMission/2020-02-25/SANY1068.JPG' -> 'public_html/StMichaelTheArchangelMission/2020-02-25/SANY1068.JPG' 'StMichaelTheArchangelMission/2021-10-20-old-air-cooler' -> 'public_html/StMichaelTheArchangelMission/2021-10-20-old-air-cooler' 'StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1086.JPG' -> 'public_html/StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1086.JPG' 'StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1087.JPG' -> 'public_html/StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1087.JPG' 'StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1088.JPG' -> 'public_html/StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1088.JPG' 'StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1089.JPG' -> 'public_html/StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1089.JPG' 'StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1090.JPG' -> 'public_html/StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1090.JPG' 'StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1091.JPG' -> 'public_html/StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1091.JPG' 'StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1092.JPG' -> 'public_html/StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1092.JPG' 'StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1093.JPG' -> 'public_html/StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1093.JPG' 'StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1094.JPG' -> 'public_html/StMichaelTheArchangelMission/2021-10-20-old-air-cooler/SANY1094.JPG' pictures@AC0XL-Pi-400:~ $ cd public_html ### change to web page. pictures@AC0XL-Pi-400:~/public_html $ ls -al total 132 drwxr-xr-x 3 pictures www 4096 Apr 8 16:33 . drwxrwxr-x 15 root www 4096 Apr 7 19:17 .. -rw-rw-r-- 1 pictures www 40506 Dec 30 14:33 Obama.jpg lrwxrwxrwx 1 pictures www 30 Apr 7 19:08 public_html -> /home/local/www/users/pictures -rw-r--r-- 1 pictures www 81642 Feb 25 2020 romney-272396_image.jpg drwxr-xr-x 4 pictures www 4096 Oct 26 20:04 StMichaelTheArchangelMission pictures@AC0XL-Pi-400:~/public_html $ rm -v public_html ### remove symlink from web page. removed 'public_html' pictures@AC0XL-Pi-400:~/public_html $ ls -al total 132 drwxr-xr-x 3 pictures www 4096 Apr 8 16:34 . drwxrwxr-x 15 root www 4096 Apr 7 19:17 .. -rw-rw-r-- 1 pictures www 40506 Dec 30 14:33 Obama.jpg -rw-r--r-- 1 pictures www 81642 Feb 25 2020 romney-272396_image.jpg drwxr-xr-x 4 pictures www 4096 Oct 26 20:04 StMichaelTheArchangelMission pictures@AC0XL-Pi-400:~/public_html $ cd StMichaelTheArchangelMission/ pictures@AC0XL-Pi-400:~/public_html/StMichaelTheArchangelMission $ ls -al total 16 drwxr-xr-x 4 pictures www 4096 Oct 26 20:04 . drwxr-xr-x 3 pictures www 4096 Apr 8 16:34 .. drwxr-xr-x 2 pictures www 4096 Feb 25 2020 2020-02-25 drwxrwxr-x 2 pictures www 4096 Oct 26 19:33 2021-10-20-old-air-cooler pictures@AC0XL-Pi-400:~/public_html/StMichaelTheArchangelMission $ exit ### exit user pictures. exit # # # pi@AC0XL-Pi-400:/home $ ls ac0xl delinquent-accounts documents downloads freedom local memes music notices pi pictures rome searles-sav-on-propane va videos pi@AC0XL-Pi-400:/home $ df -h ### check free disk space. Filesystem Size Used Avail Use% Mounted on /dev/root 115G 66G 44G 60% / devtmpfs 1.7G 0 1.7G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 759M 988K 758M 1% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock /dev/mmcblk0p1 253M 31M 222M 12% /boot tmpfs 380M 28K 380M 1% /run/user/1000 /dev/sda1 253M 112M 141M 45% /media/pi/system-boot /dev/sda2 917G 560G 321G 64% /media/pi/writable pi@AC0XL-Pi-400:/home $ pi@AC0XL-Pi-400:/home $ pi@AC0XL-Pi-400:/home $ ls ac0xl delinquent-accounts documents downloads freedom local memes music notices pi pictures rome searles-sav-on-propane va videos pi@AC0XL-Pi-400:/home $ su searles-sav-on-propane ### change to user searles-sav-on-propane. Password: searles-sav-on-propane@AC0XL-Pi-400:/home $ cd searles-sav-on-propane@AC0XL-Pi-400:~ $ ls -al total 13992 drwxr-xr-x 3 searles-sav-on-propane www 4096 Apr 8 13:48 . drwxr-xr-x 17 root root 4096 Apr 7 19:15 .. -rw-r--r-- 1 searles-sav-on-propane www 0 Apr 7 19:12 .1011 -rw-r--r-- 1 searles-sav-on-propane www 449988 May 25 2021 2021-05-18-Summary-001.pdf -rw------- 1 searles-sav-on-propane www 63 Apr 8 13:48 .bash_history -rw-r--r-- 1 searles-sav-on-propane www 220 Apr 7 19:11 .bash_logout -rw-r--r-- 1 searles-sav-on-propane www 3523 Apr 7 19:11 .bashrc -rw-r--r-- 1 searles-sav-on-propane www 239864 Mar 2 2021 BBB-Complaint#15141658.pdf -rw-r--r-- 1 searles-sav-on-propane www 1670 Apr 7 19:11 .mkshrc -rw-r--r-- 1 searles-sav-on-propane www 807 Apr 7 19:11 .profile lrwxrwxrwx 1 searles-sav-on-propane www 44 Apr 7 19:12 public_html -> /home/local/www/users/searles-sav-on-propane drwxr-xr-x 2 searles-sav-on-propane www 4096 Jan 22 2021 SearlesSavOnPropane -rw-r--r-- 1 searles-sav-on-propane www 2659499 Jan 22 2021 Searles-Sav-On-Propane-02.pdf -rw-r--r-- 1 searles-sav-on-propane www 863498 Mar 2 2021 Searles-Sav-On-Propane-03.pdf -rw-r--r-- 1 searles-sav-on-propane www 10074778 Dec 29 2020 Searles-Sav-On-Propane.pdf searles-sav-on-propane@AC0XL-Pi-400:~ $ cp -iav * public_html ### copy everything to web page '2021-05-18-Summary-001.pdf' -> 'public_html/2021-05-18-Summary-001.pdf' 'BBB-Complaint#15141658.pdf' -> 'public_html/BBB-Complaint#15141658.pdf' 'public_html' -> 'public_html/public_html' 'SearlesSavOnPropane' -> 'public_html/SearlesSavOnPropane' 'SearlesSavOnPropane/acct#01101-001.pdf' -> 'public_html/SearlesSavOnPropane/acct#01101-001.pdf' 'SearlesSavOnPropane/SANY1069.JPG' -> 'public_html/SearlesSavOnPropane/SANY1069.JPG' 'SearlesSavOnPropane/SANY1070.JPG' -> 'public_html/SearlesSavOnPropane/SANY1070.JPG' "SearlesSavOnPropane/2020-12-28-Searle's.pdf" -> "public_html/SearlesSavOnPropane/2020-12-28-Searle's.pdf" 'SearlesSavOnPropane/Searles-Sav-On-Propane.pdf' -> 'public_html/SearlesSavOnPropane/Searles-Sav-On-Propane.pdf' 'SearlesSavOnPropane/2020-12-28-Searles.pdf' -> 'public_html/SearlesSavOnPropane/2020-12-28-Searles.pdf' 'SearlesSavOnPropane/Searles-Sav-On-Propane-02.pdf' -> 'public_html/SearlesSavOnPropane/Searles-Sav-On-Propane-02.pdf' 'Searles-Sav-On-Propane-02.pdf' -> 'public_html/Searles-Sav-On-Propane-02.pdf' 'Searles-Sav-On-Propane-03.pdf' -> 'public_html/Searles-Sav-On-Propane-03.pdf' 'Searles-Sav-On-Propane.pdf' -> 'public_html/Searles-Sav-On-Propane.pdf' searles-sav-on-propane@AC0XL-Pi-400:~ $ searles-sav-on-propane@AC0XL-Pi-400:~ $ cd public_html ### change to web page. searles-sav-on-propane@AC0XL-Pi-400:~/public_html $ ls -al total 13972 drwxr-xr-x 3 searles-sav-on-propane www 4096 Apr 8 16:59 . drwxrwxr-x 15 root www 4096 Apr 7 19:17 .. -rw-r--r-- 1 searles-sav-on-propane www 449988 May 25 2021 2021-05-18-Summary-001.pdf -rw-r--r-- 1 searles-sav-on-propane www 239864 Mar 2 2021 BBB-Complaint#15141658.pdf lrwxrwxrwx 1 searles-sav-on-propane www 44 Apr 7 19:12 public_html -> /home/local/www/users/searles-sav-on-propane drwxr-xr-x 2 searles-sav-on-propane www 4096 Jan 22 2021 SearlesSavOnPropane -rw-r--r-- 1 searles-sav-on-propane www 2659499 Jan 22 2021 Searles-Sav-On-Propane-02.pdf -rw-r--r-- 1 searles-sav-on-propane www 863498 Mar 2 2021 Searles-Sav-On-Propane-03.pdf -rw-r--r-- 1 searles-sav-on-propane www 10074778 Dec 29 2020 Searles-Sav-On-Propane.pdf searles-sav-on-propane@AC0XL-Pi-400:~/public_html $ searles-sav-on-propane@AC0XL-Pi-400:~/public_html $ rm -v public_html ### remove symlink from web page. removed 'public_html' searles-sav-on-propane@AC0XL-Pi-400:~/public_html $ searles-sav-on-propane@AC0XL-Pi-400:~/public_html $ ls -al total 13972 drwxr-xr-x 3 searles-sav-on-propane www 4096 Apr 8 17:00 . drwxrwxr-x 15 root www 4096 Apr 7 19:17 .. -rw-r--r-- 1 searles-sav-on-propane www 449988 May 25 2021 2021-05-18-Summary-001.pdf -rw-r--r-- 1 searles-sav-on-propane www 239864 Mar 2 2021 BBB-Complaint#15141658.pdf drwxr-xr-x 2 searles-sav-on-propane www 4096 Jan 22 2021 SearlesSavOnPropane -rw-r--r-- 1 searles-sav-on-propane www 2659499 Jan 22 2021 Searles-Sav-On-Propane-02.pdf -rw-r--r-- 1 searles-sav-on-propane www 863498 Mar 2 2021 Searles-Sav-On-Propane-03.pdf -rw-r--r-- 1 searles-sav-on-propane www 10074778 Dec 29 2020 Searles-Sav-On-Propane.pdf searles-sav-on-propane@AC0XL-Pi-400:~/public_html $ exit ### exit user searles-sav-on-propane. exit pi@AC0XL-Pi-400:/home $ # # # pi@AC0XL-Pi-400:/home $ pi@AC0XL-Pi-400:/home $ ls ac0xl delinquent-accounts documents downloads freedom local memes music notices pi pictures rome searles-sav-on-propane va videos pi@AC0XL-Pi-400:/home $ pi@AC0XL-Pi-400:/home $ su va ### change to user va. Password: va@AC0XL-Pi-400:/home $ va@AC0XL-Pi-400:/home $ cd va@AC0XL-Pi-400:~ $ va@AC0XL-Pi-400:~ $ ls -al total 44 drwxr-xr-x 3 va www 4096 Apr 8 13:49 . drwxr-xr-x 17 root root 4096 Apr 7 19:15 .. -rw-r--r-- 1 va www 0 Apr 7 19:14 .1012 -rw------- 1 va www 76 Apr 8 13:50 .bash_history -rw-r--r-- 1 va www 220 Apr 7 19:12 .bash_logout -rw-r--r-- 1 va www 3523 Apr 7 19:12 .bashrc -rw-r--r-- 1 va www 7 Nov 14 2019 Frank.txt -rw-r--r-- 1 va www 1670 Apr 7 19:12 .mkshrc -rw-r--r-- 1 va www 807 Apr 7 19:12 .profile lrwxrwxrwx 1 va www 24 Apr 7 19:14 public_html -> /home/local/www/users/va -rw-r--r-- 1 va www 16 Jan 2 2021 test.txt -rw-r--r-- 1 va www 3650 Nov 22 2019 va-log.txt drwxr-xr-x 2 va www 4096 Feb 16 2021 VA-Travel-Pay va@AC0XL-Pi-400:~ $ va@AC0XL-Pi-400:~ $ cp -iav * public_html ### copy everything to web page. 'Frank.txt' -> 'public_html/Frank.txt' 'public_html' -> 'public_html/public_html' 'test.txt' -> 'public_html/test.txt' 'va-log.txt' -> 'public_html/va-log.txt' 'VA-Travel-Pay' -> 'public_html/VA-Travel-Pay' 'VA-Travel-Pay/OIG Hotline Contact Form.htm' -> 'public_html/VA-Travel-Pay/OIG Hotline Contact Form.htm' 'VA-Travel-Pay/2019-09-19-VA-Travel-Pay-001.pdf' -> 'public_html/VA-Travel-Pay/2019-09-19-VA-Travel-Pay-001.pdf' 'VA-Travel-Pay/IMG_20191104_110632.jpg' -> 'public_html/VA-Travel-Pay/IMG_20191104_110632.jpg' 'VA-Travel-Pay/va-log.txt' -> 'public_html/VA-Travel-Pay/va-log.txt' va@AC0XL-Pi-400:~ $ va@AC0XL-Pi-400:~ $ cd public_html ### change to web page. va@AC0XL-Pi-400:~/public_html $ va@AC0XL-Pi-400:~/public_html $ ls -al total 24 drwxr-xr-x 3 va www 4096 Apr 8 17:02 . drwxrwxr-x 15 root www 4096 Apr 7 19:17 .. -rw-r--r-- 1 va www 7 Nov 14 2019 Frank.txt lrwxrwxrwx 1 va www 24 Apr 7 19:14 public_html -> /home/local/www/users/va -rw-r--r-- 1 va www 16 Jan 2 2021 test.txt -rw-r--r-- 1 va www 3650 Nov 22 2019 va-log.txt drwxr-xr-x 2 va www 4096 Feb 16 2021 VA-Travel-Pay va@AC0XL-Pi-400:~/public_html $ va@AC0XL-Pi-400:~/public_html $ rm -v public_html ### remove symlink from web page. removed 'public_html' va@AC0XL-Pi-400:~/public_html $ va@AC0XL-Pi-400:~/public_html $ ls -al total 24 drwxr-xr-x 3 va www 4096 Apr 8 17:02 . drwxrwxr-x 15 root www 4096 Apr 7 19:17 .. -rw-r--r-- 1 va www 7 Nov 14 2019 Frank.txt -rw-r--r-- 1 va www 16 Jan 2 2021 test.txt -rw-r--r-- 1 va www 3650 Nov 22 2019 va-log.txt drwxr-xr-x 2 va www 4096 Feb 16 2021 VA-Travel-Pay va@AC0XL-Pi-400:~/public_html $ va@AC0XL-Pi-400:~/public_html $ exit ### exit user va. exit pi@AC0XL-Pi-400:/home $ pi@AC0XL-Pi-400:/home $ pi@AC0XL-Pi-400:/home/local/www/users $ pi@AC0XL-Pi-400:/home/local/www/users $ sudo du -hd2 ### see how much is used in directory users, how much is live on the web. 764K ./music/Songs 43M ./music 79M ./pictures/StMichaelTheArchangelMission 79M ./pictures 14M ./ac0xl/Basiago-Andrew 7.3G ./ac0xl/www 12M ./ac0xl/At-The-Cross 237M ./ac0xl/art 3.9M ./ac0xl/DavidStraight 4.0K ./ac0xl/millennialmillie.com 202M ./ac0xl/logs 113M ./ac0xl/Fifth-master 3.9G ./ac0xl/Color-of-Law 25M ./ac0xl/justiniandeception.wordpress.com 322M ./ac0xl/Dont-Be-Evil 2.9M ./ac0xl/illuminati 788K ./ac0xl/YottaDB.com 12G ./ac0xl 1.4M ./va/VA-Travel-Pay 1.4M ./va 15M ./notices/2021-court 15M ./notices 86M ./downloads/g2churchbooks.org 1.2M ./downloads/Starting at First Base…From Anna – Maine Republic Email Alert_files 268K ./downloads/4laws.com 1.1G ./downloads/RonGibson-Land-Patent 17M ./downloads/2020-09-03-Raspberry-Pi-A-cheat-sheet--TechRepublic_files 14M ./downloads/How to Install OBS Studio on Raspberry Pi OS? (video capture) – RaspberryTips_files 13M ./downloads/AndreasKalcker 908K ./downloads/MMSforum.io 1.6M ./downloads/GitHub - ogra1_mjpg-streamer Snap of the UVC webcam streaming tool_files 1.3G ./downloads 348K ./documents 5.2G ./videos/JustinianDeception 1.1G ./videos/RonGibson-Land-Patent 9.9G ./videos/David-Straight 772M ./videos/MillennialMillie.com 788K ./videos/YottaDB.com 157M ./videos/USB-HDMI-grabber 19G ./videos 31M ./searles-sav-on-propane/SearlesSavOnPropane 45M ./searles-sav-on-propane 245M ./rome/Pope 'Ruler of the World' to go after War Criminals? - Stillness in the Storm_files 246M ./rome/How to Defeat Admiralty Courts And the Law of the (Holy) See - by Judge Dale - Stillness in the Storm_files 13M ./rome/Paths to Awakening Spiritual Activism or Disempowerment | Understanding the Spiritual Causes of Depression - Stillness in the Storm_files 528K ./rome/The Millennium Report-who-really-runs-america_files 9.9M ./rome/(325) David Straight - Winning the courts - YouTube_files 245M ./rome/In Plain Sight The Life and Lies of Jimmy Savile by Dan Davies (2015-04-23) - Stillness in the Storm_files 840K ./rome/Tracing the Occult Origins of Christmas | Shift Frequency_files 246M ./rome/The Sabbatean-Frankist Cult - The Satanic Infiltration of the Western World - Stillness in the Storm_files 2.0M ./rome/Deprivation Of Rights Under Color Of Law_files 688K ./rome/Bergoglio Is A Jesuit Moreso Than Pope | Shift Frequency_files 3.9M ./rome/DavidStraight 3.6M ./rome/Federal Jack – Conspiracy Has Never Been Theory_files 246M ./rome/The UCC Connection - How the Uniform Commercial Code 'secretly took over' the world - Stillness in the Storm_files 664K ./rome/Sex Crimes Committed By Priests | Shift Frequency_files 246M ./rome/Free Money? Utilizing YOUR Treasury Direct Accounts (Birth Certificate_Strawman Trust_Bond) - Stillness in the Storm_files 251M ./rome/Trump On 20th Anniversary Of 9_11 — “America Will Be Made Great Again” - Stillness in the Storm_files 1.2G ./rome/WE are the “Enemies of the State” - Documented Evidence - And How to Change The Status Quo - Stillness in the Storm_files 3.4M ./rome/Practice Of “Satanism” Within The Vatican | Shift Frequency_files 1.7M ./rome/Full text of "The Lieber Code Of 1863.pdf (PDFy mirror)"_files 2.4G ./rome/Judge-Anna-von-Reitz 247M ./rome/Biden Admin Accused of ‘Disrespecting the US’ After Reported Plan to Sell Piece of 9_11 History to Indonesia Emerges - Stillness in the Storm_files 246M ./rome/USA, Inc. Committed Massive Identity Theft | Trust Law Understood - Open Letter to U.S. Treasury Secretary Lew — from Anna von Reitz - Stillness in the Storm_files 688K ./rome/How To Defeat Admiralty Courts And “The Law Of The See” | Shift Frequency_files 708K ./rome/Pope Francis Is In A State Of Panic | Shift Frequency_files 3.1M ./rome/Sexual Abuse Scandal In Australia’s Clergy | Shift Frequency_files 250M ./rome/Legal_Law History of the USA, Inc. 1666-2017 by Anna von Reitz - First Instruction Letter to Donald Trump - Stillness in the Storm_files 245M ./rome/Trust Law How You Became A Commodity - The Creation of Constructive Trusts ... "This power over us is, or is about to become, SLAVERY. We are squarely to blame" - Stillness in the Storm_files 15M ./rome/Why You NEED To Understand the Occult | De-Mystifying the Occult Seminar - The Nature of Sacred Symbolism and Hidden Knowledge by Mark Passio - Stillness in the Storm_files 5.1M ./rome/2021-07-02-18 U.S.C. 242 - Deprivation of rights under color of law - Document in Context - USCODE-2011-title18-partI-chap13-sec242_files 1.3M ./rome/Final Steps Towards Armageddon This is not a Drill, a Conspiracy Theory, or Dan Brown Movie – American Intelligence Media_files 316K ./rome/Admiralty law - Wikipedia_files 5.0M ./rome/The Act of 1871 The “United States” Is a Corporation – There are Two Constitutions – Federal Jack_files 696K ./rome/The Pope Appeareth | Shift Frequency_files 744K ./rome/Jesuits Want Decentralized Global Control | Shift Frequency_files 2.2M ./rome/Source Docs_files 245M ./rome/Statutory Law is based on the Presumption that you are in 'Breach of Trust' - But what Trust are they talking about? - Stillness in the Storm_files 25M ./rome/justiniandeception.wordpress.com 988K ./rome/StopTheCrime_files 884K ./rome/Trump vs. Pope the cowboy vs. the head of Pedophile Central | Shift Frequency_files 1.2G ./rome/How the Cabal Maintains Their Power And What You Need To Do To Stop It - Un-Consent | Beyond BRICS Exposing the Rats - Stillness in the Storm_files 3.2M ./rome/StopTheCrime – StopTheCrime.net_files 245M ./rome/anna von reitz Archives - Stillness in the Storm_files 4.9M ./rome/IT’S ENTIRELY TRUE The Obama Children Were Loaned to Them, Real Parents of Malia and Sasha Identified | SOTN Alternative News, Analysis & Commentary_files 108K ./rome/2021-07-05-[USC05] 18 USC 924 Penalties_files 828K ./rome/Black Magic Satanists Rule The World, Not Politicians, Bankers Or Military Heads | Shift Frequency_files 3.4M ./rome/Who really runs America? – The Millennium Report_files 1.2G ./rome/Accessing your 'Strawman' Account - Filing a UCC1 Financing Statement - Stillness in the Storm_files 9.1G ./rome 732K ./delinquent-accounts/I-Camp-RV-Park-Campground-Green-River-Utah-84525 736K ./delinquent-accounts 324K ./memes 548K ./freedom/freedom-2021-06-15 644K ./freedom/freedom-2020-01-08 328K ./freedom/freedom-2020-10-16 11M ./freedom/freedom-2021-09-13 1.9M ./freedom/freedom-2021-07-12 384K ./freedom/freedom-2021-03-18 11M ./freedom/freedom 33M ./freedom 42G . ### This is the total that is live on the web. pi@AC0XL-Pi-400:/home/local/www/users $ pi@AC0XL-Pi-400:/home/local/www/users $ pi@AC0XL-Pi-400:/home/local/www/users $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 115G 94G 17G 86% / devtmpfs 1.7G 0 1.7G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 759M 996K 758M 1% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock /dev/mmcblk0p1 253M 31M 222M 12% /boot tmpfs 380M 32K 380M 1% /run/user/1000 /dev/sda1 253M 112M 141M 45% /media/pi/system-boot /dev/sda2 917G 560G 321G 64% /media/pi/writable pi@AC0XL-Pi-400:/home/local/www/users $ pi@AC0XL-Pi-400:/home/local/www/users $ pi@AC0XL-Pi-400:/home/local/www/users $ pi@AC0XL-Pi-400:/home/local/www/users $