亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統(tǒng) > Unix > 正文

UNIX高級環(huán)境編程(4)Files And Directories

2024-06-28 13:21:48
字體:
供稿:網(wǎng)友
UNIX高級環(huán)境編程(4)Files And Directories - umask、chmod、文件系統(tǒng)組織結(jié)構(gòu)和鏈接

本篇主要介紹文件和文件系統(tǒng)中常用的一些函數(shù),文件系統(tǒng)的組織結(jié)構(gòu)和硬鏈接、符號鏈接。

通過對這些知識的了解,可以對linux文件系統(tǒng)有更為全面的了解。

?

1 umask函數(shù)

之前我們已經(jīng)了解了每個文件與權(quán)限相關(guān)的9個位(bit),我們現(xiàn)在來了解一下當每個進程創(chuàng)建文件時默認會設(shè)置該文件的文件權(quán)限(the file mode creation mask)。

umask函數(shù)設(shè)置該進程默認創(chuàng)建文件的權(quán)限掩碼(the file mode creation mask),并且返回之前的權(quán)限掩碼值。

#include <sys/stat.h>

mode_t umask(mode_t cmask);

the file mode creation mask的作用:當進程創(chuàng)建新文件時,會根據(jù)這個掩碼值創(chuàng)建文件,在掩碼值中打開的位,對應(yīng)的新文件的權(quán)限位會被關(guān)閉。

umask的功能簡單地說就是創(chuàng)建新文件時屏蔽掉用戶不希望生效的權(quán)限位。

Example:

#include "apue.h"

#include <fcntl.h>

?

#define RWRWRW (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)

?

int

main(void)

{

? ? umask(0);

? ? if (creat("foo", RWRWRW) < 0)

? ? ? ? err_sys("creat error for foo");

? ? umask(S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);

? ? if (creat("bar", RWRWRW) < 0)

? ? ? ? err_sys("creat error for bar");

? ? exit(0);

}

運行截圖:

NewImage

結(jié)果說明:

shell的umask命令顯示當前文件創(chuàng)建權(quán)限掩碼。

0022表示創(chuàng)建出來的新文件,組用戶和other用戶沒有寫該文件的權(quán)限。

在程序中,首先用默認的權(quán)限設(shè)置創(chuàng)建了文件foo,它的權(quán)限位666,至于為什么當前用戶也沒有執(zhí)行權(quán)限,我還沒搞清楚,留一個坑 @suzhou。

然后修改umask值為0077,這樣就屏蔽掉了組用戶和其他用戶的讀寫權(quán)限位,因此再創(chuàng)建新文件bar,它的權(quán)限位是600。

?

2 chmod、fchmod和fchmodat函數(shù)

函數(shù)作用:修改已有文件的權(quán)限位。

函數(shù)聲明:

#include <sys/stat.h>

int chmod(const char *pathname, mode_t mode);

int fchmod(int fd, mode_t mode);

int fchmodeat(int fd, const char *pathname, mode_t mode, int flag);

?區(qū)別:

  • chmod:作用在某個指定的文件上
  • fchmod:作用在某個指定的已經(jīng)打開的文件上
  • fchmodat:類似之前的函數(shù),當pathname為絕對路徑,或者fd取值為AT_FDCWD并且pathname為相對路徑時,fchmodat函數(shù)的作用和chmod相同;否則,工作目錄為fd指定父目錄路徑加上pathname為父目錄的子目錄。參數(shù)flag用來指定fchmodeat的行為:取值為AT_SYMLINK_NOFOLLOW時,該權(quán)限修改并不追蹤符號鏈接,只修改該符號鏈接文件的權(quán)限。

權(quán)限要求:要修改一個文件的權(quán)限,需要當前進程的effective user ID和文件的所有者ID相同,或者進程有超級用戶權(quán)限。

代表各個權(quán)限位的常量如下表所示:

NewImage

Example:

修改在上例中創(chuàng)建的兩個文件foo和bar的權(quán)限。

#include "apue.h"

?

int

main(void)

