编写Linux C程序,列出stu2主目录中的文件信息,并将其中saturday.txt文件的权限设置为文件所有者可读可写、同组用户只读、其他用户无权限。
时间: 2024-01-21 15:19:19 浏览: 56
```c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int main()
{
struct stat buf;
if (stat("/home/stu2", &buf) == -1) {
perror("stat");
exit(EXIT_FAILURE);
}
printf("Mode: %o\n", buf.st_mode);
if (chmod("/home/stu2/saturday.txt", S_IRUSR|S_IWUSR|S_IRGRP) == -1) {
perror("chmod");
exit(EXIT_FAILURE);
}
return 0;
}
```
注意:在运行程序之前,需要保证用户有足够的权限来修改文件的权限。如果权限不足,则会导致 `chmod` 函数失败。
相关问题
用c语言写程序:文件“stu_info1.txt”包含学生的基本信息(姓名、学号、籍贯三项),现在需 要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生 完整信息(姓名、学号、籍贯、课程 1、课程 2、课程 3、平均分)写入文件 “stu_info2.txt”并保存于磁盘上。
以下是用 C 语言编写的程序:
```c
#include <stdio.h>
struct student {
char name[20];
char id[10];
char hometown[20];
float grade1, grade2, grade3, avg_grade;
};
int main() {
FILE *fp1, *fp2;
struct student stu;
fp1 = fopen("stu_info1.txt", "r");
fp2 = fopen("stu_info2.txt", "w");
while (fscanf(fp1, "%s %s %s", stu.name, stu.id, stu.hometown) != EOF) {
printf("Enter grades for %s: ", stu.name);
scanf("%f %f %f", &stu.grade1, &stu.grade2, &stu.grade3);
stu.avg_grade = (stu.grade1 + stu.grade2 + stu.grade3) / 3.0;
fprintf(fp2, "%s %s %s %.2f %.2f %.2f %.2f\n", stu.name, stu.id, stu.hometown,
stu.grade1, stu.grade2, stu.grade3, stu.avg_grade);
}
fclose(fp1);
fclose(fp2);
return 0;
}
```
该程序首先定义了一个 `struct student` 结构体,其中包含姓名、学号、籍贯、三门课程成绩和平均成绩等信息。
程序接着打开了两个文件,`stu_info1.txt` 用于读取学生基本信息,`stu_info2.txt` 用于写入完整信息。在循环中,程序从 `stu_info1.txt` 中读取一行学生基本信息,输出提示信息并读取三门课程成绩,计算平均成绩,然后将完整信息写入 `stu_info2.txt` 中。
注意,程序中使用 `fscanf` 函数从文件读取信息,使用 `fprintf` 函数向文件写入信息,格式化字符串中使用了 `%s` 表示字符串、`%f` 表示浮点数。同时,程序中使用了 `fclose` 函数关闭文件。
编译并运行该程序后,会在磁盘上生成 `stu_info2.txt` 文件,其中包含所有学生的完整信息。
转换回root身份,利用chmod修改/test目录的权限让stu用户可以创建文件,但不能查看文件abc里的内容,该如何设置权限?
您可以使用以下命令来设置/test目录的权限:
```
sudo chmod 1777 /test
```
这将设置/test目录的权限为1777,其中1表示设置为sticky bit,这将确保只有目录所有者和文件所有者才能删除文件。此外,777表示所有用户都有读、写和执行/test目录的权限。
接下来,您可以使用以下命令来设置文件abc的权限:
```
sudo chmod 600 /test/abc
```
这将设置文件abc的权限为600,其中6表示只有文件所有者有读和写的权限,其他用户没有任何权限。这样,stu用户就可以在/test目录中创建文件,但是不能查看文件abc的内容。
阅读全文