博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
access函数
阅读量:6657 次
发布时间:2019-06-25

本文共 939 字,大约阅读时间需要 3 分钟。

access函数是按照实际用户ID和实际组ID进行访问测试的。函数的定义如下: 

#include 
int access(const char* pathname, int mode); //若成功返回0,若出错则返回-1.

其中mode是下面所列常量的按位或。

实践: 

#include 
#include
#include
int main(void){ if(access("a",F_OK|R_OK|W_OK) < 0){ perror("access"); } int fd = -1; if((fd = open("a",O_RD))<0){ perror("open"); return -1; } printf("open ok!\n"); return 0; }

运行结果: 

$ ll a

-rwsr--r-- 1 root root 0 Apr 24 23:49 a*

$ ./a.out

access: Permission denied

open: open ok!

使用yan用户运行执行access函数,因为a文件属于root,所以没有权限,因为access是使用实际用户ID和实际组ID进行测试的(???),但是可以使用open函数以读的方式打开,因为设置了SUID。  //不太懂,yan是其他用户,不应该也有读权限吗???,测试以后结果确实是这样的.注意:如果使用open函数以读写的方式打开,就会出现Permission denied,因为这样会有潜在的问题,如果用户在a中添加了恶意代码,但是执行a时还是具有root的权限,那就不好了。

转载于:https://www.cnblogs.com/QingCHOW/p/4596990.html

你可能感兴趣的文章
地籍宗地出图(一)
查看>>
RobotFramework自动化3-搜索案例
查看>>
尼尔森:粉丝超10万的微信公众号只有3%
查看>>
RFID Hacking①:突破门禁潜入FreeBuf大本营
查看>>
第 69 章 文件传输
查看>>
浅析C#深拷贝与浅拷贝(转)
查看>>
Web in Linux小笔记001
查看>>
python中class 的一行式构造器
查看>>
spring帝国-开篇
查看>>
《剑指offer》-数字在排序数组中出现的次数
查看>>
Spring bean的作用域Scope
查看>>
5.8. Token 认证
查看>>
IT公司名字的由来
查看>>
PgSQL · 应用案例 · 阿里云RDS金融数据库(三节点版) - 背景篇
查看>>
Oracle 无备份情况恢复ocr和olr
查看>>
使用 vmstat 命令确定内存使用情况
查看>>
说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
查看>>
批量杀死MySQL连接的几种方法详解
查看>>
高斯混合聚类及EM实现
查看>>
[20150707]ORA-00932.txt
查看>>