Unix/Linux系統調用
accept()函數 Unix/Linux
access()函數 Unix/Linux
acct()函數 Unix/Linux
add_key()函數 Unix/Linux
adjtimex()函數 Unix/Linux
afs_syscall()函數 Unix/Linux
alarm()函數 Unix/Linux
alloc_hugepages()函數 Unix/Linux
arch_prctl()函數 Unix/Linux
bdflush()函數 Unix/Linux
bind()函數 Unix/Linux
break未實現 Unix/Linux
brk()函數 Unix/Linux
cacheflush()函數 Unix/Linux
chdir()函數 Unix/Linux
chmod()函數 Unix/Linux
chown()函數 Unix/Linux
chroot()函數 Unix/Linux
clone()函數 Unix/Linux
close()函數 Unix/Linux
connect()函數 Unix/Linux
create_module()函數 Unix/Linux
open()函數 Unix/Linux
dup2()函數 Unix/Linux
dup()函數 Unix/Linux
epoll_create()函數 Unix/Linux
epoll_ctl()函數 Unix/Linux
epoll_wait()函數 Unix/Linux
execve()函數 Unix/Linux
exit_group函數 Unix/Linux
_exit()函數 Unix/Linux
exit()函數 Unix/Linux
faccessat()函數 Unix/Linux
fattach()函數 Unix/Linux
fchdir()函數 Unix/Linux
fchmodat()函數 Unix/Linux
fchmod()函數 Unix/Linux
fchownat()函數 Unix/Linux
fchown()函數 Unix/Linux
fcntl()函數 Unix/Linux
fdatasync()函數 Unix/Linux
fdetach()函數 Unix/Linux
flock()函數 Unix/Linux
fork()函數 Unix/Linux
alloc_hugepages()函數 Unix/Linux
fstatat()函數 Unix/Linux
statfs()函數 Unix/Linux
stat()函數 Unix/Linux
statvfs()函數 Unix/Linux
fsync()函數 Unix/Linux
truncate()函數 Unix/Linux
futex()函數 Unix/Linux
futimesat()函數 Unix/Linux
getcontext()函數 Unix/Linux
getcwd()函數 Unix/Linux
getdents()函數 Unix/Linux
getdomainname()函數 Unix/Linux
getdtablesize()函數 Unix/Linux
getgid()函數 Unix/Linux
getuid()函數 Unix/Linux
getgroups()函數 Unix/Linux
getgroups()函數 Unix/Linux
gethostname()函數 Unix/Linux
getitimer()函數 Unix/Linux
get_kernel_syms()函數 Unix/Linux
unimplemented()函數 Unix/Linux
getpagesize()函數 Unix/Linux
getpeername()函數 Unix/Linux
setpgid()函數 Unix/Linux
getpgrp()函數 Unix/Linux
getpid()函數 Unix/Linux
getpmsg()函數 Unix/Linux
getppid()函數 Unix/Linux
getpriority()函數 Unix/Linux
getresuid()函數 Unix/Linux
getrlimit()函數 Unix/Linux
get_robust_list()函數 Unix/Linux
getrusage()函數 Unix/Linux
getsid()函數 Unix/Linux
getsockname()函數 Unix/Linux
getsockopt()函數 Unix/Linux
get_thread_area()函數 Unix/Linux
gettid()函數 Unix/Linux
gettimeofday()函數 Unix/Linux
getuid()函數 Unix/Linux
getunwind()函數 Unix/Linux
gtty()函數 Unix/Linux
idle()函數 Unix/Linux
outb()函數 Unix/Linux
inb_p()函數 Unix/Linux
inl()函數 Unix/Linux
inl_p()函數 Unix/Linux
inotify_add_watch()函數 Unix/Linux
inotify_init()函數 Unix/Linux
inotify_rm_watch()函數 Unix/Linux
outb()函數 Unix/Linux
insl()函數 Unix/Linux
insw()函數 Unix/Linux
intro()函數 Unix/Linux
inw()函數 Unix/Linux
inw_p()函數 Unix/Linux
io_cancel()函數 Unix/Linux
ioctl()函數 Unix/Linux
ioctl_list()函數 Unix/Linux
io_destroy()函數 Unix/Linux
io_getevents()函數 Unix/Linux
ioperm()函數 Unix/Linux
iopl()函數 Unix/Linux
ioprio_set()函數 Unix/Linux
io_setup()函數 Unix/Linux
io_submit()函數 Unix/Linux
ipc()函數 Unix/Linux
isastream()函數 Unix/Linux
kexec_load()函數 Unix/Linux
keyctl()函數 Unix/Linux
kill()函數 Unix/Linux
killpg()函數 Unix/Linux
lchown()函數 Unix/Linux
linkat()函數 Unix/Linux
link()函數 Unix/Linux
listen()函數 Unix/Linux
_llseek()函數 Unix/Linux
llseek()函數 Unix/Linux
lock()函數 Unix/Linux
lookup_dcookie()函數 Unix/Linux
lseek()函數 Unix/Linux
lstat()函數 Unix/Linux
madvise()函數 Unix/Linux
mincore()函數 Unix/Linux
mkdirat()函數 Unix/Linux
mkdir()函數 Unix/Linux
mknod()函數 Unix/Linux
mlockall()函數 Unix/Linux
mlock()函數 Unix/Linux
mmap2()函數 Unix/Linux
mmap()函數 Unix/Linux
modify_ldt()函數 Unix/Linux
mount()函數 Unix/Linux
move_pages()函數 Unix/Linux
mprotect()函數 Unix/Linux
mpx()函數 Unix/Linux
mq_getsetattr()函數 Unix/Linux
mremap()函數 Unix/Linux
msgctl()函數 Unix/Linux
msgget()函數 Unix/Linux
msgop()函數 Unix/Linux
msgsnd()函數 Unix/Linux
msync()函數 Unix/Linux
multiplexer()函數 Unix/Linux
munlockall()函數 Unix/Linux
munlock()函數 Unix/Linux
munmap()函數 Unix/Linux
nanosleep()函數 Unix/Linux
_newselect()函數 Unix/Linux
nfsservctl()函數 Unix/Linux
nice()函數 Unix/Linux
obsolete()函數 Unix/Linux
oldfstat()函數 Unix/Linux
oldlstat()函數 Unix/Linux
oldolduname()函數 Unix/Linux
oldstat()函數 Unix/Linux
olduname()函數 Unix/Linux
openat()函數 Unix/Linux
open()函數 Unix/Linux
outb()函數 Unix/Linux
outb_p()函數 Unix/Linux
outsb()函數 Unix/Linux
outsl()函數 Unix/Linux
outsw()函數 Unix/Linux
outw()函數 Unix/Linux
outw_p()函數 Unix/Linux
path_resolution()函數 Unix/Linux
pause()函數 Unix/Linux
perfmonctl()函數 Unix/Linux
personality()函數 Unix/Linux
pipe()函數 Unix/Linux
pivot_root()函數 Unix/Linux
poll()函數 Unix/Linux
posix_fadvise()函數 Unix/Linux
ppoll()函數 Unix/Linux
prctl()函數 Unix/Linux
pread()函數 Unix/Linux
prof()函數 Unix/Linux
pselect()函數 Unix/Linux
ptrace()函數 Unix/Linux
putmsg()函數 Unix/Linux
putpmsg()函數 Unix/Linux
pwrite()函數 Unix/Linux
query_module()函數 Unix/Linux
quotactl()函數 Unix/Linux
readahead()函數 Unix/Linux
readdir()函數 Unix/Linux
read()函數 Unix/Linux
readlinkat()函數 Unix/Linux
readlink()函數 Unix/Linux
readv()函數 Unix/Linux
reboot()函數 Unix/Linux
recvfrom()函數 Unix/Linux
recv()函數 Unix/Linux
recvmsg()函數 Unix/Linux
remap_file_pages()函數 Unix/Linux
renameat()函數 Unix/Linux
rename()函數 Unix/Linux
request_key()函數 Unix/Linux
rmdir()函數 Unix/Linux
sbrk()函數 Unix/Linux
sched_setaffinity()函數 Unix/Linux
sched_getparam()函數 Unix/Linux
sched_get_priority_max()函數 Unix/Linux
sched_get_priority_min()函數 Unix/Linux
sched_setscheduler()函數 Unix/Linux
sched_rr_get_interval()函數 Unix/Linux
sched_setparam()函數 Unix/Linux
sched_yield()函數 Unix/Linux
security()函數 Unix/Linux
select()函數 Unix/Linux
select_tut()函數 Unix/Linux
semctl()函數 Unix/Linux