{

? ? struct stat ? ? statbuf;

?

? ? /* turn on set-group-ID and turn off group-execute */

?

? ? if (stat("foo", &statbuf) < 0)

? ? ? ? err_sys("stat error for foo");

? ? if (chmod("foo", (statbuf.st_mode & ~S_IXGRP) | S_ISGID) < 0)

? ? ? ? err_sys("chmod error for foo");

?

? ? /* set absolute mode to "rw-r--r--" */

?

? ? if (chmod("bar", S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) < 0)

? ? ? ? err_sys("chmod error for bar");

?

? ? exit(0);

}

運行結(jié)果:

NewImage

結(jié)果說明:

  • 執(zhí)行程序之前,foo的權(quán)限為666,程序中首先使用stat函數(shù)獲取文件的信息存在statbuf中,置組用戶執(zhí)行位(S_IXGRP)為0,并置該位為S(S_ISGID)。
  • 執(zhí)行程序之前,bar的權(quán)限位600,程序中設(shè)置該文件的組用戶和其他用戶有讀權(quán)限,設(shè)置成功之后,可以看到bar的文件權(quán)限位644.

高級權(quán)限(SUID/SGID/Sticky Bit )檔案特殊權(quán)限 說明:

  • SUID (Set UID): 會制作出 s 的權(quán)限,權(quán)限數(shù)字是 4 。這個權(quán)限只能作用于可執(zhí)行文件,不可作用于目錄,shell script也不行。使一般使用者在執(zhí)行文件時,暫時具有該文件擁有者的權(quán)限。
  • SGID (Set GID): 制作出 s 權(quán)限,權(quán)限數(shù)字是 2 。這個權(quán)限可以作用于目錄和文件。作用于目錄時,在該目錄下建立的所有文件和目錄的group都會是該目錄的group;作用于文件時,則不論使用者是誰,在執(zhí)行該程序的時候, 他的有效群組 (effective group) 將會變成該程序的群組所有人 (group id)。
  • Sticky Bit: 制作出 t 權(quán)限,權(quán)限數(shù)字是 1 。這個權(quán)限只能作用于目錄。在該權(quán)限作用的目錄里,如果使用者具有w,x權(quán)限,那么他所創(chuàng)建的文件和目錄,只有檔案的擁有者和root才能刪除。
  • 注意:在字符表示權(quán)限時,s和t是出現(xiàn)在x的位置的,意思是在可執(zhí)行的文件和目錄時,它們才是有意義的。如果文件或目錄本身u、g或o就沒有可執(zhí)行權(quán)限,那么它所在的權(quán)限組出現(xiàn)的是S或者T,表示空的意思。用數(shù)字表示權(quán)限,就是在rwx前面加上4、2、1的組合就是了,如1777。

?

3 Sticky Bit(S_ISVTX)

Sticky bit有一個冗長的歷史,這里并不贅述。

作用:如果文件夾的sticky bit被打開,則文件夾中的文件被刪除或者重命名需要滿足一下的條件之一:當前用戶對該文件夾有寫權(quán)限;當前用戶是該文件的所有者;當前用戶是該文件夾的所有者;當前用戶是超級用戶。

典型的打開了sticky bit的兩個文件夾是/tmp 和/var/tmp,這兩個文件夾對所有用戶都有讀寫和執(zhí)行權(quán)限,這樣所有用戶都可以在該文件夾下創(chuàng)建文件,但是并不能刪除由其他用戶所有的文件。

NewImage

NewImage

?

4 chown、fchown、fchownat和lchown函數(shù)

函數(shù)作用:修改文件所屬的用戶ID和組ID,如果參數(shù)owner和group有一個的值為-1,對應(yīng)的ID值不變。

#include <unistd.h>

int chown(const char* pathname, uid_t owner, gid_t group);

int fchown(int fd, uid_t owner, gid_t group);

int fchownat(int fd, const char* pathname, uid_t owner, gid_t grou, int flag);

int lchown(const char* pathname, uid_t owner, gid_t group);

區(qū)別:

當目標文件不是一個符號鏈接時,上面的四個函數(shù)的作用基本相同。

當目標文件是一個符號鏈接文件時,并且函數(shù)lchown和fchownat的flag設(shè)置為AT_SYMLINK_NOFOLLOW時,這兩個函數(shù)修改符號鏈接文件本身的所有者,而不是符號鏈接指向的文件。

fchown函數(shù)修改fd代表的已打開文件的所有者。因為fchown操作的是已經(jīng)打開的文件,所以它不可以用來修改符號鏈接的所有者。

