Compare commits

...

8 Commits

Author SHA1 Message Date
Melroy van den Berg
91adbbe183 Update copyright in translation source 2024-01-26 00:38:37 +01:00
Melroy van den Berg
766cd27c1b Update copyright lines 2024-01-26 00:38:13 +01:00
Narrat
dee2b0f8c4 list_processes: use lsof to list processes
Parsing the output from lsof had possibilities for race conditions.
Either due to short lived processes or issuing "tomb ps" from a terminal which cwd is from inside the tomb.
This would spit out available users on the system.
To avoid this use the lsof output directly.

In the future formatting could be reintroduced via commands like
"lsof +D "$tombmount" -F Lc" or "lsof +D "$tombmount" -F Lc0".

This fixes #503
2024-01-26 00:37:46 +01:00
nerun
13eeef7c6c manpage: replaced 'mlocate' to 'mlocate/plocate', because of commit 59d7331. 2024-01-26 00:30:58 +01:00
nerun
194d60fe9a manpage: better formatting of .EX/.EE macros 2024-01-26 00:30:58 +01:00
nerun
7f91cc917d manpage: fixed typo in "bind-hooks" 2024-01-26 00:30:58 +01:00
nerun
09d981f0fc manpage: 80 columns line break in PASSWORD INPUT. 2024-01-26 00:30:58 +01:00
vladislav doster
e1afecb832 fix: remove duplicate help in subcommands_opts 2024-01-26 00:28:50 +01:00
3 changed files with 34 additions and 44 deletions

View File

