URI:
       HOW TO INVOKE ZZZ WITHOUT SUDO
       
       Notice
       ------------------------------------------------------------
       Update: <2023-09-11 Mon 21:38>
       
       The method originally outlined in this article ("Learning to
       sleep") for invoking `zzz' without `sudo' is flawed. Because
       the `/sys/' folder is regenerate each boot, the group and
       permission modifications not persist through a reboot
       cycle. This is a lesson learned for me, and another
       interesting detail about Linux uncovered.
       
       A better way of making `zzz' easier to invoke (still with
       sudo, inevitably) is by adding your user to the `wheel'
       group and modifying `/etc/sudoers' to allow `wheel' group
       members to execute commands without a password.
       
       ,----
       |    usermod -aG wheel roygbyte
       |    ed /etc/sudoers
       |    > 83
       |    > s/#//
       |    > wq
       |    # For those not using ed(1): remove # from line that reads
       |    # `#%wheel ALL=(ALL:ALL) NOPASSWD: ALL`
       `----
       
       You can test this by logging into a new shell or logging
       in/out of your X session.
       
       Adding an alias to `.bashrc' would make it possible to at
       least hide the use of `sudo', if that's still desired.
       
       ,----
       |   alias zzz='sudo zzz'
       `----
       
       Easier still is to add a key binding to `/.config/i3/config'
       to sleep the computer while while in `i3':
       
       ,----
       |   bindsym $mod+Shift+l exec sudo zzz
       `----
       
       
       Learning to sleep
       ------------------------------------------------------------
       As mentioned above, this method doesn't work. I'm keeping it
       up anyways.
       
       `zzz' is a clever program for putting your computer to
       sleep. It has a cute name, a nice man page with descriptions
       of various computer sleep states, and straight forward error
       reporting. It was available to me out-of-the-box on Void,
       although I didn't find out about it right away.
       
       Before I started using `zzz', I would put my computer to
       sleep by writing directly to `/sys/power/state'. For
       instance:
       
       ,----
       |   $ sudo echo -n disk > /sys/power/state
       `----
       
       Though arduous, learning this sequence of commands let me
       better understand how `/sys' files represent different parts
       of the computer, how writing to these files can cause
       certain things to happen, and how reading from these files
       can provide information about the system.
       
       Soon enough I needed a faster way to put my computer to
       sleep. I learned about `zzz' through a search or maybe the
       Void documentation. (I don't remember). I started using it
       right away. Immediately I got an error:
       
       ,----
       |   $ zzz
       |   zzz: sleep permission denied
       |   # Error explained in man page: "You lack sufficent privilege to write to /sys/power/state."
       `----
       
       I got around this by invoking `zzz' using `sudo'. But typing
       my password in each time I wanted my computer to snooze
       became irritating. I figured there must be a better way!
       
       I'd been reading a bit about SysV during this
       time. Something must have clicked because I realized I could
       probably change the ownership permissions of the file in
       such a way that my account would be able to invoke `zzz'
       without `sudo'.
       
       On a lark, I started fooling around to see how to do
       this. First, I `ll''d the file in question, revealing
       `root:root' ownership and `rw-r--r--' permissions. That
       would explain the requirement for `sudo'. Next I looked into
       `/etc/groups' to see if there were any system-y type groups
       I could use in lieu of `root' for the file. I didn't find
       any, so I decided I'd create one called `sys'. I'd use this
       group to extend permissions for files in `/sys/*', starting
       with `power/state' and including other files over time as
       need be. Then it was a simple matter of invoking `chmod',
       `chown', and `usermod' to put everything together. See the
       next section for a step-by-step how-to.
       
       
       How-to
       ------------------------------------------------------------
       Here's how I made `zzz' available to my user without having
       to invoke `sudo'.
       
       Frist, create a new group called `sys'. (You could use any
       group name, of course. `cis', `cyst', and `sis' are all
       great alternatives.)
       
       ,----
       |   $ groupadd sys
       `----
       
       Add your user account into the group.
       
       ,----
       |   $ usermod -aG sys roygbyte
       `----
       
       Change the group for `/sys/power/state'.
       
       ,----
       |   $ chown :sys /sys/power/state
       `----
       
       Adjust the permissions of `/sys/power/state', adding write
       permissions for the `sys' group.
       
       ,----
       |   $ chmod g+w /sys/power/state
       `----
       
       You should now have something like this:
       
       ,----
       |   -rw-rw-r-- 1 root sys 4096 Aug 30 08:30 /sys/power/state
       `----
       
       You can test it worked by logging into a new shell.
       
       ,----
       |   $ su roygbyte
       |   $ groups
       |   > roygbyte : roygbyte sys ...
       |   $ zzz
       `----
       
       For the new group to be available in all existing logged in
       shells you must exit and log back into your session.
       
       That's it.
       
       Happy computer dreaming!
       
       
       Adding hooks
       ............................................................
       Hooks run as user zzz-user-hooks pxkg
       
       
       Colophon
       ------------------------------------------------------------
       I was inspired to write this post by Solene, whose gopher
       hole includes lots of little computer hints and
       tutorials. Indeed--no bit of computer how-do'er-y is too
       small to be worth writing about!
       
       Thanks to feranur, luca, ahesford, from libera#voidlinux for
       improving this teeny article with suggestions,
       grammar-checks, and alternative approaches.