Windows and Linux compatible chmod
Project description
oschmod
Python chmod that works on Windows and Linux
Use oschmod to set permissions for files and directories on Windows, Linux and macOS. While Python's standard libraries include a simple command to do this on Linux and macOS (os.chmod()
), the same command does not work on Windows.
- Read more about oschmod on Medium
- For more background, have a look at the oschmod Wiki.
Usage
The problem is that on Linux and macOS, you can easily set distinct permissions for a file's owner, group, and all others. It takes one command and one mode, or, in other words, a number representing bitwise permissions for reading, writing, and executing. On Linux and macOS, you use the os
module and os.chmod()
.
Misleadingly, on Windows, os.chmod()
does not have the same effect and does not give a warning or error. You think you've protected a file but you have not.
For example, on Linux or macOS, to give a file owner read, write, and execute permissions and deny the group and others any permissions (i.e., equivalent of 700
), you can make a single call:
import os
import stat
os.chmod('myfile', stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
Running the same command on Windows does not achieve the same results. The owner isn't given any permissions and the group and others are not denied any permissions. All you can do is restrict anyone from deleting, changing or renaming the file. That's nothing like what os.chmod()
does.
However, using oschmod you can use the same command on Windows, macOS or Linux and get the same results:
import oschmod
oschmod.set_mode('myfile', stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
Installation
$ pip install oschmod
Changelog
0.2.2
Commit Delta: Change from 0.2.0 release
Released: 2020.04.21
Summary:
- Fix issue with account lookup failing with error (
No mapping between account names and security IDs was done.
).
0.2.0
Commit Delta: Change from 0.1.5 release
Released: 2020.04.20
Summary:
- Add recursive version of
oschmod.set_mode()
:oschmod.set_mode_recursive()
0.1.5
Commit Delta: Change from 0.1.4 release
Released: 2020.04.17
Summary:
- Create Linux version of permissions test (
oschmod.perm_test()
)
0.1.4
Commit Delta: Change from 0.1.0 release
Released: 2020.04.17
Summary:
- Revise Windows to keep permissions an object already has for SYSTEM/NT AUTHORITY and don't include those permissions in mode calculation.
- Fix various minor cosmetic issues.
0.1.0
Commit Delta: Change from 0.0.0 release
Released: 2020.04.15
Summary:
- Initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for oschmod-0.2.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 268951163a54f4879d26c53b7c836742178e7ee8de4db4e52f5f293be41a0985 |
|
MD5 | 4b1b7b6de38a2dc23ff4658e734d3f7d |
|
BLAKE2b-256 | 8c01f9bb000aa3a5483d4edac2a7a667365797ec11ac68caad26bbcfc7a0ac84 |