fchownat函數(shù)的行為:當參數(shù)pathname是絕對路徑,或者參數(shù)fd的值為AT_FDCWD并且pathname為相對路徑時,fchownat函數(shù)的行為和chown和lchown類似;具體來說,flag取值A(chǔ)T_SYMLINK_NOFOLLOW時,行為和lchown類似;否則行為和chown類似。當fd代表已打開的文件夾,pathname為一個相對路徑時,目標文件為以fd為父目錄,pathname為相對的子目錄所指的文件。

?

5 文件大?。‵ile Size)

stat結(jié)構(gòu)體中的成員st_size表示文件大小字節(jié)數(shù)。

字段st_size只對常規(guī)文件(regular files)、目錄文件(directories)和符號鏈接文件(symbolic links)。

更多的細節(jié):

  • 常規(guī)文件大小允許為0;
  • 目錄文件的大小往往是整數(shù),如16或512;
  • 符號鏈接文件的大小是被鏈接文件名的長度,如符號鏈接lib—>usr/lib,大小為7,正好是字符串“usr/lib”長度,并不需要像C風(fēng)格字符串一樣+1。

?

6 文件截斷(File Truncation)

有時候我們需要通過丟棄文件結(jié)尾一部分來截短文件。

函數(shù)聲明:

#include <unistd.h>

int truncate(const char* pathname, off_t length);

itn ftruncate(int fd, off_t length);

函數(shù)作用:把目標文件截斷到參數(shù)length指定的長度。

參數(shù):如果參數(shù)length的值比指定文件的長度小,則文件超過length長度的部分不可讀;如果length的值比指定文件的長度大,文件長度擴大到length,擴充部分填充0(可能是一個hole)

?

7 文件系統(tǒng)(File Systems)

為了理解文件鏈接,我們需要對Unix文件系統(tǒng)的結(jié)構(gòu)有一個概念性地認識。

一個磁盤(disk drive)可以被分為多個分區(qū)(partition),每個分區(qū)都可以包含一個文件系統(tǒng)(file system)。

inode是一個定長的索引,包含了一個文件的大部分信息。

NewImage

關(guān)于 i-nodes和data blocks的內(nèi)存布局如下圖所示:

NewImage

說明:

  • 兩個目錄索引(directory entry)指向同一個i-node索引(i-node entry)。即多個文件夾包含同一個文件(可能通過硬鏈接或軟鏈接),每一個inode都由一個字段link count,包含指向該i-node的目錄索引數(shù)。只有當該數(shù)值(link count)為0時,該文件才會被刪除(釋放文件所占用的data blocks)。索引后面介紹的移除目錄的函數(shù)不叫delete,而是unlink。在stat數(shù)據(jù)結(jié)構(gòu)中,link count對應(yīng)的字段為st_nlink。這里提到的鏈接為硬鏈接。
  • 另外一種鏈接為符號鏈接。符號鏈接文件對應(yīng)的data block中存有該鏈接指向文件的文件名(之前有提到)。對應(yīng)的i-node中文件類型字段的值應(yīng)為S_IFLINK,告訴文件系統(tǒng)當前文件為符號鏈接。
  • i-node包含了對應(yīng)文件的所有信息:如文件類型,指向文件數(shù)據(jù)塊的指針,文件權(quán)限位,文件大小等。stat數(shù)據(jù)結(jié)構(gòu)中得大部分字段都是從i-node中獲取。有兩個字段值存在目錄索引中:文件名(file name)和i-node數(shù)(i-node number)。i-node數(shù)目對應(yīng)的數(shù)據(jù)類型為ino_t。

我們再了解一下目錄文件的link count字段。

當我們執(zhí)行下面的命令:

mkdir testdir

?內(nèi)存中數(shù)據(jù)組織結(jié)構(gòu)如下所示:

NewImage

從上圖可以看到,目錄下每多加一個文件或文件夾,link count都會加1。

圖中顯示的都很清楚,不做過多贅述(其實是我懶了,哈哈...)

?

8 link、linkat、unlink、unlinkat和remove函數(shù)

從前面可以知道,多個目錄索引可以指向同一個文件,即多個目錄可以包含同一個文件。

link和linkat的作用是創(chuàng)建一個已存在文件的鏈接。

函數(shù)聲明:

#include <unistd.h>

