linux之access函数解析
[lingyun@localhost access_1]$ ls
access.c
实例一:
[lingyun@localhost access_1]$ cat access.c
/*********************************************************************************
* Copyright: (C) 2013 fulinux<fulinux@sina.com>
* All rights reserved.
*
* Filename: access.c
* Description: This file
*
* Version: 1.0.0(08/02/2013~)
* Author: fulinux <fulinux@sina.com>
* ChangeLog: 1, Release initial version on "08/02/2013 04:10:44 PM"
*
********************************************************************************/
#include <stdio.h>
#include <unistd.h>
int main(void)
{
if(access("/etc/passwd", R_OK) == 0)
printf("/etc/passwd can be read\n");
}
[lingyun@localhost access_1]$ gcc access.c
[lingyun@localhost access_1]$ ./a.out
/etc/passwd can be read
[lingyun@localhost access_1]$
实例二:
[lingyun@localhost access_2]$ vim access.c
+ access.c
/*********************************************************************************
* Copyright: (C) 2013 fulinux<fulinux@sina.com>
* All rights reserved.
*
* Filename: access.c
* Description: This file
*
* Version: 1.0.0(08/02/2013~)
* Author: fulinux <fulinux@sina.com>
* ChangeLog: 1, Release initial version on "08/02/2013 04:18:45 PM"
*
********************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
if(argc < 2)
{
printf("Usave: ./test filename\n");
exit(1);
}
if(access(argv[1], F_OK) == -1)
{
puts("File not exists!");
exit(2);
}
if(access(argv[1], R_OK) == -1)
puts("You can't read the file!");
else
if(access(argv[1], R_OK|W_OK) != -1)
puts("You can read and write the file");
else
puts("You can read the file");
exit(0);
}
~
~
~
~
~
~
~/apue/access/access_2/access.c[+] CWD: /usr/local/src/lingyun/apue/access/access_2 Line: 41/42:12
"access.c" [New] 42L, 1090C written
[lingyun@localhost access_2]$ gcc access.c
[lingyun@localhost access_2]$ ./a.out /etc/passwd
You can read the file
[lingyun@localhost access_2]$ ./a.out access.c
You can read and write the file
[lingyun@localhost access_2]$
[lingyun@localhost access_3]$ vim access.c
+ access.c
/*********************************************************************************
* Copyright: (C) 2013 fulinux<fulinux@sina.com>
* All rights reserved.
*
* Filename: access.c
* Description: This file
*
* Version: 1.0.0(08/02/2013~)
* Author: fulinux <fulinux@sina.com>
* ChangeLog: 1, Release initial version on "08/02/2013 04:10:44 PM"
*
********************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <err.h>
int main(int argc, char *argv[])
{
if(argc != 2)
{
printf("usage: a.out <pathname>\n");
exit(1);
}
if(access(argv[1], R_OK) < 0)
{
warn("access error for %s", argv[1]);
}
else
printf("read access OK\n");
if(open(argv[1], O_RDONLY) < 0)
{
warn("open error for %s", argv[1]);
}
else
printf("open for reading OK\n");
exit(0);
}
~
~
~
~
~
~
~
~/apue/access/access_3/access.c[+] CWD: /usr/local/src/lingyun/apue/access/access_3 Line: 36/41:5
"access.c" 41L, 1065C written
[lingyun@localhost access_3]$ gcc access.c
[lingyun@localhost access_3]$ ./a.out
usage: a.out <pathname>
[lingyun@localhost access_3]$ ./a.out access.c
read access OK
open for reading OK
[lingyun@localhost access_3]$ ls -l /etc/shadow
---------- 1 root root 1151 Jun 4 23:16 /etc/shadow
[lingyun@localhost access_3]$ ./a.out /etc/shadow
a.out: access error for /etc/shadow: Permission denied
a.out: open error for /etc/shadow: Permission denied
[lingyun@localhost access_3]$ sudo su
[root@localhost access_3]# chown root a.out
[root@localhost access_3]# chmod u+s a.out
[root@localhost access_3]# ls -l a.out
-rwsr-xr-x 1 root trainning 7220 Aug 2 17:04 a.out
[root@localhost access_3]# exit
exit
[lingyun@localhost access_3]$ ./a.out /etc/shadow
a.out: access error for /etc/shadow: Permission denied
open for reading OK
[lingyun@localhost access_3]$
linux之access函数解析的更多相关文章
- linux下access函数
Linux内核总是根据进程的有效用户ID和有效组ID来决定一个进程是否有权访问某个文件. 因此,在编写调整用户ID的程序时,在读写一个文件之前必须明确检查其用户是否原本就有对此文件的访问权限. 为了实 ...
- Linux exec族函数解析
背景 在提到 vfork 函数时,我们提到了这个概念.为了更好地学习与运用,我们对exec族函数进行展开. exec函数族 介绍 有时我们希望子进程去执行另外的程序,exec函数族就提供了一个在进程中 ...
- linux之unlink函数解析
[lingyun@localhost unlink]$ cat unlink.c /********************************************************* ...
- linux之ioctl函数解析
[lingyun@localhost ioctl_1]$ ls ipconfig.c [lingyun@localhost ioctl_1]$ cat ipconfig.c /*********** ...
- linux之umask函数解析
[lingyun@localhost umask_1]$ vim umask.c + umask.c ...
- linux之utime函数解析
[lingyun@localhost utime]$ ls hello utime.c world [lingyun@localhost utime]$ cat utime.c /******* ...
- linux之chdir函数解析
[lingyun@localhost chdir]$ ls chdir.c [lingyun@localhost chdir]$ cat chdir.c /********************* ...
- linux之getcwd函数解析
[lingyun@localhost getcwd]$ cat getcwd.c /********************************************************** ...
- linux之stat函数解析
[lingyun@localhost stat_1]$ vim stat.c + stat.c ...
随机推荐
- List<>.Contains<>的用法
List<Plan> Plans = new List<Plan>();//存放服务器中的当前用户所接受的项目计划列表. //Plan 类包含PlanID等属性. if (Pl ...
- 转载:Source Insight查看ARM汇编源程序 && 高亮显示程序 && Source Insight打开project窗口出错
(1)Source Insight查看ARM汇编源程序.做ARM嵌入式开发时,有时得整汇编代码,但在SIS里建立PROJECT并ADD TREE的时候,根据默认设置并不会把该TREE里面所有汇编文件都 ...
- 对ARM9哈佛结构的认识
书本上都说ARM是哈佛结构,但是我总感觉好像看不出来.后来针对S3C2440的ARM9核进行分析,我有了自己的见解. 我的结论是“ARM9被称为是哈佛结构是从它拥有指令cache和数据cache”来说 ...
- PDF判断打印是A4还是B5
打印材料通畅就是这样两个规格,之前经常受其困扰,B5规格达成A4会显得字很大,当然本身A4就跟大:如果是A4打成B5字很小的: 其实,判断依据就是Adobe reader里面的,当鼠标滑向左下角的时候 ...
- 除了判断语句if switch 我们还可以怎么做?-b
之前项目中有根据后台数据执行不同代码,根据不同的字符串返回不同UIViewController对象,最开始需要的vc 种类不多我用的是if else 做字符串比较再执行不同代码,但是如果需求的vc 有 ...
- 解决Android SDK Manager更新(一个更新Host的程序的原理实现和源码)
<ignore_js_op> 同学遇到了更新Android SDK的问题,而且Goagent现在也无法用来更新.就想到了用替代Host的方法,添加可用的谷歌地址来实现更新. ...
- 几MB的大图片变成几百KB
使用windows自带的“画图”工具就可以. 1.用“画图”打开图片. 2.点击“重新调整大小” 弹出如下窗口 修改这里的“水平”和“垂直”,如都从100改为30.改完之后,点击确定,最后再“保存”或 ...
- Http 与 Socket 区别
HTTP:超文本传输协议,首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议.TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据.HT ...
- HTML5 知识点
HTML5 知识点 (1)语义化标记 <header>,<footer>,<nav>,<article>,<section> ...
- Wild Words
poj1816:http://poj.org/problem?id=1816 题意:给你n个模板串,然后每个串除了字母,还有?或者*,?可以代替任何非空单个字符,*可以替代任何长度任何串,包括空字符串 ...