1
0
mirror of https://github.com/slicer69/doas synced 2024-07-01 06:54:29 +00:00
Commit Graph

11 Commits

Author SHA1 Message Date
Jesse Smith
3b3aef99a1 Fixed error where doas could try to run doas again. 2021-01-25 14:25:28 -04:00
Jesse Smith
b69b314bc1 Merge branch 'master' of https://github.com/slicer69/doas 2021-01-25 14:14:21 -04:00
Jesse Smith
5ac8a3968a Updated vidoas to set ownership of doas.conf file to avoid
ownership changing on macOS.
2021-01-25 14:09:16 -04:00
Jesse Smith
f82b712c16 Added syntax check for file passed to vidoas
script using -n flag.

Restored vidoas script to /usr/local/bin/ from /usr/local/sbin/
to insure it is in common user path.
2020-11-09 11:30:49 -04:00
Kimmo Suominen
f807ff888d Account correctly for the -h option 2020-11-09 11:54:04 +02:00
Kimmo Suominen
b4b963a130 vidoas: Allow specifying file to edit. Add manual page and license.
- Add functionality to edit a file specified on the command line.
- Add `-n` option for running prerequisite checks without editing the
  configuration file.
- Install vidoas in `@PREFIX@/sbin` as it is really more of a system
  maintenance command (run by administrators; requires root privileges
  for editing the default **doas(1)** configuation file).
- Add a manual page (in section `8`).
- Release the code under the same MIT-like license as **doas(1)**
  itself.
2020-11-09 11:43:46 +02:00
Kimmo Suominen
7648f25667 Install doas.conf safely. Define DOAS_CONF only once.
- Use mv(1) to install doas.conf to avoid writing a configuration file
  while other processes might be reading it.
- Define the DOAS_CONF path once in Makefile and pass that to the
  substitutions instead of recreating the full path independently in
  multiple files.
- Add a separate rule for building the doas binary, instead of creating
  it in the "all" target.  This avoids some unnecessary re-linking.
2020-11-09 00:12:50 +02:00
Jesse Smith
eca76b6339 Minor update to vidoas script to avoid "-r" flag in stal
command which does not appear to be portable outside NetBSD.
2020-11-01 19:37:02 -04:00
Kimmo Suominen
f2894542a6 vidoas: Address security concerns and improve some behaviour
I'm not claiming this script is now safe. It would certainly benefit
from additional review. I do think (and hope) that I did not make things
worse, at least.

It might be better to look at vipw(8) or visudo(8), which both are
written in C, for prior art on how to do this kind of thing securely.

Security changes:

- Exit on errors and if referencing unset variables.

- Set PATH so that we don't run unintended commands from the PATH that
  is in the caller's environment.

- Set umask to prevent other users from having write access to the
  temporary files.

- Use /var/tmp instead of /tmp, as /tmp is not shared between users on
  all systems. (So trying to install a file from /tmp as root would not
  find the file, if the user running vidoas is not root.)

  XXX: Using /var/tmp does not guarantee this either, but is more likely
  to work.

- Create a temporary file for editing and use ln(1) to acquire the lock.
  This addresses a race condition between checking for the lock file and
  creating it.

- Use "install -r" to avoid a truncated doas.conf from existing as would
  happen with cp (or install without the "-r" option).

  XXX: "install -r" is not portable.

- Use "install -m" to set the mode of the installed doas.conf file.

Changes to user experience:

- Don't check for executability of ${EDITOR} as it is not required to be
  an absolute path to the executable.

- Don't install an unchanged doas.conf file.

- Don't install an empty doas.conf file.

- The above two checks result in a no-op in the case that ${EDITOR}
  could not be run.

- Present the user with a choice of fixing errors or canceling changes.

- Output diagnostic messages to stderr (just like other tools do, e.g.
  doas, ln, and cp).

TODO:

- Avoid using hard-coded paths (/usr/local/bin and /usr/local/etc).
  They should be replaced with @PREFIX@/bin and @SYSCONFDIR@ before
  installing.
2020-10-22 11:23:56 +03:00
Jesse Smith
08872e70c9 Added explanation of what vidoas does to the top of the script. 2020-08-07 18:42:52 -03:00
Jesse Smith
e4d73c97a3 Added a new shell script called vidoas. This script creates a temporary
version of the doas.conf file. Then allows the user to edit it.
The new configuration file is checked for syntax and then, if it passes,
is installed on the system. If the syntax check fails the user is asked
to fix any errors.
2020-08-07 18:18:40 -03:00