aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-06-26main: add "-o" option to enable "suid" and "dev"Jakob Unterwurzacher
Device files and suid binaries are often not needed when running gocryptfs as root. As they are potentially dangerous, let the user enable them explicitely via the new "-o" option instead of always enabling them when running as root.
2016-06-26main, fusefrontend: enable suid functionalityJakob Unterwurzacher
FUSE filesystems are mounted with "nosuid" by default. If we run as root, we can use device files by passing the opposite mount option, "suid". Also we have to use syscall.Chmod instead of os.Chmod because the portability translation layer "syscallMode" messes up the sgid and suid bits. Fixes 70% of the failures in xfstests generic/193. The remaining are related to truncate, but we err on the safe side: $ diff -u tests/generic/193.out /home/jakob/src/fuse-xfstests/results//generic/193.out.bad [...] check that suid/sgid bits are cleared after successful truncate... with no exec perm before: -rwSr-Sr-- -after: -rw-r-Sr-- +after: -rw-r--r--
2016-06-26main: enable device files when running as rootJakob Unterwurzacher
FUSE filesystems are mounted with "nodev" by default. If we run as root, we can use device files by passing the opposite mount option, "dev". Fixes xfstests generic/184.
2016-06-26fusefronted: preserve owner if running as rootJakob Unterwurzacher
If allow_other is set and we run as root, try to give newly created files to the right user.
2016-06-26fuserfrontend: support truncate(2) by wrapping ftruncate(2)Jakob Unterwurzacher
Support truncate(2) by opening the file and calling ftruncate(2) While the glibc "truncate" wrapper seems to always use ftruncate, fsstress from xfstests uses this a lot by calling "truncate64" directly.
2016-06-26tests: add missing file "example_test_helpers.go"Jakob Unterwurzacher
This file was forgotten in commit "tests: make tests for unsupported FSs more compact".
2016-06-23README: fix copy-paste errorJakob Unterwurzacher
2016-06-23README: Note that v0.6 filesystems can no longer be mountedJakob Unterwurzacher
2016-06-23Drop deprecated "-gcmiv128" optionJakob Unterwurzacher
The GCMIV128 feature flag is already mandatory, dropping the command line option is the final step. Completes https://github.com/rfjakob/gocryptfs/issues/29 .
2016-06-23tests: make tests for unsupported FSs more compactJakob Unterwurzacher
There is no need to test that deprecated command-line options produce an error. I trust the flags package. Also split the example_filesystem helper functions into a separate file.
2016-06-23Drop deprecated "-emenames" optionJakob Unterwurzacher
The EMENames feature flag is already mandatory, dropping the command line option is the final step.
2016-06-23nametransform: drop unused noiv functionsJakob Unterwurzacher
As DirIV is now mandatory there is no user for the noiv functions.
2016-06-23Drop deprecated "-diriv" optionJakob Unterwurzacher
The DirIV feature flag is already mandatory, dropping the command line option is the final step.
2016-06-23tests: add v0.7-plaintextnames example filesystemJakob Unterwurzacher
The v0.6-plaintextnames example FS lacks the GCMIV128 feature flag, is no longer mountable and can no longer be used for testing. Add a new "-plaintextnames" filesystem created by gocryptfs v0.7. There have been no format changes to "-plaintextnames" since then.
2016-06-19build.bash: check if the go-fuse tree is dirtyJakob Unterwurzacher
If it is, append "-dirty" to the hash.
2016-06-19tests: expect mount failure for v0.6 and older example filesystemsJakob Unterwurzacher
2016-06-19Refuse mounting of v0.6 and older filesystemsJakob Unterwurzacher
2016-06-19main: drop "on-disk format" from -version output, add Go versionJakob Unterwurzacher
As v0.4 introduced ext4-style feature flags, the on-disk format version is unlinkely to change. Drop it from the version output to reduce clutter. Use "gocryptfs -version -debug" to see it. Add the Go version string because only Go 1.6 and newer have an optimized AES-GCM implementation. This will help users to understand the performance of their build.
2016-06-19README: abbreviate ticket #29 linkJakob Unterwurzacher
2016-06-19README: release v0.12v0.12Jakob Unterwurzacher
2016-06-19travis: skip tests on go1.3.3Jakob Unterwurzacher
Go 1.3.3 does not support testing.M, so skip the tests there.
2016-06-16README: mention stdin passwordsJakob Unterwurzacher
2016-06-16README: list changes for v0.12 but don't add release dateJakob Unterwurzacher
The release of v0.12 is delayed to give people more time to upgrade using "mv" or "rsync --remove-source-files".
2016-06-16tests: adapt for read-only operationJakob Unterwurzacher
The v0.6 and older example filesystem are mounted read-only because they are deprecated, so skip the read-write tests.
2016-06-16Mount v0.6 and older filesystems as read-onlyJakob Unterwurzacher
This is part of the phase-out of very old filesystems. See https://github.com/rfjakob/gocryptfs/wiki/Compatibility for more info.
2016-06-16tests: update config_test example filesJakob Unterwurzacher
Recreate the files so they carry all feature flags. Also, create them with "-scryptn 10" to speed up the tests.
2016-06-16tests: exit with correct error code from TestMainJakob Unterwurzacher
extpass_test and example_filesystems_test did it wrong, always returning 0.
2016-06-16Add "-ro" (read-only) flagJakob Unterwurzacher
From the man page: **-ro** : Mount the filesystem read-only Also add a test.
2016-06-16tests: add InitFS helperJakob Unterwurzacher
2016-06-16readpassword: clean up leftover debug commitJakob Unterwurzacher
2016-06-16Rename nametransform, contentenc source filesJakob Unterwurzacher
Let's have shorter names, and merge *_api.go into the "main" file. No code changes.
2016-06-15Rename internal "toggledlog" package to "tlog"Jakob Unterwurzacher
tlog is used heavily everywhere and deserves a shorter name. Renamed using sed magic, without any manual rework: find * -type f -exec sed -i 's/toggledlog/tlog/g' {} +
2016-06-15toggledlog: assume command of color handlingJakob Unterwurzacher
We want to use colored error messages also outside of main, so let's handle it in the logging package. The fatal logger now automatically prints red.
2016-06-15readpassword: create internal package for password readingJakob Unterwurzacher
* Supports stdin * Add tests for extpass and stdin As per user request at https://github.com/rfjakob/gocryptfs/issues/30
2016-06-14tests: spin off TestPasswd from TestInitJakob Unterwurzacher
Also, capture all stderr and stdout but pass "-q". This way we get to see error messages if there are any, or spurious output when there should be none due to "-q".
2016-06-14build.bash: fail early if the go binary does not existJakob Unterwurzacher
This used to fail in an ugly way: $ ./build.bash ./build.bash: line 13: go: command not found ./build.bash: line 15: [: too many arguments ./build.bash: line 20: go: command not found
2016-06-14Fix warnings reported by Go 1.6 "go tool vet -shadow=true"Jakob Unterwurzacher
Warnings were: main.go:234: declaration of err shadows declaration at main.go:163: internal/fusefrontend/file.go:401: declaration of err shadows declaration at internal/fusefrontend/file.go:379: internal/fusefrontend/file.go:419: declaration of err shadows declaration at internal/fusefrontend/file.go:379: internal/fusefrontend/fs_dir.go:140: declaration of err shadows declaration at internal/fusefrontend/fs_dir.go:97:
2016-06-10README: fix v0.11 release dateJakob Unterwurzacher
2016-06-10README: Mention Go 1.6.2Jakob Unterwurzacher
2016-06-10Update README for v0.11v0.11Jakob Unterwurzacher
2016-06-09fusefrontend: Utimens: convert ENOENT to EBADFJakob Unterwurzacher
If /proc/self/fd/X did not exist, the actual error is that the file descriptor was invalid. go-fuse's pathfs prefers using an open fd even for path-based operations but does not take any locks to prevent the fd from being closed. Instead, it retries the operation by path if it get EBADF. So this change allows the retry logic to work correctly. This fixes the error rsync: failed to set times on "/tmp/ping.Kgw.mnt/linux-3.0/[...]/.dvb_demux.c.N7YlEM": No such file or directory (2) that was triggered by pingpong-rsync.bash.
2016-06-09test: add pingpong.bash and pingping-rsync.bashJakob Unterwurzacher
Mounts two gocryptfs filesystems, "ping" and "pong" and moves the linux-3.0 kernel tree back and forth between them. When called as "pingpong-rsync.bash" it uses "rsync --remove-source-files" for moving the files, otherwise plain "mv".
2016-06-08fusefrontend: fix chown on dangling symlinksJakob Unterwurzacher
We (actually, go-fuse) used to call Chown() instead of Lchown() which meant that the operation would fail on dangling symlinks. Fix this by calling os.Lchown() ourself. Also add a test case for this.
2016-06-08tests: rename extractloop.md5sums to linux-3.0.md5sumsJakob Unterwurzacher
This file will also be used by other tests, so it should have a generic name.
2016-06-08Add performance numbers for v0.11Jakob Unterwurzacher
2016-06-07Update TODO fileJakob Unterwurzacher
Most entries have already been implemented a while ago.
2016-06-07tests: split example_filesystems into its own packageJakob Unterwurzacher
Running these tests from integration_tests' TestMain() was awkward because they were run twice with unchanged settings. integration_tests tests everything with OpenSSL and with native Go crypto, but this does not take affect for the example filesystems. To make this work, test_helpers is also split into its own package.
2016-06-06configfile: warn about missing feature flagsJakob Unterwurzacher
The plan is to drop support for the oldest filesystem versions in gocryptfs v1.0. For now, we only warn the user.
2016-06-06tests: error out properly on mount failureJakob Unterwurzacher
In TestMain we call os.Exit as before, but inside actual tests we now call t.Fatal().
2016-06-05toggledlog: convert remaing naked fmt.Print*Jakob Unterwurzacher
Several fatal errors were just printed to stdout, which meant they were invisible when running the test suite. Fix this by introducing toggledlog.Fatal and convert as follows: Fatal errors -> toggledlog.Fatal Warnings -> toggledlog.Warn Password prompts -> fmt.Fprintf