int link(const char* existingpath, const char* newpath);

int linkat(int efd, const char* existingpath, int nfd, const char* newpath, int flag);

函數(shù)細節(jié):

  • 函數(shù)創(chuàng)建一個新目錄索引newpath,關(guān)聯(lián)到已存在文件existingpath;
  • 如果newpath已經(jīng)存在,返回錯誤;
  • newpath只有最后一個文件名會被創(chuàng)建,路徑其他部分必須已存在;
  • linkat的參數(shù)的作用和前面xxxat函數(shù)介紹過的類似,這里不再贅述;
  • 如果被鏈接的文件是一個符號鏈接文件,參數(shù)flag用來控制當前新建的鏈接是關(guān)聯(lián)到該符號鏈接(默認行為),還是該鏈接指向的文件(AT_SYMLINK_FOLLOW);
  • 一般來說不可以擴文件系統(tǒng)創(chuàng)建鏈接,防止文件系統(tǒng)間的硬鏈接循環(huán);
下面再了解一下unlink函數(shù)。

函數(shù)聲明:

#include <unistd.h>

int unlink(const char* pathname);

int unlinkat(int fd, const char* pathname, int flag);

函數(shù)細節(jié):

  • 函數(shù)會刪除目錄索引,并且對應(yīng)文件的inode的link count減1,如果link count不為0,則說明還有其他目錄索引指向該文件,不刪除該文件,否則刪除該文件;
  • 進程必須對該目錄有寫權(quán)限和執(zhí)行權(quán)限;
  • 如果pathname是一個符號鏈接,unlink移除該符號鏈接文件,而不是該符號鏈接指向的實體文件。沒有函數(shù)實現(xiàn)直接刪除實體文件這個功能。

和unlink類似功能的函數(shù)remove:

#include <stdio.h>

int remove(const char* pathname);

函數(shù)細節(jié):

  • remove一個文件相當于調(diào)用unlink,remove一個文件夾相當于調(diào)用rmdir(后面會介紹)。

?

9 rename和renameat函數(shù)

函數(shù)聲明:

#include <stdio.h>

int rename(const char* oldname, const char* newname);

int renameat(int oldfd, const char* oldname, int newfd, const char* newname);

函數(shù)細節(jié):

  • 如果oldname不是一個目錄路徑,說明我們正在重命名一個文件或符號鏈接。這里newname已存在,則不可以是一個已存在目錄的名字。如果newname已存在并且不是目錄名,則刪除已有文件newname,將oldname所指文件重命名為newname。權(quán)限要求:我們必須有包含oldname和newname文件的目錄的寫權(quán)限。
  • 如果oldname是一個目錄路徑,則我們在重命名一個目錄。如果newname已存在,它必須是一個目錄的名字,并且該目錄必須是空目錄(只有. 和 ..索引)。這種情況下,刪除已存在目錄newname,將待重命名目錄oldname重命名為newname。還需要注意的,newname不能包含oldname。例如:不能將目錄/usr/foo重命名為/usr/foo/testdir,因為/usr/foo是新目錄名的前綴,無法被刪除。
  • 如果oldname或newname為一個符號鏈接名,那么被重命名的時符號鏈接本身,不是符號鏈接指向的文件。
  • 我們不能重命名dot(.)和dot-dot(..),更確切地說,這兩個特殊名不能作為路徑名的最后一部分。
  • 如果oldname和newname相同,則函數(shù)返回成功,不做任何事情。

對renameat函數(shù)的參數(shù)含義不再贅述。

?

10 符號鏈接(Symbolic Links)

符號鏈接可以認為是文件的非直接指針,而硬鏈接(hard link)可以看做是文件的直接指針,因為它直接指向文件的inode。

  • 硬鏈接通常不可以跨文件系統(tǒng);
  • 只有超級用戶可以對一個目錄創(chuàng)建硬鏈接。

符號鏈接并沒有文件系統(tǒng)間的限制。

由于符號鏈接的存在,我們在操作文件或目錄時,總是需要知道該文件是否是一個符號鏈接,然后判斷該函數(shù)的操作對象是符號鏈接指向的文件還是符號鏈接本身。

下圖總結(jié)了一些常用函數(shù)是否追蹤鏈接,僅供參考:

NewImage

Example:

NewImage

鏈接情況如下圖所示:

