linux文件权限以及函数

Linux文件权限:

在Linux系统中,文件权限是非常重要的概念,它决定了用户可以对文件执行哪些操作。Ubuntu作为流行的Linux发行版,其文件权限系统遵循标准的Linux文件权限模型。以下是Linux中文件权限的一些基本概念:

1. **用户分类**:
   - **所有者(Owner)**:文件的创建者,默认拥有对该文件的最高权限。
   - **所属组(Group)**:文件的所有者可以属于一个或多个用户组,文件的所属组是文件创建时所有者所在的一个组。
   - **其他用户(Others)**:系统中除了文件所有者和所属组成员之外的所有用户。

2. **权限类型**:
   - **读(Read, r)**:允许查看文件内容或列出目录中的文件。
   - **写(Write, w)**:允许修改文件内容或向目录中添加/删除文件。
   - **执行(Execute, x)**:允许执行文件或进入目录。

3. **权限表示**:
   - **数字表示法**:使用三位数来表示权限,每位数字代表不同的用户类别(所有者、所属组、其他用户),每位数字由以下值组成:
     - 4:读权限
     - 2:写权限
     - 1:执行权限
     - 0:无权限
     例如,权限`754`表示所有者有全部权限(7 = 4+2+1),所属组有读和执行权限(5 = 4+1),其他用户只有读权限(4)。
   - **符号表示法**:使用`rwx`来表示权限,例如`rwxr-xr--`。

4. **特殊权限**:
   - **Set User ID (setuid)**:当文件被执行时,程序将以文件所有者的权限运行,而不是执行者的身份。
   - **Set Group ID (setgid)**:当文件被执行时,程序将以文件所属组的权限运行。
   - **Sticky Bit**:主要用于目录,防止用户删除或重命名不属于他们的文件。

5. **改变权限**:
   - 使用`chmod`命令来改变文件或目录的权限。
   - 使用`chown`命令来改变文件或目录的所有者。
   - 使用`chgrp`命令来改变文件或目录的所属组。

使用`ls -l`命令可以查看文件的权限,使用`chmod`命令可以修改文件的权限。


write函数:

write()会把参数buf所指的内存写入count个字节到参数fd所指的文件内。

ssize_twrite (int fd,const void * buf, size_t count);

fd: 文件描述符

*buf: 写入的数据的首地址

count: 写入数据个数

返回值:如果顺利write()会返回实际写入的字节数(len)。

当有错误发生时则返回-1,错误代码存入errno中

        cat 文件名 :显示文件内容。

read函数:

从打开的fd设备或文件中读取count个字节到buf中

ssize_tread(int fd,void * buf, size_tcount);

fd: 文件描述符

*buf: 读入数据的首地址

count: 读入数据的个数

返回值:成功返回读取的字节数,出错返回-1并设置errno,

如果在调read之前已到达文件末尾,        则这次read 返回0

lseek函数:

包含的头文件:  #include <sys/types.h>
                           #include <unistd.h>

   off_t lseek(int fd, off_t offset, int whence);光标的偏移量。

  • fd:文件描述符,它是通过 opencreat 或其他文件操作函数获得的。
  • offset:偏移量,表示从 whence 指定的位置开始移动多少字节。
  • whence:寻址方式,它决定了 offset 如何被解释,可以是以下值之一:
    • SEEK_SET:文件的开头(默认)。offset 是相对于文件开头的字节数。
    • SEEK_CUR:当前位置。offset 是相对于当前文件位置的字节数。
    • SEEK_END:文件的末尾。offset 是相对于文件末尾的字节数。  
  •    当参数是SEEK_CUR和SEEK_END时 参数offest允许负值的出现。

返回值: 文件读写距离文件开头的字节大小,出错返回 -1

具体例子:

另一种移动光标的方法:

open函数的O_APPEND: 表示追加,如果原来文件里面有内容,则这次写入会写在文件的最末尾。

执行结果:

main函数参数:

int main(int argc,char *argv[])

{

return 0;

}

C语言规定了main函数的参数只能有两个,一个是argc,一个是argv并且,argc只能是整数,第二个必须是指向字符 串的指针数组。

        argc: 参数表示命令行中参数的个数(注意 文本名本身也是一个参数),rgc的值是在输入命令行时由系统按 实际参数的个数自动赋予的。

        argv :参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址。 指针数组 的长度即为参数个数。数组元素初值由系统自动赋予。

C:>可执行文件名 参数 参数……; 但是应该特别注意的是,main 的两个形参和命令行中的参数在 位置上不是一一对 应的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值