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 ...
随机推荐
- C语言实现的顺序表
顺序表是用一段地址连续的存储单元依次存储数据元素的线性结构.顺序表可分为静态存储和动态存储,静态顺序表比较简单,数据空间固定,而动态顺序表可以动态增容,便于存放大量数据,现主要把动态的基本实现一下~此 ...
- 2016030401 - java性能优化建议
转载自:http://www.open-open.com/lib/view/open1399884636989.html#_label20 1.没有必要时不要使用静态变量 使用静态变量的目的是提高程序 ...
- SQL Server 2008 R2 主从数据库同步设置
一.准备工作: 主数据库服务器: OS:Windows Server 2008 R2 DB: SQL Server 2008 R2 Hostname : CXMasterDB IP: 192.1 ...
- OC 之 const
1. 修饰变量 一般设置传参数的时候 若设置为const, 则在调用过程中不允许修改参数值;(readonly) // *前const: 不能通过指针, 改变p指向的值 const int *p = ...
- asp.net mvc4 Controller与Action执行过程的研究(学习笔记)
当IIS收到一个http请求,把请求信息发给对应的HttpModel(实际是实现类UrlRoutingModule),在HttpModel中会注册HttpApplication 类中的PostReso ...
- mcd, lm, VS lx
LED常识之 mcd&lm&w的关系 转载自:http://1198.vip.blog.163.com/blog/static/202177117201211624535412/ LE ...
- C#方法定义和调用-2
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- comet ajax轮询
http://www.ibm.com/developerworks/cn/webservices/ws-tip-jaxwsrpc.html http://www.cnblogs.com/pifoo/a ...
- HDU 2487 Ugly window
这是切的很痛苦的一道题,自己测试了很多样例却终究不过,中间也做了诸多修改,后来无奈去网上看题解,发现遗漏了一种情况,就是两个窗口可能边框都能看见,但是一个嵌套在另一里面,而我判定是不是 “top wi ...
- 李洪强iOS开发Swift篇—01_简单介绍
李洪强iOS开发Swift篇—01_简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objec ...