NewImage

可以發(fā)現(xiàn),由于符號鏈接而出現(xiàn)了一個環(huán)。

再來試驗一下:

NewImage

我們發(fā)現(xiàn),這樣會無限循環(huán)下去。

解除循環(huán)的方法就是使用unlink刪除該符號鏈接。需要注意的一點是,如果這里出現(xiàn)的鏈接是硬鏈接,則刪除這個循環(huán)鏈接會困難得多。因此只有管理員權(quán)限才可以用link函數(shù)對一個文件建立硬鏈接。

有時候符號鏈接會造成一些迷惑的事情,如果使用者對符號鏈接不熟悉的話。

如下所示:

NewImage

符號鏈接可以鏈接一個不存在的文件,如果使用者對符號鏈接不熟悉,則很容易被這種情況迷惑。

這時,可以使用ls的”-l"命令看到有 “->"符號,或者前面符號位第一位的”l”表示符號鏈接,或者用ls得“-F”命令,符號鏈接文件后面會跟一個@符。

?

11 創(chuàng)建和讀取符號鏈接(Symbolic Links)

函數(shù)作用:創(chuàng)建符號鏈接

函數(shù)聲明:

#include <unistd.h>

int symlink(const char *actualpath, const char* sympath);

int symlinkat(const char* actualpath, int fd, const char* sympath);

參數(shù)說明:

  • 函數(shù)并不要求actualpath一定存在,在上面的例子中也看到了這一點。

因為open函數(shù)會打開符號鏈接指向的實際文件,所以需要一個函數(shù)打開符號鏈接本身。

函數(shù)聲明:

#include <unistd.h>

ssize_t readlink(const char* restrict pathname, char* restrict buf, size_t bufsize);

ssize_t readlinkat(int fd, const char* restrict pathname, char* restrict buf, size_t bufsize);

如果調(diào)用成功,函數(shù)從符號鏈接中讀取buf長的內(nèi)容。

?

?

參考資料:

《Advanced PRogramming in the UNIX Envinronment 3rd》

