os.chown正是我想要的,但我想按名稱指定用戶和組,而不是ID(我不知道它們是什麼)。我怎樣才能做到這一點?如何按名稱更改目錄的用戶和組權限?
39
A
回答
82
import pwd
import grp
import os
uid = pwd.getpwnam("nobody").pw_uid
gid = grp.getgrnam("nogroup").gr_gid
path = '/tmp/f.txt'
os.chown(path, uid, gid)
-1
17
因爲Python 3.3 https://docs.python.org/3.3/library/shutil.html#shutil.chown
import shutil
shutil.chown(path, user=None, group=None)
更改所有者用戶和/或給定路徑的組。
用戶可以是系統用戶名或uid; 同樣適用於組。
至少需要一個參數。
可用性:Unix。
2
由於shutil版本支持組是可選的,因此我將代碼複製並粘貼到我的Python2項目中。
https://hg.python.org/cpython/file/tip/Lib/shutil.py#l1010
def chown(path, user=None, group=None):
"""Change owner user and group of the given path.
user and group can be the uid/gid or the user/group names, and in that case,
they are converted to their respective uid/gid.
"""
if user is None and group is None:
raise ValueError("user and/or group must be set")
_user = user
_group = group
# -1 means don't change it
if user is None:
_user = -1
# user can either be an int (the uid) or a string (the system username)
elif isinstance(user, basestring):
_user = _get_uid(user)
if _user is None:
raise LookupError("no such user: {!r}".format(user))
if group is None:
_group = -1
elif not isinstance(group, int):
_group = _get_gid(group)
if _group is None:
raise LookupError("no such group: {!r}".format(group))
os.chown(path, _user, _group)
相關問題
- 1. Android - 更改目錄權限
- 2. 更改目錄權限
- 3. 目錄權限檢查和更改
- 4. 如何更改奏鳴曲管理包組權限名稱?
- 5. 如何在IsolatedStorage中更改目錄名稱和文件名稱
- 6. 如何更改具有正常權限的目錄的組所有權
- 7. 如何更改mysql用戶權限?
- 8. 如何更改MongoDB用戶權限?
- 9. 更改WHM中的用戶帳戶目錄名稱
- 10. 如何使用NSFileManager遞歸地更改目錄的權限setAttributes
- 11. 如何使用c#regex更改文件和目錄名稱
- 12. 從權限中查找權限組名稱名稱Android
- 13. 目錄中所有文件的列表組和用戶權限
- 14. AWS post部署目錄權限更改
- 15. 更改項目名稱和包名稱
- 16. 更改權限和可以在Windows中查看目錄的用戶
- 17. 如何更改Yii用戶和權限的數據類型?
- 18. 如何在Django中默認更改名稱權限?
- 19. 如何更改所有子目錄的文件權限(CHMOD)
- 20. 如何更改MySQL用來創建數據庫目錄和文件的權限?
- 21. SVN用戶組和權限
- 22. 用戶組和權限
- 23. 如何使用htaccess在php中更改目錄的名稱?
- 24. 如何防止用戶更改PayPal按鈕中的項目名稱?
- 25. 如何更改按鈕的名稱
- 26. 如何更改按鈕的名稱
- 27. 更改目錄下的文件夾名稱和文件名
- 28. 允許PHP更改文件和目錄的所有權和權限
- 29. 處理特定於目標的腳本(例如用戶,登錄名和權限)
- 30. Symfony - sfGuardUser - 如何記錄組或權限更改?
的可能重複的[Python的:找到UID/GID對於一個給定的用戶名/組名(對於os.chown)](http://stackoverflow.com/questions/826082/python-finding -uid-gid-for-a-given-username-groupname-for-os-chown) – Louis 2015-04-16 18:08:34