access()函數 Unix/Linux

名稱

access - 檢查用戶的權限的文件

內容簡介

#include <unistd.h>

int access(const char **pathname*, int mode**);**

描述

access()檢查該進程是否將被允許讀,寫或測試存在的文件(或其他文件系統對象),其名稱是路徑名。如果 pathname 的符號鏈接文件權限這個符號鏈接所提到的測試.

mode 是一種包括一個或多個掩碼 R_OK, W_OK, X_OK 和 F_OK.

R_OK, W_OK 和 X_OK 檢查文件是否存在並具有讀,寫和執行權限,分別要求。 F_OK 只是要求檢查存在的文件。

測試依賴於權限的目錄中出現的文件路徑 pathname ,並在途中遇到的符號鏈接的目錄和文件的權限。

檢查進程的真實的UID和GID,而不是ID作爲實際嘗試操作時的有效完成。這是爲了讓設置用戶ID程序可以輕鬆地確定調用用戶的權限。

只有訪問位被選中,而不是文件類型或內容。因此,如果一個目錄被發現是「可寫,」它可能意味着文件可以在目錄中創建,而不是作爲一個文件可以寫入該目錄。同樣,一個DOS文件可能被發現是「可執行文件」,但仍然會失敗調用execve(2)調用。

如果過程中有適當的權限,執行可能表明,即使沒有任何執行文件的權限位被設置爲X_OK成功。

