英文:
Golang Change permission "os.chmod" and "os.chowm" recursively
问题
你可以使用os.walk
函数遍历目录中的所有文件和子目录,并对每个文件和目录应用os.chmod
和os.chown
函数来递归地改变权限和所有权。
下面是一个示例代码:
import os
def change_permissions_and_ownership(path, mode, uid, gid):
for root, dirs, files in os.walk(path):
for dir in dirs:
dir_path = os.path.join(root, dir)
os.chmod(dir_path, mode)
os.chown(dir_path, uid, gid)
for file in files:
file_path = os.path.join(root, file)
os.chmod(file_path, mode)
os.chown(file_path, uid, gid)
# 用法示例
path = '/path/to/directory'
mode = 0o755 # 设置权限,例如 755
uid = 1000 # 设置所有者的用户ID
gid = 1000 # 设置所有者的组ID
change_permissions_and_ownership(path, mode, uid, gid)
在上面的示例中,change_permissions_and_ownership
函数接受一个路径参数,一个权限模式参数(如0o755
),以及一个用户ID和组ID参数。它使用os.walk
遍历目录中的所有文件和子目录,并对每个文件和目录应用os.chmod
和os.chown
函数来递归地改变权限和所有权。
请注意,为了运行此代码,你需要具有足够的权限来更改文件和目录的所有权和权限。
英文:
I am trying to change ownership and permission of files and directory using os.Chmod
and os.Chown
. How can I do this recursively. For Illustration linux equivalent of this chmod -R
and chown -R
答案1
得分: 2
func ChownRecursively(root string) {
err := filepath.Walk(root,
func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
err = os.Chown(path, os.Getuid(), os.Getgid())
if err != nil {
return err
} else {
fmt.Printf("文件 %s 的所有者已更改。\n", path)
}
return nil
})
if err != nil {
log.Println(err)
}
}
英文:
func ChownRecursively(root string) {
err := filepath.Walk(root,
func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
err = os.Chown(path, os.Getuid(), os.Getgid())
if err != nil {
return err
} else {
fmt.Printf("File ownership of %s changed.\n", path)
}
return nil
})
if err != nil {
log.Println(err)
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论