如何在 C 中更改/显示权限

发布于 2024-08-26 14:34:22 字数 90 浏览 8 评论 0原文

我是 C 编程新手,我想在目录和子目录的文件上实现 chmod 命令。如何使用 C 代码更改/显示权限?有人可以帮忙举个例子吗?如果有人能给我提供代码,我将不胜感激。

I am new to C programming and I'd like to implement chmod command on files of a dir and subdir. How can I change/show permissions with a C code? Could someone help with a example? I would appreciate if anyone can provide me a code.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

痴梦一场 2024-09-02 14:34:22

有一个 chmod 功能。来自man 3p chmod

SYNOPSIS
   #include <sys/stat.h>

   int chmod(const char *path, mode_t mode);

...

如果你想读取权限,你会使用统计数据。来自man 3p stat

SYNOPSIS
   #include <sys/stat.h>

   int stat(const char *restrict path, struct stat *restrict buf);

...

如果你想像你一样递归地执行它提到过,您必须自己对 readdir 的结果进行循环。注意!:您必须从下至上设置权限,因为,例如,如果您将顶层目录设置为只读,则将不允许您在其下面设置任何内容。

There's a chmod function. From man 3p chmod:

SYNOPSIS
   #include <sys/stat.h>

   int chmod(const char *path, mode_t mode);

...

If you want to read the permissions, you'd use stat. From man 3p stat:

SYNOPSIS
   #include <sys/stat.h>

   int stat(const char *restrict path, struct stat *restrict buf);

...

If you want to do it recursively like you mentioned, you'll have to do the looping over results of readdir yourself. Caveat!: you will have to do setting the permissions from bottom-up, because, for example, if you set the top-directory to read-only, you will not be allowed to set anything below it.

清君侧 2024-09-02 14:34:22

使用 GNU C 库,您应该能够直接通过

int chmod (const char *filename, mode_t mode)
int chown (const char *filename, uid_t owner, gid_t group)

查看 这里..所有这些函数都在sys/stat.h

with the GNU C library you should be able to do it directly with

int chmod (const char *filename, mode_t mode)
int chown (const char *filename, uid_t owner, gid_t group)

check it out here.. all these functions are in sys/stat.h

琴流音 2024-09-02 14:34:22

一个例子:(显示/测试权限)

struct stat st; 
int ret = stat(filename, &st);
if(ret != 0) {
    return false;
}   
if((st.st_mode & S_IWOTH) == S_IWOTH) {

} else {

}

a example:(show/test permissions)

struct stat st; 
int ret = stat(filename, &st);
if(ret != 0) {
    return false;
}   
if((st.st_mode & S_IWOTH) == S_IWOTH) {

} else {

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文