返回值

成功(所有請求的權限),則返回0。錯誤(至少一個位模式要求被拒絕的權限,或發生其他一些錯誤),則返回-1,errno設置爲合適。

錯誤

access() 可能會失敗,如果:

標籤

描述

EACCES

The requested access would be denied to the file or search permission is denied for one of the directories in the path prefix of pathname. (See also path_resolution(2).)

ELOOP

Too many symbolic links were encountered in resolvingpathname.

ENAMETOOLONG

pathname is too long.

ENOENT

A directory component in pathname would have been accessible but does not exist or was a dangling symbolic link.

ENOTDIR

A component used as a directory in pathname is not, in fact, a directory.

EROFS

Write permission was requested for a file on a read-only filesystem.

access() 可能會失敗,如果:

標籤

描述

EFAULT

pathname points outside your accessible address space.

EINVAL

mode was incorrectly specified.

EIO

An I/O error occurred.

ENOMEM

Insufficient kernel memory was available.

ETXTBSY

Write access was requested to an executable which is being executed.

限制

access() 返回一個錯誤,如果沒有在所請求的調用失敗的訪問類型,即使其他類型可能會成功。

access() 可能無法正常工作與UID映射NFS文件系統上啓用UID映射,因爲在服務器上完成,並從客戶端隱藏,檢查權限。

使用 access() 來檢查用戶是否被授權,例如打開一個文件之前,其實這樣使用 open(2)創建一個安全漏洞,因爲用戶可能會利用檢查並打開文件操作的間隔時間短。

C遵循於

SVr4, POSIX.1-2001, 4.3BSD

請另參閱

  • chmod (2)

  • chown (2)

  • faccessat (2)

  • open (2)

  • path_resolution (2)

  • setgid (2)

  • setuid (2)

  • stat (2)