?


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产三级电影在线观看| 久久九九全国免费| 国产福利影院在线观看| 久久中文字幕二区| 无码国精品一区二区免费蜜桃| 中文在线一区| 免费成人在线看| 无码粉嫩虎白一线天在线观看| 黄视频在线免费看| 欧美年轻男男videosbes| 国产精品麻豆99久久久久久| 免费啪视频在线观看| 婷婷综合另类小说色区| 久久无码人妻一区二区三区| 亚洲精品偷拍视频| 欧美少妇一级片| 一级特黄aaa大片在线观看| www青青草原| 国产永久在线观看| 九九综合在线| www.国产精品.com| 日韩大片在线| 最近中文字幕mv2018在线高清| 久久免费电影网| 91精品福利| 美女免费视频一区| 日韩欧美在线视频免费观看| 永久免费成人代码| 中文字幕一区二区三区人妻不卡| 精品久久久久人成| 久久国产生活片100| 李宗瑞系列合集久久| 中文字幕av一区二区| 香港三日本8a三级少妇三级99| 欧美一级精品在线| 国产精品亚洲第一区| 欧美激情久久久久久久| 久久精品一卡二卡| 国产夫妻性爱视频| 国产福利91精品一区二区三区| 国产亚洲一二三区| 老司机一区二区| 成人一区二区电影| 色综合久久中文综合久久97| 亚洲一区二区在线播放相泽| 草草草在线视频| 亚洲亚洲免费| 亚洲最大成人综合网| 一区二区三区免费看视频| 亚洲一区二区三区自拍| 亚洲欧美亚洲| 亚洲国产另类久久久精品极度| 色欲AV无码精品一区二区久久| 一二三区在线| 自由日本语热亚洲人| 亚洲三区在线播放| 综合分类小说区另类春色亚洲小说欧美| 一区二区三区视频在线免费观看| 少妇av在线播放| 天天干天天草天天射| 国产成人久久久精品一区| 欧美日韩亚洲在线观看| 老司机激情视频| 日本精品www| 国产精品久久久久久久久免费相片| 色综合影院在线| 精品视频免费在线观看| 国产欧美一区二区白浆黑人| 四虎成人在线| 亚洲国产cao| 国产成+人+日韩+欧美+亚洲| 色爱区成人综合网| 久久久久噜噜噜亚洲熟女综合| 各处沟厕大尺度偷拍女厕嘘嘘| 久草福利资源在线视频| 欧美精品日韩三级| av资源在线免费观看| 日韩在线视频线视频免费网站| 欧美日韩在线观看一区二区| 亚洲www在线| 欧美一级淫片a免费视频| 99精品国产热久久91蜜凸| 国产二区国产一区在线观看| 久久久久99精品成人片三人毛片| 香蕉视频在线网址| 一区二区在线观看视频在线| 女人被狂躁到高潮的免费| 999福利在线视频| 国产一二三四五区| 国产不卡一区二区三区在线观看| 欧美乱妇20p| 亚洲国产av一区二区| 亚洲女性喷水在线观看一区| 午夜精品中文字幕| 亚洲午夜无码av毛片久久| 久久国内精品视频| 亚洲午夜国产一区99re久久| 美女把尿口扒开让男人桶在线观看| 亚洲欧美天堂| 香蕉视频官网在线观看日本一区二区| 欧美另类色图| 日本人69视频| 国产精品一级二级三级| brazzers欧美精品| 久久久综合精品| 狠狠躁夜夜躁久久躁别揉| 老司机午夜福利视频| a在线视频播放观看免费观看| 成人h动漫精品一区二区下载| 国产精品对白一区二区三区| 91欧美精品成人综合在线观看| 国产欧美一区二区三区不卡高清| 美女网站在线免费欧美精品| 人人在线97| 一区二区三区国产在线观看| 国产xxxxx| 视频亚洲一区二区| 日本伊人精品一区二区三区介绍| 免费xxxx性欧美18vr| 久久99精品国产麻豆不卡| 亚洲欧洲一区二区三区久久| 国产欧美视频在线观看| 亚洲天堂手机| 91精品国产高潮对白| 欧美成人第一页| 欧美午夜a级限制福利片| 国产福利第一页| 制服师生第一页| 久久久久青草大香线综合精品| 2019亚洲男人天堂| 中文字幕精品av| 日本精品免费视频| 日日夜夜精品视频免费| 中文字幕一区二区人妻痴汉电车| 亚洲综合在线一区| 日本免费观看视| 99九九热只有国产精品| 欧美高清一区二区| 欧美激情福利| 99久久婷婷国产综合精品电影√| 天堂在线国产| 亚洲色图视频免费播放| 久操精品在线| 日本在线小视频| 亚洲欧洲在线观看av| 伊人久久大香线蕉综合网站| 欧美疯狂party性派对| 精品人妻大屁股白浆无码| 亚洲妇女无套内射精| 999热精品视频| 久久波多野结衣| juy有坂深雪中文字幕| 国产区在线观看| 一本一道dvd在线观看免费视频| 亚洲免费av电影| 国产97在线 | 亚洲| 中文字幕第17页| 日韩免费毛片视频| 欧美日韩国产首页在线观看| 日韩一区二区在线看| 国产精品一区二区免费视频| 亚洲图色一区二区三区| 99re6热在线精品视频| 亚欧视频在线观看| 亚洲三级在线视频| 99re在线视频这里只有精品| 91亚洲国产成人久久精品| 午夜dj在线观看高清视频完整版| 女人被爽到呻吟gif动态图下载| 日韩精品福利视频| 欧美三级网页| 日韩欧美国产一区二区三区| 成人久久一区二区三区| 国产色产综合产在线视频| av免费在线观看网址| 欧美性猛交xxxx乱大交退制版| 国产精品久久久久精k8| 中文字幕一区在线观看视频| 日本波多野结衣在线| 亚洲精品www久久久久久| 中文字幕乱码无码人妻系列蜜桃| 久久久久久久一区二区| 国产欧美一区二区色老头| 国产一区二区三区不卡在线观看| 亚洲午夜一区二区三区| 亚洲xxxx18| 欧美精品一区二区三区四区| 99精品视频在线| 午夜激情福利视频| 性中国xxx极品hd| 四虎影视2018在线播放alocalhost| 日韩欧美亚洲国产精品字幕久久久| 肉肉视频在线观看| 狠狠艹夜夜干| 中文字幕无码人妻少妇免费| 欧美一区二区影视| 黄色一级视频免费| 激情综合网婷婷| 日韩中文字幕有码| 高清中文字幕mv的电影| 欧美性xxxxxbbbbbb精品| 自拍偷拍亚洲欧美| 国产一线二线三线在线观看| 久久午夜夜伦鲁鲁一区二区| 蜜桃无码一区二区三区| 91小视频在线| 国产亚洲精品久久久久久豆腐| 亚洲国产古装精品网站| 亚洲淫片在线视频| 国产精品永久| eeuss中文字幕| 国产成人高潮免费观看精品| 日本r级电影在线观看| 欧美一区亚洲| 久久成人免费电影| 四虎最新地址发布| 久久久久久久久综合影视网| 久久91麻豆精品一区| 91成人福利社区| 三级a三级三级三级a十八发禁止| 亚洲成色www.777999| 免费国产黄色片| 久久国产加勒比精品无码| 精品国产影院| 尤物视频免费| 91在线视频导航| 国产精品7m凸凹视频分类| 91亚洲精华国产精华精华液| 中出视频在线观看| 日韩免费电影一区二区| 丰满肥臀噗嗤啊x99av| 不卡区在线中文字幕| 最近国语视频在线观看免费播放| 免费人成网站在线观看欧美高清| 久久久亚洲精品一区二区三区| 午夜日韩成人影院| 久久久亚洲精品视频| av资源吧首页| 日本三级亚洲精品| 欧美大尺度激情区在线播放| 国产精品久久久久不卡| 国产精品的网站| 国产精品人人做人人爽人人添| 国产精品美腿一区在线看| 99re视频在线观看| 国产白丝网站精品污在线入口| 亚洲天堂2017| 性插视频在线观看| 欧美不卡高清| 国产乱妇无码大片在线观看| 国产一级片免费视频| 免费成人看片网址| 日韩精品黄色网| 国产精品入口麻豆免费| 91精品久久久久久久久久久久久久| 亚洲欧美日韩另类精品一区二区三区| 欧美精品一区在线发布| 天堂电影院在线| 中文成人在线| 99人久久精品视频最新地址| 国产精品视频内| 999精品视频一区二区三区| 精品美女在线观看视频在线观看| 天天色天天干天天色| 综合欧美亚洲日本| 亚洲自拍偷拍色片视频| 黄色av网站在线免费观看| 亚洲欧美日韩视频一区| 久久免费小视频| 污片视频在线免费观看| 免费成人深夜夜行网站| 亚洲国产精品激情在线观看| www.香蕉视频| 午夜精品福利一区二区三区蜜桃| 999国产精品一区| 欧美手机视频| 国产剧情一区二区在线观看| 欧美激情成人| 色婷婷激情久久| 在线看污网站| 亚洲一本二本| 性做久久久久久免费观看欧美| 国产午夜亚洲精品理论片色戒| 男女爱爱免费网站| 五月精品视频| 黑料吃瓜在线观看| 亚洲黄色一区二区| 一区二区三区视频| 久久免费看av| 日韩精品无码一区二区| 狠狠干综合网| 亚洲mv大片欧洲mv大片精品| 懂色av一区二区三区四区| 亚洲自拍另类综合| 免费看的www视频网站视频| 清纯粉嫩极品夜夜嗨av| 国产精品va在线播放| 黄色av一区二区三区| 久久久久久久久久久久久9999| 亚洲肉体裸体xxxx137| 三级ai视频| 桃花色综合影院| 久久精品小视频| 亚洲欧美乱综合图片区小说区| 3p乱日视频| 日韩精品有码在线观看| 欧美第一区第二区| 日韩精品免费一线在线观看| 蜜臀精品一区二区三区在线观看| 91av在线免费观看| 亚洲美女色禁图| 97天天综合网| 亚洲精品狠狠操| 国产日韩欧美大片| 亚洲免费人成在线视频观看| 国产精品美女久久久免费| 久久精品免视看国产成人| 青青草综合网| 扒开jk护士狂揉免费| 精品欧美乱码久久久久久1区2区| 99麻豆久久久国产精品免费| 国产精品成人一区二区艾草| 自拍视频国产精品| 国产精品jvid在线观看| 57pao国产一区二区| 羞羞的视频网站| bt欧美亚洲午夜电影天堂| 国产成人久久精品麻豆二区|