Python os.fchown() 方法



Python os.fchown() 方法用于更改给定文件的所有者和组 ID。只有超级用户有权使用此方法修改文件或对文件执行操作。因此,在运行代码时使用 “sudo” 命令。

fchown() 方法接受三个参数,即 fd、uid 和 gid。“uid” 和 “gid” 将所有者和组 ID 设置为由 “fd” 参数指定的文件。如果我们想保持任何 id 不变,请将其设置为 -1。

注 − 此方法从 Python 2.6 开始可用。并且,只能在 UNIX 平台上使用。

语法

以下是 Python os.fchown() 方法的语法 -


 os.fchown(fd, uid, gid);

参数

Python os.fchown() 方法接受以下参数 -

  • fd - 这是需要为其设置所有者 ID 和组 ID 的文件描述符。
  • uid - 这是要为文件设置的 Owner ID。
  • gid − 这是要为文件设置的组 ID。

返回值

Python os.fchown() 方法不返回任何值。

以下示例显示了 fchown() 方法的用法。在这里,我们以只读模式打开一个文件,然后尝试在 fchown() 的帮助下设置文件的所有者和组 ID。


import os, sys, stat
# Now open a file "/tmp/foo.txt"
fd = os.open( "/tmp", os.O_RDONLY )
# Set the user Id to 100 for this file.
os.fchown( fd, 100, -1)
# Set the group Id to 50 for this file.
os.fchown( fd, -1, 50)
print("Changed ownership successfully!!")
# Close opened file.
os.close( fd )

当我们运行上述程序时,它会产生以下结果——

Changed ownership successfully!!

如前所述,仅允许超级用户修改给定文件的所有权。在以下示例中,我们尝试修改所有者 ID,这将导致权限错误。


import os
# Open a file
fileObj = os.open("newFile.txt", os.O_RDONLY)
try:
	 	os.fchown(fileObj, 10,-1)
	 	print("Ownership changed for the given file.")
except PermissionError:
	 	print("Don't have permission to change the owner/group id of this file.")
except OSError as e:
	 	print(f"Error: {e.strerror}")
# Close the file
os.close(fileObj)

在执行上述程序时,它会产生以下结果 -

Don't have permission to change the owner/group id of this file.