diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-04-12 00:53:36 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-04-12 00:53:36 +0000 |
| commit | b4add71775d93fe6541ca97fb0e30937620f5e6e (patch) | |
| tree | 0e0c81127b953099f03578524aa9e54128282ae9 | |
| parent | 44daf0d37e6e9c6ced3b8e01fac85f98a1e46ca5 (diff) | |
automatic import of python-oschmod
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-oschmod.spec | 775 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 777 insertions, 0 deletions
@@ -0,0 +1 @@ +/oschmod-0.3.12.tar.gz diff --git a/python-oschmod.spec b/python-oschmod.spec new file mode 100644 index 0000000..9b4918f --- /dev/null +++ b/python-oschmod.spec @@ -0,0 +1,775 @@ +%global _empty_manifest_terminate_build 0 +Name: python-oschmod +Version: 0.3.12 +Release: 1 +Summary: Windows and Linux compatible chmod +License: Apache Software License 2.0 +URL: https://github.com/yakdriver/oschmod +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/9d/64/6e522f0a1b500470ae14dcd1a4bb8f8751f5cf441e85e9fee7dfc712cb7b/oschmod-0.3.12.tar.gz +BuildArch: noarch + +Requires: python3-pywin32 + +%description +<p> + <a href="./LICENSE" alt="License"> + <img src="https://img.shields.io/github/license/YakDriver/oschmod.svg" /></a> + <a href="http://travis-ci.org/YakDriver/oschmod" alt="Build status"> + <img src="https://travis-ci.org/YakDriver/oschmod.svg?branch=main" /></a> + <a href="https://pypi.python.org/pypi/oschmod" alt="Python versions"> + <img src="https://img.shields.io/pypi/pyversions/oschmod.svg" /></a> + <a href="https://pypi.python.org/pypi/oschmod" alt="Version"> + <img src="https://img.shields.io/pypi/v/oschmod.svg" /></a> + <img src="https://img.shields.io/endpoint.svg?url=https://gh.mergify.io/badges/YakDriver/oschmod" alt="Mergify"/> +</p> + +# oschmod + +***oschmod*** sets consistent file permissions across Windows, Linux and macOS. + +## oschmod TL;DR + +***oschmod*** brings `chmod` functionality to **Windows**, macOS, and Linux! If you're not familiar, `chmod` is a handy macOS and Linux-only tool for setting file permissions. + +Prior to ***oschmod***, Windows file permissions couldn't be set in the familiar `chmod` way. Tools did not translate `chmod`-style permissions into Windows-style file permissions. Even though Python's `os.chmod()` sets read, write, and execute file permissions, on Windows, `os.chmod()` basically has no effect. Even worse, Python on Windows gives no warnings or errors. If you think you set file permissions on Windows with `os.chmod()`, you're wrong! + +***oschmod*** allows you to set consistent file permissions in a consistent way across platforms. + +* Read more about [oschmod](https://medium.com/@dirk.avery/securing-files-on-windows-macos-and-linux-7b2b9899992) on Medium +* For more background, have a look at the [oschmod Wiki](https://github.com/YakDriver/oschmod/wiki). + +## Installation + +```console +$ pip install oschmod +``` + +## GNU Documentation + +***oschmod*** changes the file mode bits of each given file according to mode, which can be either a symbolic representation of changes to make, or an octal number representing the bit pattern for the new mode bits. + +The format of a symbolic mode is `[ugoa...][+-=][perms...]` where perms is zero or more letters from the set `rwx`. Multiple symbolic modes can be given, separated by commas. + +A combination of the letters `ugoa` controls which users' access to the file will be changed: the user who owns it (`u`), other users in the file's group (`g`), other users not in the file's group (`o`), or all users (`a`). If none of these are given, the effect is as if `a` were given. + +*(Modified from the GNU manpage for chmod.)* + +## Command line interface + +***oschmod*** brings the ability to set consistent file permissions using the command line to Windows, macOS, and Linux platforms. If you are familiar with `chmod`, ***oschmod*** works similarly, albeit with fewer options. + +```console +$ oschmod -h +usage: oschmod [-h] [-R] mode object + +Change the mode (permissions) of a file or directory + +positional arguments: + mode octal or symbolic mode of the object + object file or directory + +optional arguments: + -h, --help show this help message and exit + -R apply mode recursively +``` + +## Command line examples + +You can use symbolic (e.g., "u+rw") or octal (e.g., "600) representations of modes. Multiple mode modifications can be made in a single call by separating modifiers with commas. + +### Symbolic representation examples + +Symbolic representation mode modifiers have three parts: + +1. **whom:** To whom does the modification apply? You can include zero or more of `[ugoa]*` where `a` is for all, `u` is for the file owner (i.e., "**u**ser"), `g` is for the file group, and `o` is for others. In other words, `ugo` is equivalent to `a`. Also, if you do not provide a "whom," ***oschmod*** assumes you mean `a` (everyone). +2. **operation:** Which operation should be applied? You must include one and only one operation, `[+-=]{1}`, per modifier (although you can have multiple modifiers). `+` adds permissions, `-` removes permissions, and `=` sets permissions regardless of previous permissions. `+` and `-` modifications often depend on the current permissions. +3. **permission:** Which permission or permissions will be affected? You can include zero or more of `[rwx]*` where `r` is for read, `w` is for write, and `x` is for execute. If you do not include a permission with `+` or `-` (e.g., `u-`), the modifier has no effect. However, if you use no permissions with `=` (e.g., `o=`), all permissions are removed. + +**Example 1:** To give everyone execute permissions on a file (all of these are equivalent): + +```console +$ oschmod +x <file name> +$ oschmod a+x <file name> +$ oschmod ugo+x <file name> +``` + +**Example 2:** To remove read, write, and execute permissions from the file group and all others (these are equivalent): + +```console +$ oschmod go-rwx <file name> +$ oschmod go= <file name> +``` + +**Example 3:** To give the file owner read and execute permissions, and remove execute permissions from the group and all others: + +```console +$ oschmod u+rx,go-x <file name> +``` + +**Example 4:** To give everyone all permissions, and then remove execute write from the group, and execute from all others: + +```console +$ oschmod a+rwx,g-w,o-x <file name> +``` + +### Octal representation examples + +For more about what octal representations mean, see [this article](https://medium.com/@dirk.avery/securing-files-on-windows-macos-and-linux-7b2b9899992) on Medium. + +**Example 5:** To give everyone read, write, and execute permissions on a file: + +```console +$ oschmod 777 <file name> +``` + +**Example 6:** To lock down a file to just give the file owner read, write, and execute permissions and deny all permissions to everyone else: + +```console +$ oschmod 700 <file name> +``` + +## Python usage + +You can use ***oschmod*** from Python code. Any of the command line examples above will work very similarly. For example, *Example 4* above, in Python code, would look like this: + +```python +import oschmod +oschmod.set_mode("myfile", "a+rwx,g-w,o-x") +``` + +*Example 5* above, in Python code, could be done in two ways: + +```python +import oschmod +oschmod.set_mode("myfile", "777") +oschmod.set_mode("myfile", 0o777) +``` + +***oschmod*** is compatible with bitwise permissions as defined in the `stat` module. To give a file's owner read, write, and execute permissions and deny the group and others any permissions (i.e., equivalent of `700`): + +```python +import oschmod +import stat +oschmod.set_mode('myfile', stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR) +``` + +Replacing `os.chmod()` with ***oschmod*** should usually be an easy drop-in replacement. Replacement will allow you to get consistent file permission settings on Windows, macOS, and Linux: + +If this is your Python code using `os.chmod()`: + +```python +import os +os.chmod('myfile1', 'u+x') +os.chmod('myfile2', 0o777) +``` + +The replacement using ***oschmod*** is very similar: + +```python +import oschmod +oschmod.set_mode('myfile1', 'u+x') +oschmod.set_mode('myfile2', 0o777) +``` + +## Changelog + +### 0.3.0 + +**Commit Delta**: [Change from 0.2.4 release](https://github.com/YakDriver/oschmod/compare/0.2.4...0.3.0) + +**Released**: 2020.05.27 + +**Summary**: + +* Adds symbolic representation for mode changes (e.g., `+x`, `u+rwx`, `ugo-x`). + +### 0.2.4 + +**Commit Delta**: [Change from 0.2.2 release](https://github.com/YakDriver/oschmod/compare/0.2.2...0.2.4) + +**Released**: 2020.04.21 + +**Summary**: + +* Add command line interface (CLI). + +### 0.2.2 + +**Commit Delta**: [Change from 0.2.0 release](https://github.com/YakDriver/oschmod/compare/0.2.0...0.2.2) + +**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](https://github.com/YakDriver/oschmod/compare/0.1.5...0.2.0) + +**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](https://github.com/YakDriver/oschmod/compare/0.1.4...0.1.5) + +**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](https://github.com/YakDriver/oschmod/compare/0.1.0...0.1.4) + +**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](https://github.com/YakDriver/oschmod/compare/0.0.0...0.1.0) + +**Released**: 2020.04.15 + +**Summary**: + +* Initial release + + + + +%package -n python3-oschmod +Summary: Windows and Linux compatible chmod +Provides: python-oschmod +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-oschmod +<p> + <a href="./LICENSE" alt="License"> + <img src="https://img.shields.io/github/license/YakDriver/oschmod.svg" /></a> + <a href="http://travis-ci.org/YakDriver/oschmod" alt="Build status"> + <img src="https://travis-ci.org/YakDriver/oschmod.svg?branch=main" /></a> + <a href="https://pypi.python.org/pypi/oschmod" alt="Python versions"> + <img src="https://img.shields.io/pypi/pyversions/oschmod.svg" /></a> + <a href="https://pypi.python.org/pypi/oschmod" alt="Version"> + <img src="https://img.shields.io/pypi/v/oschmod.svg" /></a> + <img src="https://img.shields.io/endpoint.svg?url=https://gh.mergify.io/badges/YakDriver/oschmod" alt="Mergify"/> +</p> + +# oschmod + +***oschmod*** sets consistent file permissions across Windows, Linux and macOS. + +## oschmod TL;DR + +***oschmod*** brings `chmod` functionality to **Windows**, macOS, and Linux! If you're not familiar, `chmod` is a handy macOS and Linux-only tool for setting file permissions. + +Prior to ***oschmod***, Windows file permissions couldn't be set in the familiar `chmod` way. Tools did not translate `chmod`-style permissions into Windows-style file permissions. Even though Python's `os.chmod()` sets read, write, and execute file permissions, on Windows, `os.chmod()` basically has no effect. Even worse, Python on Windows gives no warnings or errors. If you think you set file permissions on Windows with `os.chmod()`, you're wrong! + +***oschmod*** allows you to set consistent file permissions in a consistent way across platforms. + +* Read more about [oschmod](https://medium.com/@dirk.avery/securing-files-on-windows-macos-and-linux-7b2b9899992) on Medium +* For more background, have a look at the [oschmod Wiki](https://github.com/YakDriver/oschmod/wiki). + +## Installation + +```console +$ pip install oschmod +``` + +## GNU Documentation + +***oschmod*** changes the file mode bits of each given file according to mode, which can be either a symbolic representation of changes to make, or an octal number representing the bit pattern for the new mode bits. + +The format of a symbolic mode is `[ugoa...][+-=][perms...]` where perms is zero or more letters from the set `rwx`. Multiple symbolic modes can be given, separated by commas. + +A combination of the letters `ugoa` controls which users' access to the file will be changed: the user who owns it (`u`), other users in the file's group (`g`), other users not in the file's group (`o`), or all users (`a`). If none of these are given, the effect is as if `a` were given. + +*(Modified from the GNU manpage for chmod.)* + +## Command line interface + +***oschmod*** brings the ability to set consistent file permissions using the command line to Windows, macOS, and Linux platforms. If you are familiar with `chmod`, ***oschmod*** works similarly, albeit with fewer options. + +```console +$ oschmod -h +usage: oschmod [-h] [-R] mode object + +Change the mode (permissions) of a file or directory + +positional arguments: + mode octal or symbolic mode of the object + object file or directory + +optional arguments: + -h, --help show this help message and exit + -R apply mode recursively +``` + +## Command line examples + +You can use symbolic (e.g., "u+rw") or octal (e.g., "600) representations of modes. Multiple mode modifications can be made in a single call by separating modifiers with commas. + +### Symbolic representation examples + +Symbolic representation mode modifiers have three parts: + +1. **whom:** To whom does the modification apply? You can include zero or more of `[ugoa]*` where `a` is for all, `u` is for the file owner (i.e., "**u**ser"), `g` is for the file group, and `o` is for others. In other words, `ugo` is equivalent to `a`. Also, if you do not provide a "whom," ***oschmod*** assumes you mean `a` (everyone). +2. **operation:** Which operation should be applied? You must include one and only one operation, `[+-=]{1}`, per modifier (although you can have multiple modifiers). `+` adds permissions, `-` removes permissions, and `=` sets permissions regardless of previous permissions. `+` and `-` modifications often depend on the current permissions. +3. **permission:** Which permission or permissions will be affected? You can include zero or more of `[rwx]*` where `r` is for read, `w` is for write, and `x` is for execute. If you do not include a permission with `+` or `-` (e.g., `u-`), the modifier has no effect. However, if you use no permissions with `=` (e.g., `o=`), all permissions are removed. + +**Example 1:** To give everyone execute permissions on a file (all of these are equivalent): + +```console +$ oschmod +x <file name> +$ oschmod a+x <file name> +$ oschmod ugo+x <file name> +``` + +**Example 2:** To remove read, write, and execute permissions from the file group and all others (these are equivalent): + +```console +$ oschmod go-rwx <file name> +$ oschmod go= <file name> +``` + +**Example 3:** To give the file owner read and execute permissions, and remove execute permissions from the group and all others: + +```console +$ oschmod u+rx,go-x <file name> +``` + +**Example 4:** To give everyone all permissions, and then remove execute write from the group, and execute from all others: + +```console +$ oschmod a+rwx,g-w,o-x <file name> +``` + +### Octal representation examples + +For more about what octal representations mean, see [this article](https://medium.com/@dirk.avery/securing-files-on-windows-macos-and-linux-7b2b9899992) on Medium. + +**Example 5:** To give everyone read, write, and execute permissions on a file: + +```console +$ oschmod 777 <file name> +``` + +**Example 6:** To lock down a file to just give the file owner read, write, and execute permissions and deny all permissions to everyone else: + +```console +$ oschmod 700 <file name> +``` + +## Python usage + +You can use ***oschmod*** from Python code. Any of the command line examples above will work very similarly. For example, *Example 4* above, in Python code, would look like this: + +```python +import oschmod +oschmod.set_mode("myfile", "a+rwx,g-w,o-x") +``` + +*Example 5* above, in Python code, could be done in two ways: + +```python +import oschmod +oschmod.set_mode("myfile", "777") +oschmod.set_mode("myfile", 0o777) +``` + +***oschmod*** is compatible with bitwise permissions as defined in the `stat` module. To give a file's owner read, write, and execute permissions and deny the group and others any permissions (i.e., equivalent of `700`): + +```python +import oschmod +import stat +oschmod.set_mode('myfile', stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR) +``` + +Replacing `os.chmod()` with ***oschmod*** should usually be an easy drop-in replacement. Replacement will allow you to get consistent file permission settings on Windows, macOS, and Linux: + +If this is your Python code using `os.chmod()`: + +```python +import os +os.chmod('myfile1', 'u+x') +os.chmod('myfile2', 0o777) +``` + +The replacement using ***oschmod*** is very similar: + +```python +import oschmod +oschmod.set_mode('myfile1', 'u+x') +oschmod.set_mode('myfile2', 0o777) +``` + +## Changelog + +### 0.3.0 + +**Commit Delta**: [Change from 0.2.4 release](https://github.com/YakDriver/oschmod/compare/0.2.4...0.3.0) + +**Released**: 2020.05.27 + +**Summary**: + +* Adds symbolic representation for mode changes (e.g., `+x`, `u+rwx`, `ugo-x`). + +### 0.2.4 + +**Commit Delta**: [Change from 0.2.2 release](https://github.com/YakDriver/oschmod/compare/0.2.2...0.2.4) + +**Released**: 2020.04.21 + +**Summary**: + +* Add command line interface (CLI). + +### 0.2.2 + +**Commit Delta**: [Change from 0.2.0 release](https://github.com/YakDriver/oschmod/compare/0.2.0...0.2.2) + +**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](https://github.com/YakDriver/oschmod/compare/0.1.5...0.2.0) + +**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](https://github.com/YakDriver/oschmod/compare/0.1.4...0.1.5) + +**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](https://github.com/YakDriver/oschmod/compare/0.1.0...0.1.4) + +**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](https://github.com/YakDriver/oschmod/compare/0.0.0...0.1.0) + +**Released**: 2020.04.15 + +**Summary**: + +* Initial release + + + + +%package help +Summary: Development documents and examples for oschmod +Provides: python3-oschmod-doc +%description help +<p> + <a href="./LICENSE" alt="License"> + <img src="https://img.shields.io/github/license/YakDriver/oschmod.svg" /></a> + <a href="http://travis-ci.org/YakDriver/oschmod" alt="Build status"> + <img src="https://travis-ci.org/YakDriver/oschmod.svg?branch=main" /></a> + <a href="https://pypi.python.org/pypi/oschmod" alt="Python versions"> + <img src="https://img.shields.io/pypi/pyversions/oschmod.svg" /></a> + <a href="https://pypi.python.org/pypi/oschmod" alt="Version"> + <img src="https://img.shields.io/pypi/v/oschmod.svg" /></a> + <img src="https://img.shields.io/endpoint.svg?url=https://gh.mergify.io/badges/YakDriver/oschmod" alt="Mergify"/> +</p> + +# oschmod + +***oschmod*** sets consistent file permissions across Windows, Linux and macOS. + +## oschmod TL;DR + +***oschmod*** brings `chmod` functionality to **Windows**, macOS, and Linux! If you're not familiar, `chmod` is a handy macOS and Linux-only tool for setting file permissions. + +Prior to ***oschmod***, Windows file permissions couldn't be set in the familiar `chmod` way. Tools did not translate `chmod`-style permissions into Windows-style file permissions. Even though Python's `os.chmod()` sets read, write, and execute file permissions, on Windows, `os.chmod()` basically has no effect. Even worse, Python on Windows gives no warnings or errors. If you think you set file permissions on Windows with `os.chmod()`, you're wrong! + +***oschmod*** allows you to set consistent file permissions in a consistent way across platforms. + +* Read more about [oschmod](https://medium.com/@dirk.avery/securing-files-on-windows-macos-and-linux-7b2b9899992) on Medium +* For more background, have a look at the [oschmod Wiki](https://github.com/YakDriver/oschmod/wiki). + +## Installation + +```console +$ pip install oschmod +``` + +## GNU Documentation + +***oschmod*** changes the file mode bits of each given file according to mode, which can be either a symbolic representation of changes to make, or an octal number representing the bit pattern for the new mode bits. + +The format of a symbolic mode is `[ugoa...][+-=][perms...]` where perms is zero or more letters from the set `rwx`. Multiple symbolic modes can be given, separated by commas. + +A combination of the letters `ugoa` controls which users' access to the file will be changed: the user who owns it (`u`), other users in the file's group (`g`), other users not in the file's group (`o`), or all users (`a`). If none of these are given, the effect is as if `a` were given. + +*(Modified from the GNU manpage for chmod.)* + +## Command line interface + +***oschmod*** brings the ability to set consistent file permissions using the command line to Windows, macOS, and Linux platforms. If you are familiar with `chmod`, ***oschmod*** works similarly, albeit with fewer options. + +```console +$ oschmod -h +usage: oschmod [-h] [-R] mode object + +Change the mode (permissions) of a file or directory + +positional arguments: + mode octal or symbolic mode of the object + object file or directory + +optional arguments: + -h, --help show this help message and exit + -R apply mode recursively +``` + +## Command line examples + +You can use symbolic (e.g., "u+rw") or octal (e.g., "600) representations of modes. Multiple mode modifications can be made in a single call by separating modifiers with commas. + +### Symbolic representation examples + +Symbolic representation mode modifiers have three parts: + +1. **whom:** To whom does the modification apply? You can include zero or more of `[ugoa]*` where `a` is for all, `u` is for the file owner (i.e., "**u**ser"), `g` is for the file group, and `o` is for others. In other words, `ugo` is equivalent to `a`. Also, if you do not provide a "whom," ***oschmod*** assumes you mean `a` (everyone). +2. **operation:** Which operation should be applied? You must include one and only one operation, `[+-=]{1}`, per modifier (although you can have multiple modifiers). `+` adds permissions, `-` removes permissions, and `=` sets permissions regardless of previous permissions. `+` and `-` modifications often depend on the current permissions. +3. **permission:** Which permission or permissions will be affected? You can include zero or more of `[rwx]*` where `r` is for read, `w` is for write, and `x` is for execute. If you do not include a permission with `+` or `-` (e.g., `u-`), the modifier has no effect. However, if you use no permissions with `=` (e.g., `o=`), all permissions are removed. + +**Example 1:** To give everyone execute permissions on a file (all of these are equivalent): + +```console +$ oschmod +x <file name> +$ oschmod a+x <file name> +$ oschmod ugo+x <file name> +``` + +**Example 2:** To remove read, write, and execute permissions from the file group and all others (these are equivalent): + +```console +$ oschmod go-rwx <file name> +$ oschmod go= <file name> +``` + +**Example 3:** To give the file owner read and execute permissions, and remove execute permissions from the group and all others: + +```console +$ oschmod u+rx,go-x <file name> +``` + +**Example 4:** To give everyone all permissions, and then remove execute write from the group, and execute from all others: + +```console +$ oschmod a+rwx,g-w,o-x <file name> +``` + +### Octal representation examples + +For more about what octal representations mean, see [this article](https://medium.com/@dirk.avery/securing-files-on-windows-macos-and-linux-7b2b9899992) on Medium. + +**Example 5:** To give everyone read, write, and execute permissions on a file: + +```console +$ oschmod 777 <file name> +``` + +**Example 6:** To lock down a file to just give the file owner read, write, and execute permissions and deny all permissions to everyone else: + +```console +$ oschmod 700 <file name> +``` + +## Python usage + +You can use ***oschmod*** from Python code. Any of the command line examples above will work very similarly. For example, *Example 4* above, in Python code, would look like this: + +```python +import oschmod +oschmod.set_mode("myfile", "a+rwx,g-w,o-x") +``` + +*Example 5* above, in Python code, could be done in two ways: + +```python +import oschmod +oschmod.set_mode("myfile", "777") +oschmod.set_mode("myfile", 0o777) +``` + +***oschmod*** is compatible with bitwise permissions as defined in the `stat` module. To give a file's owner read, write, and execute permissions and deny the group and others any permissions (i.e., equivalent of `700`): + +```python +import oschmod +import stat +oschmod.set_mode('myfile', stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR) +``` + +Replacing `os.chmod()` with ***oschmod*** should usually be an easy drop-in replacement. Replacement will allow you to get consistent file permission settings on Windows, macOS, and Linux: + +If this is your Python code using `os.chmod()`: + +```python +import os +os.chmod('myfile1', 'u+x') +os.chmod('myfile2', 0o777) +``` + +The replacement using ***oschmod*** is very similar: + +```python +import oschmod +oschmod.set_mode('myfile1', 'u+x') +oschmod.set_mode('myfile2', 0o777) +``` + +## Changelog + +### 0.3.0 + +**Commit Delta**: [Change from 0.2.4 release](https://github.com/YakDriver/oschmod/compare/0.2.4...0.3.0) + +**Released**: 2020.05.27 + +**Summary**: + +* Adds symbolic representation for mode changes (e.g., `+x`, `u+rwx`, `ugo-x`). + +### 0.2.4 + +**Commit Delta**: [Change from 0.2.2 release](https://github.com/YakDriver/oschmod/compare/0.2.2...0.2.4) + +**Released**: 2020.04.21 + +**Summary**: + +* Add command line interface (CLI). + +### 0.2.2 + +**Commit Delta**: [Change from 0.2.0 release](https://github.com/YakDriver/oschmod/compare/0.2.0...0.2.2) + +**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](https://github.com/YakDriver/oschmod/compare/0.1.5...0.2.0) + +**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](https://github.com/YakDriver/oschmod/compare/0.1.4...0.1.5) + +**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](https://github.com/YakDriver/oschmod/compare/0.1.0...0.1.4) + +**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](https://github.com/YakDriver/oschmod/compare/0.0.0...0.1.0) + +**Released**: 2020.04.15 + +**Summary**: + +* Initial release + + + + +%prep +%autosetup -n oschmod-0.3.12 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-oschmod -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed Apr 12 2023 Python_Bot <Python_Bot@openeuler.org> - 0.3.12-1 +- Package Spec generated @@ -0,0 +1 @@ +9742b69b861cdab4a5b1ea5c69510265 oschmod-0.3.12.tar.gz |
