linux在home下创建目录并在目录中创建一个文件修改文件的属性属主具有一切权限同组用户和其他用户具有可读可写的权限
时间: 2024-02-29 08:55:48 浏览: 24
好的,您可以按照以下步骤进行操作:
1. 在终端中进入当前用户的home目录:`cd ~`
2. 创建一个名为test的目录:`mkdir test`
3. 进入test目录:`cd test`
4. 创建一个名为test.txt的文件:`touch test.txt`
5. 修改文件属性,使其属主具有一切权限,同组用户和其他用户具有可读可写的权限:`chmod 774 test.txt`
现在,您可以验证文件权限是否正确:`ls -l test.txt`,输出应该类似于这样:`-rwxrwxr-- 1 username groupname 0 date test.txt`。其中,username是当前用户的用户名,groupname是当前用户的组名,date是文件创建或修改的日期。
相关问题
编写Linux C程序,列出stu2主目录中的文件信息,并将其中saturday.txt文件的权限设置为文件所有者可读可写、同组用户只读、其他用户无权限。给出源程序和运行结果
以下是一个简单的程序,可以实现你的要求:
```c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
int main() {
DIR *dirp;
struct dirent *direntp;
struct stat filestat;
char path[256];
char filename[] = "saturday.txt";
char *homedir = getenv("HOME");
sprintf(path, "%s/%s", homedir, "stu2");
if ((dirp = opendir(path)) == NULL) {
perror("Failed to open directory");
return 1;
}
while ((direntp = readdir(dirp)) != NULL) {
sprintf(path, "%s/%s", homedir, "stu2");
strcat(path, "/");
strcat(path, direntp->d_name);
if (stat(path, &filestat) < 0) {
perror("Failed to get file status");
continue;
}
printf("%s\t", direntp->d_name);
printf((S_ISDIR(filestat.st_mode)) ? "d" : "-");
printf((filestat.st_mode & S_IRUSR) ? "r" : "-");
printf((filestat.st_mode & S_IWUSR) ? "w" : "-");
printf((filestat.st_mode & S_IXUSR) ? "x" : "-");
printf((filestat.st_mode & S_IRGRP) ? "r" : "-");
printf((filestat.st_mode & S_IWGRP) ? "w" : "-");
printf((filestat.st_mode & S_IXGRP) ? "x" : "-");
printf((filestat.st_mode & S_IROTH) ? "r" : "-");
printf((filestat.st_mode & S_IWOTH) ? "w" : "-");
printf((filestat.st_mode & S_IXOTH) ? "x" : "-");
printf("\n");
if (strcmp(direntp->d_name, filename) == 0) {
chmod(path, S_IRUSR | S_IWUSR | S_IRGRP);
printf("Changed permissions on %s\n", filename);
}
}
closedir(dirp);
return 0;
}
```
运行结果可能会类似于这样:
```
file1.txt -rw-r--r--
file2.txt -rw-r--r--
file3.txt -rw-r--r--
saturday.txt -rw-r--r--
Changed permissions on saturday.txt
```
注意:在运行程序之前,需要先手动创建一个名为 `stu2` 的目录,然后在其中添加一些文件以供测试。程序中使用了 `getenv("HOME")` 函数来获取当前用户的主目录,所以无论你在哪里运行程序,都会读取到正确的路径。
如何在linux设置两个用户user01和user02,在同一个附属组project
1. 创建附属组project
```
sudo groupadd project
```
2. 创建用户user01和user02,并将他们加入附属组project
```
sudo useradd -m -s /bin/bash -G project user01
sudo useradd -m -s /bin/bash -G project user02
```
-m表示创建home目录,-s表示指定shell,-G表示加入附属组
3. 确认用户和附属组的关系
```
id user01
id user02
```
输出结果应该包含project组
4. 确认附属组的权限
```
ls -la /home
```
/home目录应该有project组的读写权限