如何使用C++更改Linux中文件的权限

Jon*_*ard 0 c++ linux permissions system-calls

我想在Linux中用C++更改文件的权限.用户必须使用以下语法输入权限:"请在终端中输入权限:rwx-wr--".

谢谢你的帮助.

eye*_*LLC 6

#include <sys/types.h>
#include <sys/stat.h>

int main() { 
  chmod("./myfile", S_IRWXU); // enables owner to rwx file
}
Run Code Online (Sandbox Code Playgroud)

有关man 2 chmod详细信息,请参阅

如果问题是如何解析形式为"rwx-wr--"的9字符串,请认识到权限在int中编码为位.如果有一个位,则该权限已启用.以下代码将采用您的字符串,以明显的方式将其转换为位...没有验证等.这是一个概念验证.

#include <cstdio>
#include <sys/types.h>
#include <sys/stat.h>

int parse(char* perms) {
  int bits = 0;
  for(int i=0; i<9; i++){
    if (perms[i] != '-') {
      bits |= 1<<(8-i);
    }
  }
  return bits;
}
int main() { 
  char perms[]="rwx-w-r--";
  int exmp = S_IRWXU | S_IWGRP | S_IROTH;
  printf("%d %d\n", parse(perms), exmp);
  // outputs 468 468
}
Run Code Online (Sandbox Code Playgroud)