Skip to main content

Windows and Linux compatible chmod

Project description

oschmod

Python chmod that works on Windows and Linux

Mergify

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.

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.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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oschmod-0.2.0.tar.gz (15.1 kB view hashes)

Uploaded Source

Built Distribution

oschmod-0.2.0-py2.py3-none-any.whl (11.0 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page