Comments (4)
I don't think the /path/to/save
is much useful for the lookup
. The user could use the module attachment
for that.
In the backend, if we don't want to add more dependency, I would say we could try either /run
or /var/run
if they exist then check for [/var]/run/user/${uid}
if it exists, then check if it is a tmpfs
. If any of them fail we can then default to the native python temp dir and print a warning message. I believe most distros will support that.
from ansible-keepass.
You are right. But I would not like to add one more dependency.
Maybe it would be good to add an optional argument for destination path to save an attachment file. If it not specified, it will be saved to a temporary directory as it was for backwards compatibility.
For example, attachment: "{{ lookup('viczem.keepass.keepass', 'path/to/entry', 'attachments', 'a_file_name', '/path/to/save') }}"
from ansible-keepass.
I thought it best to leave it as is.
- /tmp in many linux distributions by default has tmpfs
- /run/user/${uid} directory is used by systemd, and not all linux distributions use it. For example, when run ansible in docker container based on Alpine
- /var and other directories could be mounted from external source
- there is no point to trust tmpfs because it could be mounted from an external source
So adding an optional argument for destination path as I mentioned above, is a best choice.
from ansible-keepass.
I don't think /tmp
defaults to tmpfs
on non-docker environments. Here is my Fedora partition for reference:
$ df -hT
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 14G 796K 14G 1% /dev/shm
tmpfs tmpfs 5.5G 2.2M 5.5G 1% /run
/dev/nvme0n1p9 btrfs 599G 87G 511G 15% /
tmpfs tmpfs 14G 112K 14G 1% /tmp
/dev/nvme0n1p9 btrfs 599G 87G 511G 15% /home
/dev/nvme0n1p8 ext4 974M 320M 587M 36% /boot
/dev/nvme0n1p2 vfat 127M 51M 76M 40% /boot/efi
/run/user/${uid} directory is used by systemd
Indeed and it is a good reason why they do so. Various other components use it, e.g. here is another snapshot of mine:
$ ls /run/user/${UID}/doc/by-app/
chat.schildi.desktop com.slack.Slack org.zulip.Zulip us.zoom.Zoom
You can find attachment files in there for example. Granted there is a limitation of the size allocated, but you should not have GBs of attachment files.
/var and other directories could be mounted from external source
The issue that can be mitigated is when the drives are extracted and re-mounted, e.g. the drives are sold after hardware upgrade. In this case you can trivially get root access and read any files. That would not be the case for the ram mounted tmpfs
.
There are of course more complicated setups, e.g. in HPC /tmp
can often be shared across compute nodes, MIM attacks on NFS mounts, etc.
I think it would be a good practice default to set it to some /run/user
tmpfs over a less standardized /tmp
. Of course we can have it fallback like in the docker setups where everything is already containerized.
from ansible-keepass.
Related Issues (20)
- Entry <name> not found HOT 2
- python-pykeepass 4.0.0 HOT 2
- global name 'FileNotFoundError' HOT 1
- FileNotFoundError: [Errno 2] No such file or directory: '/tmp/ansible-keepass-6d5c20be.sock' HOT 20
- Plugin does not suppport lookup of properties/attributes with several lines HOT 5
- Add module to collection for writing attachments to file system HOT 5
- Password shall not be mandatory for opening the db
- KeePass: socket connection failed when used in parallel HOT 2
- backslashes are being escaped in password HOT 2
- Concurrent access on testing socket file and creating associated process HOT 7
- Using a kbdx over https HOT 1
- Socket location HOT 2
- Support for database editting HOT 3
- Implementation as cache plugin HOT 6
- Unable to get attachments HOT 1
- custom_properties - long chain are truncated
- Search for DB entry by title/url + regex HOT 4
- Recover the attachment contents directly HOT 1
- python-pykeepass v4.0.7 - No module named 'pykeepass.kdbx_parsing'" HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ansible-keepass.