@ -69,7 +69,7 @@ Linux documentation. The \fI--filesystem\fR option can be used to
specify an alternative filesystem used to format the tomb, specify an alternative filesystem used to format the tomb,
in place of the default "ext4". This operation requires root in place of the default "ext4". This operation requires root
privileges to loopback mount, format the tomb (using LUKS and mkfs), privileges to loopback mount, format the tomb (using LUKS and mkfs),
then set the key in its first LUKS slot. then set the key in its first LUKS slot.
.RS .RS
Supported filesystems for \fI--filesystem\fR: Supported filesystems for \fI--filesystem\fR:
@ -122,7 +122,7 @@ internally to enumerate processes running in one or all tombs.
.IP "index" .IP "index"
Creates or updates the search indexes of all tombs currently open: Creates or updates the search indexes of all tombs currently open:
enables use of the \fIsearch\fR command using simple word patterns on enables use of the \fIsearch\fR command using simple word patterns on
file names. Indexes are created using mlocate's updatedb(8) and file names. Indexes are created using mlocate/plocate's updatedb(8) and
swish-e(1) if they are found on the system. Indexes allow one to search swish-e(1) if they are found on the system. Indexes allow one to search
very fast for filenames and contents inside a tomb, they are stored very fast for filenames and contents inside a tomb, they are stored
inside it and are not accessible if the Tomb is closed. To avoid inside it and are not accessible if the Tomb is closed. To avoid
@ -132,7 +132,7 @@ indexing a specific tomb simply touch a \fI.noindex\fR file in it.
.IP "search" .IP "search"
Takes any string as argument and searches for them through all tombs Takes any string as argument and searches for them through all tombs
currently open and previously indexed using the \fIindex\fR command. currently open and previously indexed using the \fIindex\fR command.
The search matches filenames if mlocate is installed and then also The search matches filenames if mlocate/plocate is installed and then also
file contents if swish++ is present on the system, results are listed file contents if swish++ is present on the system, results are listed
on the console. on the console.
@ -375,7 +375,7 @@ base root of the tomb.
.IP "bind-hooks" .IP "bind-hooks"
This hook file consists of a simple text file named \fIbind-hooks\fR This hook file consists of a simple text file named \fIbind-hooks\fR
containing a two column list of paths to files or directories inside containing a two column list of paths to files or directories inside
the tomb. The files and directories will be be made directly the tomb. The files and directories will be made directly
accessible by the tomb \fIopen\fR command inside the current user's accessible by the tomb \fIopen\fR command inside the current user's
home directory. Tomb uses internally the "mount \-o bind" command to home directory. Tomb uses internally the "mount \-o bind" command to
bind locations inside the tomb to locations found in $HOME. In the bind locations inside the tomb to locations found in $HOME. In the
@ -383,10 +383,10 @@ first column are indicated paths relative to the tomb and in the
second column are indicated paths relative to $HOME contents, for second column are indicated paths relative to $HOME contents, for
example: example:
.EX .EX
mail mail mail mail
.gnupg .gnupg .gnupg .gnupg
.fmrc .fetchmailrc .fmrc .fetchmailrc
.mozilla .mozilla .mozilla .mozilla
.EE .EE
.B .B
@ -417,8 +417,8 @@ whole system's security: just add such a line to \fI/etc/sudoers\fR:
To avoid that tomb execution is logged by \fIsyslog\fR also add: To avoid that tomb execution is logged by \fIsyslog\fR also add:
.EX .EX
Cmnd_Alias TOMB = /usr/local/bin/tomb Cmnd_Alias TOMB = /usr/local/bin/tomb
Defaults!TOMB !syslog Defaults!TOMB !syslog
.EE .EE
.SH PASSWORD INPUT .SH PASSWORD INPUT
@ -469,16 +469,21 @@ prefix all invocations of tomb with a blank space, including two lines
in ".zshrc": in ".zshrc":
.EX .EX
export HISTIGNORESPACE=1 export HISTIGNORESPACE=1
alias tomb=' tomb' alias tomb=' tomb'
.EE .EE
.SH PASSWORD INPUT .SH PASSWORD INPUT
Tomb uses the external program "pinentry" to let users type the key password into a terminal or a graphical window. This program works in conjunction with "gpg-agent", a daemon running in background to facilitate secret key management with gpg. It is recommended one runs "gpg-agent" launching it from the X session initialization ("~/.xsession" or "~/.xinitrc" files) with this command: Tomb uses the external program "pinentry" to let users type the key password
into a terminal or a graphical window. This program works in conjunction with
"gpg-agent", a daemon running in background to facilitate secret key
management with gpg. It is recommended one runs "gpg-agent" launching it from
the X session initialization ("~/.xsession" or "~/.xinitrc" files) with this
command:
.EX .EX
eval $(gpg-agent --daemon --write-env-file "${HOME}/.gpg-agent-info") eval $(gpg-agent --daemon --write-env-file "${HOME}/.gpg-agent-info")
.EE .EE
In the future it may become mandatory to run gpg-agent when using tomb. In the future it may become mandatory to run gpg-agent when using tomb.
@ -500,7 +505,7 @@ commands: \fIopen\fR, \fIforge\fR \fIsetkey\fR, \fIpasswd\fR,
Using the package libsphinx Using the package libsphinx
.UR https://github.com/stef/libsphinx .UR https://github.com/stef/libsphinx
.UE .UE
and its python client/daemon implementation pwdsphinx and its python client/daemon implementation pwdsphinx
.UR https://github.com/stef/pwdsphinx .UR https://github.com/stef/pwdsphinx
.UE .UE
is possible to store and retrieve safely the password that locks the is possible to store and retrieve safely the password that locks the
@ -565,11 +570,11 @@ keeping all its profile data inside it:
cat <<EOF > /media/FOX.tomb/exec-hooks cat <<EOF > /media/FOX.tomb/exec-hooks
#!/bin/sh #!/bin/sh
if [ "$1" = "open" ]; then if [ "$1" = "open" ]; then
firefox -no-remote -profile "$2"/firefox-pro & firefox -no-remote -profile "$2"/firefox-pro &
fi fi
EOF EOF
chmod +x /media/FOX.tomb/exec-hooks chmod +x /media/FOX.tomb/exec-hooks
mkdir /media/FOX.tomb/firefox-pro mkdir /media/FOX.tomb/firefox-pro
.EE .EE
.IP \(bu .IP \(bu
@ -580,13 +585,13 @@ Script a tomb to archive Pictures using Shotwell, launching it on open:
cat <<EOF > /media/Pictures.tomb/bind-hooks cat <<EOF > /media/Pictures.tomb/bind-hooks
Pictures Pictures Pictures Pictures
EOF EOF
cat <<EOF > /media/Pictures.tomb/exec-hooks cat <<EOF > /media/Pictures.tomb/exec-hooks
#!/bin/sh #!/bin/sh
if [ "$1" = "open" ]; then if [ "$1" = "open" ]; then
which shotwell > /dev/null which shotwell > /dev/null
if [ "$?" = "0" ]; then if [ "$?" = "0" ]; then
shotwell -d "$2"/Pictures/.shotwell & shotwell -d "$2"/Pictures/.shotwell &
fi fi
fi fi
EOF EOF
chmod +x /media/Pictures.tomb/exec-hooks chmod +x /media/Pictures.tomb/exec-hooks

View File

@ -1,6 +1,6 @@
# Tomb - The Crypto Undertaker. # Tomb - The Crypto Undertaker.
# Copyright (C) 2007-2014 Dyne.org Foundation # Copyright (C) 2007-2024 Dyne.org Foundation
# Denis Roio <jaromil@dyne.org>, 2013. # Denis Roio <jaromil@dyne.org>, 2013.
# #
#, fuzzy #, fuzzy
@ -1123,7 +1123,7 @@ msgid "Tomb ::1 version:: - a strong and gentle undertaker for your secrets"
msgstr "" msgstr ""
#: tomb:Main routine:main:2806 #: tomb:Main routine:main:2806
msgid " Copyright (C) 2007-2017 Dyne.org Foundation, License GNU GPL v3+" msgid " Copyright (C) 2007-2024 Dyne.org Foundation, License GNU GPL v3+"
msgstr "" msgstr ""
#: tomb:Main routine:main:2807 #: tomb:Main routine:main:2807

23
tomb
View File

@ -7,7 +7,7 @@
# {{{ License # {{{ License
# Copyright (C) 2007-2023 Dyne.org Foundation # Copyright (C) 2007-2024 Dyne.org Foundation
# #
# Tomb is designed, written and maintained by Denis Roio <jaromil@dyne.org> # Tomb is designed, written and maintained by Denis Roio <jaromil@dyne.org>
# #
@ -3192,10 +3192,8 @@ umount_tomb() {
list_processes() { list_processes() {
# $1 = (optional) name of tomb # $1 = (optional) name of tomb
# returns a list of process UIDs, one per line # runs lsof on the mounted_tombs
local mounted_tombs i local mounted_tombs i
local pnum puid pcmd powner found
found=0
mounted_tombs=(`list_tomb_mounts $1`) mounted_tombs=(`list_tomb_mounts $1`)
if [[ "${#mounted_tombs}" -gt 0 ]]; then if [[ "${#mounted_tombs}" -gt 0 ]]; then
if [[ -z $1 ]]; then if [[ -z $1 ]]; then
@ -3207,21 +3205,9 @@ list_processes() {
for i in ${mounted_tombs}; do for i in ${mounted_tombs}; do
_verbose "scanning tomb: ::1 tombmount::" $i _verbose "scanning tomb: ::1 tombmount::" $i
tombmount="${i[(ws:;:)2]}" tombmount="${i[(ws:;:)2]}"
tombname=${i[(ws:;:)5]} _sudo lsof +D "${i[(ws:;:)2]}"
for pnum in ${(f)"$(_sudo lsof -t +D "$tombmount")"}; do
found=$(($found + 1))
_verbose "process found: $pnum"
puid=$(cat /proc/${pnum}/loginuid)
pcmd=$(cat /proc/${pnum}/cmdline)
powner=`_get_username $puid`
_verbose "process found: $pnum $pcmd ($powner)"
_message "::1 tombname:: ::2 cmd:: (::3 owner::)" \
$tombname $pcmd $powner
done
done done
fi fi
_message "::1 foundproc:: running processes found inside ::2 numtombs:: open tombs" \
$found ${#mounted_tombs}
return 0 return 0
} }
@ -3335,7 +3321,6 @@ main() {
subcommands_opts[index]="" subcommands_opts[index]=""
subcommands_opts[search]="" subcommands_opts[search]=""
subcommands_opts[help]=""
subcommands_opts[bury]="k: -tomb-pwd: r: R: -sphx-host: -sphx-user: " subcommands_opts[bury]="k: -tomb-pwd: r: R: -sphx-host: -sphx-user: "
subcommands_opts[exhume]="k: -tomb-pwd: r: R: -sphx-host: -sphx-user: " subcommands_opts[exhume]="k: -tomb-pwd: r: R: -sphx-host: -sphx-user: "
subcommands_opts[cloak]="k: " subcommands_opts[cloak]="k: "
@ -3590,7 +3575,7 @@ main() {
__default) __default)
_print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION _print "Tomb ::1 version:: - a strong and gentle undertaker for your secrets" $VERSION
echo echo
_print " Copyright (C) 2007-2021 Dyne.org Foundation, License GNU GPL v3+" _print " Copyright (C) 2007-2024 Dyne.org Foundation, License GNU GPL v3+"
_print " This is free software: you are free to change and redistribute it" _print " This is free software: you are free to change and redistribute it"
_print " For the latest sourcecode go to <http://dyne.org/software/tomb>" _print " For the latest sourcecode go to <http://dyne.org/software/tomb>"
echo echo