四、文件系统(含源码)

Linux 是多用户多任务操作系统,支持多个用户在同一时间内登 陆,不同用户可以执行不同的任务,并且互不影响。

▶ 每个用户都有唯一的用户名和密码

▶ 每个用户有自己独立的主目录

▶ 用户组是具有相同特征用户的逻辑集合

▶ 同一个用户组的多个用户具有相同的权限

▶ 一个用户可以属于多个组

列出根目录的文件信息:ll /

进入根目录:cd /

以下命令需要sudo,提权

新建用户:useradd -m -g groupname username

修改密码:passwd username

切换用户:su username

删除用户:userdel username

*tips:通过 man command 可以查看 command 的说明文档

示例:sudo useradd -m -g os siat

sudo passwd siat

su siat

Linux 系统上一切都是文件,对某个文件执行某种操作,必须具 有对应的权限方可执行成功 Linux 的文件权限有以下设定:

▶ Linux 下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。

▶ Linux 下权限的属组有拥有者、群组、其它组三种。每个文件都可以针对这三个属组(粒度),设置不同的 rwx(读写执行) 权限。

▶ 通常情况下,一个文件只能归属于一个用户和组,如果其它的用户想有这个文件的权限,则可以将该用户加 入具备权限的群组,一个用户可以同时归属于多个组。

权限表示法:

修改文件权限:chmod [可选项] mode <file>

形式可以是:增加可读 ( +r ),删除可写 ( -w );

或者直接赋予数字权限,如 600 修改文件夹所有者:chown -R group:username

C 语言操作文件的库为: ‘include‘ ‘include‘

1. 打开文件夹 DIR* opendir (const char * path );

path 为目录路径,打开一个目录,在失败的时候返回一个空的指针。

2. 读取文件夹下目录和文件 struct dirent* readdir(DIR* dirh andle);

drent 的结构如下: struct dirent { long d_ino ; /* inode number 索引 节点 号 * /

off_t d_off ; /* offset to t his dirent 在 目 录 文 件 中 的 偏 移 * /

unsigned short d_reclen ; /* length of t his d_name 文件名长 * /

unsigned char d_type ; /* the type of d_name 文件类型 * /

char d_name [NAME_MAX+ 1 ] ; /* f i l e name ( n ull − terminated ) 文件名 , 最长256字符 * / } 3. 关闭文件夹 int closedir(DIR *dp);

#!/usr/bin/sh

./priv

# 补充代码,赋予/SiatApp/hello.txt可读写权限,并移动回当前目录下
# TO-DO

chmod -R 777 /SiatApp/hello.txt
mv /SiatApp/hello.txt /home/os/lab4

# 修改XXX为自己的学号
echo "\n SIAT100051" >> hello.txt
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>
#include <stdio.h>

int main()
{
    DIR * dir;
    struct dirent * ptr;

    // TO-DO
    // 遍历test目录下的文件,输出对应的文件名和文件inode号
    //
    dir = opendir("/home/os/lab4/test");

    for(ptr = readdir(dir); ptr != NULL; ptr = readdir(dir)){    
        printf("FileName\t%s\tFileInode\t%d\n",ptr->d_name,ptr->d_ino);
    }
    closedir(dir);
}

实验结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值