久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux命令备忘录

發布時間:2024/8/1 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux命令备忘录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

系統

硬件?|?狀態信息?|?用戶?|?限制?|?運行級別?|?root 密碼?|?編譯內核

正在運行的內核和系統信息 # uname -a # 獲取內核版本(和BSD版本) # lsb_release -a # 顯示任何 LSB 發行版版本信息 # cat /etc/SuSE-release # 獲取 SuSE 版本 # cat /etc/debian_version # 獲取 Debian 版本 使用 /etc/DISTR-release 其中DISTR(發行代號)=?lsb (Ubuntu), redhat, gentoo, mandrake, sun (Solaris), 等等。 # uptime # 顯示系統開機運行到現在經過的時間 # hostname # 顯示系統主機名 # hostname -i # 顯示主機的 IP 地址 # man hier # 描述文件系統目錄結構 # last reboot # 顯示系統最后重啟的歷史記錄

硬件信息

內核檢測到的硬件信息 # dmesg # 檢測到的硬件和啟動的消息 # lsdev # 關于已安裝硬件的信息 # dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8 # 讀取 BIOS 信息

Linux

# cat /proc/cpuinfo # CPU 訊息 # cat /proc/meminfo # 內存信息 # grep MemTotal /proc/meminfo # 顯示物理內存大小 # watch -n1 'cat /proc/interrupts' # 監控內核處理的所有中斷 # free -m # 顯示已用和空閑的內存信息 (-m 為 MB) # cat /proc/devices # 顯示當前核心配置的設備 # lspci -tv # 顯示 PCI 設備 # lsusb -tv # 顯示 USB 設備 # lshal # 顯示所有設備屬性列表 # dmidecode # 顯示從 BIOS 中獲取的硬件信息

FreeBSD

# sysctl hw.model # CPU 訊息 # sysctl hw # 得到很多硬件信息 # sysctl vm # 虛擬內存使用情況 # dmesg | grep "real mem" # 物理內存 # sysctl -a | grep mem # 內核內存的設置和信息 # sysctl dev # 顯示當前核心配置的設備 # pciconf -l -cv # 顯示 PCI 設備 # usbdevs -v # 顯示 USB 設備 # atacontrol list # 顯示 ATA 設備

顯示狀態信息

以下的命令有助于找出正在系統中運行著的程序。 # top # 顯示和更新使用 cpu 最多的進程 # mpstat 1 # 顯示進程相關的信息 # vmstat 2 # 顯示虛擬內存的狀態信息 # iostat 2 # 顯示 I/O 狀態信息(2 秒 間隙) # systat -vmstat 1 # 顯示 BSD 系統狀態信息(1 秒 間隙) # systat -tcp 1 # 顯示 BSD TCP 連接信息(也可以試試 -ip) # systat -netstat 1 # 顯示 BSD 當前網絡連接信息 # systat -ifstat 1 # 顯示 BSD 當前網卡帶寬信息 # systat -iostat 1 # 顯示 BSD CPU 和磁盤使用情況 # tail -n 500 /var/log/messages # 顯示最新500條內核/系統日志的信息 # tail /var/log/warn # 顯示系統警告信息(看syslog.conf)

用戶

# id # 顯示當前用戶和用戶組的 ID # last # 列出目前與過去登入系統的用戶相關信息 # who # 顯示目前登入系統的用戶信息 # groupadd admin # 建立新組"admin"和添加新用戶 colin 并加入 admin 用戶組(Linux/Solaris) # useradd -c "Colin Barschel" -g admin -m colin # userdel colin # 刪除用戶 colin(Linux/Solaris) # adduser joe # FreeBSD 添加用戶 joe(交互式) # rmuser joe # FreeBSD 刪除用戶 joe(交互式) # pw groupadd admin # 在 FreeBSD 上使用 pw # pw groupmod admin -m newmember # 添加新用戶到一個組 # pw useradd colin -c "Colin Barschel" -g admin -m -s /bin/tcsh # pw userdel colin; pw groupdel admin 加密過的密碼存儲在 /etc/shadow (Linux and Solaris) 或 /etc/master.passwd (FreeBSD) 中. 如果手動修改了 master.passwd,需要運行?# pwd_mkdb -p master.passwd?來重建數據庫。

使用 nologin 來臨時阻止所有用戶登錄(root除外)。用戶登錄時將會顯示 nologin 中的信息。 # echo "Sorry no login now" > /etc/nologin # (Linux) # echo "Sorry no login now" > /var/run/nologin # (FreeBSD)

限制

某些應用程序需要設置可打開最大文件和 socket 數量(像代理服務器,數據庫)。 默認限制通常很低。

Linux

每 shell/腳本

shell 的限制是受?ulimit?支配的。使用?ulimit -a?可查看其狀態信息。 舉個例子,改變可打開最大文件數從 1024 到 10240,可以這么做: # ulimit -n 10240 # 這只在shell中有用 ulimit?命令可以使用在腳本中來更改對此腳本的限制。

每 用戶/進程

登錄用戶和應用程序的限制可以在?/etc/security/limits.conf?中配置。舉個例子: # cat /etc/security/limits.conf * hard nproc 250 # 限制所有用戶進程數 asterisk hard nofile 409600 # 限制應用程序可打開最大文件數

系統級

用sysctl來設置內核限制。要使其永久,可以在?/etc/sysctl.conf?中進行配置。 # sysctl -a # 顯示所有系統限制 # sysctl fs.file-max # 顯示系統最大文件打開數 # sysctl fs.file-max=102400 # 更改系統最大文件打開數 # cat /etc/sysctl.conf fs.file-max=102400 # 在 sysctl.conf 中的永久項 # cat /proc/sys/fs/file-nr # 在使用的文件句柄數

FreeBSD

每 shell/腳本

在 csh 或 tcsh 中使用?limits?命令,在 sh 或 bash 中使用?ulimit?命令。

每 用戶/進程

在?/etc/login.conf?中配置登錄后的默認限制。未作限制的值為系統最大限制值。

系統級

內核限制同樣使用 sysctl 來設置。永久配置,在?/etc/sysctl.conf?或?/boot/loader.conf?中。其語法與 Linux 相同,只是鍵值不同。 # sysctl -a # 顯示所有系統限制 # sysctl kern.maxfiles=XXXX # 最大文件描述符數 kern.ipc.nmbclusters=32768 # 在 /etc/sysctl.conf 中的永久項 kern.maxfiles=65536 # Squid 通常用這個值 kern.maxfilesperproc=32768 kern.ipc.somaxconn=8192 # TCP 列隊。apache/sendmail 最好用這個值 # sysctl kern.openfiles # 在使用的文件描述符數 # sysctl kern.ipc.numopensockets # 已經開啟的 socket 數目 詳情請看?FreeBSD 手冊 11章。

Solaris

在?/etc/system?中的下列設置,會提高每個進程可以打開最大文件描述符的數量: set rlim_fd_max = 4096 # 一個進程可以打開文件描述符的"硬"限制 set rlim_fd_cur = 1024 # 一個進程可以打開文件描述符的"軟"限制

運行級別

Linux

一旦內核加載完成,內核會啟動?init?進程,然后運行?rc?腳本,之后運行所有屬于其運行級別的命令腳本。這些腳本都儲存在 /etc/rc.d/rcN.d 中(N代表運行級別),并且都建立著到 /etc/init.d 子目錄中命令腳本程序的符號鏈接。
默認運行級別配置在 /etc/inittab 中。它通常為 3 或 5: # grep default: /etc/inittab id:3:initdefault: 可以使用?init?來改變當前運行級別。舉個例子: # init 5 # 進入運行級別 5 運行級別列表如下:
  • 0 ? ? ? 系統停止
  • 1 ? ? ? 進入單用戶模式(也可以是 S)
  • 2 ? ? ? 沒有 NFS 特性的多用戶模式
  • 3 ? ? ? 完全多用戶模式(正常操作模式)
  • 4 ? ? ? 未使用
  • 5 ? ? ? 類似于級別3,但提供 XWindow 系統登錄環境
  • 6 ? ? ? 重新啟動系統
使用?chkconfig?工具控制程序在一個運行級別啟動和停止。 # chkconfig --list # 列出所有 init 腳本 # chkconfig --list sshd # 查看 sshd 在各個運行級別中的啟動配置 # chkconfig sshd --level 35 on # 對 sshd 在級別 3 和 5 下創建啟動項 # chkconfig sshd off # 在所有的運行級別下禁用 sshd Debian 和基于Debian 發行版像 Ubuntu 或 Knoppix 使用命令?update-rc.d?來管理運行級別腳本。默認啟動為 2,3,4 和 5,停止為 0,1 和 6。 # update-rc.d sshd defaults # 設置 sshd 為默認啟動級別 # update-rc.d sshd start 20 2 3 4 5 . stop 20 0 1 6 . # 用顯示參數 # update-rc.d -f sshd remove # 在所有的運行級別下禁用 sshd # shutdown -h now (或者 # poweroff) # 關閉停止系統

FreeBSD

BSD 啟動步驟不同于 SysV, 她沒有運行級別。她的啟動狀態(單用戶,有或沒有 XWindow)被配置在?/etc/ttys中。所有的系統腳本都位于?/etc/rc.d/中,第三方應用程序位于?/usr/local/etc/rc.d/中。service 的啟動順序被配置在?/etc/rc.conf?和/etc/rc.conf.local中。默認行為可在?/etc/defaults/rc.conf?中進行配置。 這些腳本至少響應 start|stop|status. # /etc/rc.d/sshd status sshd is running as pid 552. # shutdown now # 進入單用戶模式 # exit # 返回到多用戶模式 # shutdown -p now # 關閉停止系統 # shutdown -r now # 重新啟動系統 同樣可以使用進程?init?進入下列狀態級別。舉個例子:?# init 6?為重啟。
  • 0 ? ? ? 停止系統并關閉電源 (信號?USR2)
  • 1 ? ? ? 進入單用戶模式 (信號?TERM)
  • 6 ? ? ? 重新啟動 (信號?INT)
  • c ? ? ? 阻止進一步登錄 (信號?TSTP)
  • q ? ? ? 重新檢查 ttys(5) 文件 (信號?HUP)

重設 root 密碼

Linux 方法 1

在引導加載器(lilo 或 grub)中,鍵入如下啟選項: init=/bin/sh 內核會掛載 root 分區,進程?init?會啟動 bourne shell 而不是?rc,然后是運行級別。使用命令?passwd?設置密碼然后重啟。別忘了需要在單用戶模式下做這些動作。
如果重啟后 root 分區被掛載為只讀,重新掛在它為讀寫: # mount -o remount,rw / # passwd # 或者刪除 root 密碼 (/etc/shadow) # sync; mount -o remount,ro / # sync 在重新掛在為只讀之前 sync 一下 # reboot

FreeBSD 和 Linux 方法 2

FreeBSD 不會讓你這么做。解決方案是用其他操作系統(像系統緊急修復光盤)掛載 root 分區,然后更改密碼。
  • 用 live cd 或安裝盤啟動進入修復模式后,會得到一個 shell。
  • 用 fdisk 查找 root 分區。比如:fdisk /dev/sda
  • 掛載它并使用 chroot 命令:
# mount -o rw /dev/ad4s3a /mnt # chroot /mnt # 改變程序執行時所參考的根目錄位置為 /mnt # passwd # reboot

內核模塊

Linux

# lsmod # 列出所有已載入內核的模塊 # modprobe isdn # 載入 isdn 模塊

FreeBSD

# kldstat # 列出所有已載入內核的模塊 # kldload crypto # 載入 crypto 模塊

編譯內核

Linux

# cd /usr/src/linux # make mrproper # 清除所有東西,包括配置文件 # make oldconfig # 從當前內核配置文件的基礎上創建一個新的配置文件 # make menuconfig # 或者 xconfig (Qt) 或者 gconfig (GTK) # make # 創建一個已壓縮的內核映像文件 # make modules # 編譯模塊 # make modules_install # 安裝模塊 # make install # 安裝內核 # reboot

FreeBSD

要改變和重建內核,需要拷貝源配置文件然后編輯它。當然也可以直接編輯?GENERIC?文件。 # cd /usr/src/sys/i386/conf/ # cp GENERIC MYKERNEL # cd /usr/src # make buildkernel KERNCONF=MYKERNEL # make installkernel KERNCONF=MYKERNEL 要重建完全的操作系統: # make buildworld # 構建完全的系統,但不是內核 # make buildkernel # 使用 KERNCONF 配置文件編譯內核 # make installkernel # reboot # mergemaster -p # 建立臨時根環境并比對系統配置文件 # make installworld # mergemaster # 升級所有配置和其他文件 # reboot 對于源的一些小改動,有時候簡單的命令就足夠了: # make kernel world # 編譯并安裝內核和系統 # mergemaster # reboot

進程

列表?|?優先級?|?后臺/前臺?|?Top?|?Kill

進程列表

PID是每個進程唯一號碼。使用?ps?獲取所有正在運行的進程列表。 # ps -auxefw # 所有正在運行進程的詳盡列表 然而,更典型的用法是使用管道或者?pgrep: # ps axww | grep cron586 ?? Is 0:01.48 /usr/sbin/cron -s # ps aux | grep 'ss[h]' # Find all ssh pids without the grep pid # pgrep -l sshd # 查找所有進程名中有sshd的進程ID # echo $$ # The PID of your shell # fuser -va 22/tcp # 列出使用端口22的進程 # fuser -va /home # 列出訪問 /home 分區的進程 # strace df # 跟蹤系統調用和信號 # truss df # 同上(FreeBSD/Solaris/類Unix) # history | tail -50 # 顯示最后50個使用過的命令

優先級

用?renice?更改正在運行進程的優先級。負值是更高的優先級,最小為-20,其正值與 "nice" 值的意義相同。 # renice -5 586 # 更強的優先級 586: old priority 0, new priority -5 使用?nice?命令啟動一個已定義優先級的進程。 正值為低優先級,負值為高優先級。確定你知道?/usr/bin/nice?或者使用 shell 內置命令(# which nice)。 # nice -n -5 top # 更高優先級(/usr/bin/nice) # nice -n 5 top # 更低優先級(/usr/bin/nice) # nice +5 top # tcsh 內置 nice 命令(同上) nice 可以影響 CPU 的調度,另一個實用命令?ionice?可以調度磁盤 IO。This is very useful for intensive IO application which can bring a machine to its knees while still in a lower priority. 此命令僅可在 Linux (AFAIK) 上使用。你可以選擇一個類型(idle - best effort - real time),它的 man 頁很短并有很好的解釋。 # ionice c3 -p123 # 給 pid 123 設置為 idle 類型 # ionice -c2 -n0 firefox # 用 best effort 類型運行 firefox 并且設為高優先級 # ionice -c3 -p$$ # 將當前的進程(shell)的磁盤 IO 調度設置為 idle 類型 例中最后一條命令對于編譯(或調試)一個大型項目會非常有用。每一個運行于此 shell 的命令都會有一個較低的優先級,但并不妨礙這個系統。$$ 是你 shell 的 pid (試試 echo $$)。

前臺/后臺

當一個進程在 shell 中已運行,可以使用?[Ctrl]-[Z] (^Z),?bg?和?fg?來 調入調出前后臺。舉個例子:啟動 2 個進程,調入后臺。使用?jobs?列出后臺列表,然后再調入一個進程到前臺。 # ping cb.vu > ping.log ^Z # ping 使用 [Ctrl]-[Z] 來暫停(停止) # bg # 調入后臺繼續運行 # jobs -l # 后臺進程列表 [1] - 36232 Running ping cb.vu > ping.log [2] + 36233 Suspended (tty output) top # fg %2 # 讓進程 2 返回到前臺運行 使用?nohup?開啟一個持續運行的進程直到 shell 被關閉(避免掛斷)。 # nohup ping -i 60 > ping.log &

Top

top?程序用來實時顯示系統中各個進程的運行信息。 # top 當?top?在運行的時候,按下?h?鍵會顯示幫助畫面。常用鍵如下:
  • u [用戶名]?只顯示屬于此用戶的進程。使用 + 或者空白可以查看所有用戶
  • k [PID]?結束 PID 進程
  • 1?顯示所有進程狀態信息(只有Linux)
  • R?將當前排序倒轉

Kill命令與信號

使用?kill?或?killall?終止或發送一個信號給進程。 # ping -i 60 cb.vu > ping.log & [1] 4712 # kill -s TERM 4712 # 同 kill -15 4712 # killall -1 httpd # 發送 HUP 信號終止進程 httpd # pkill -9 http # 發送 TERM 信號終止包含 http 的進程 # pkill -TERM -u www # 發送 TERM 信號終止 www 所有者進程 # fuser -k -TERM -m /home # 終止所有訪問 /home 的進程(卸載該分區前) 下面是一些重要的信號:
  • 1 ? ? ??HUP?(掛起)
  • 2 ? ? ??INT?(中斷)
  • 3 ? ? ??QUIT?(退出)
  • 9 ? ? ??KILL?(KILL 信號不能被捕捉,不能被忽略。)
  • 15 ? ??TERM?(軟件終止信號)

文件系統

磁盤信息?|?Boot?|?磁盤使用情況?|?已打開的文件?|?掛載/重掛?|?掛載 SMB?|?掛載映像文件?|?Burn ISO?|?Create image?|?Memory disk?|?Disk performance

權限

用?chmod?和?chown?更改訪問權限和所有權。對于所有用戶的默認掩碼(umask)可以在 /etc/profile (Linux) 或 /etc/login.conf (FreeBSD) 中修改。其默認掩碼(umask)通常為 022。掩碼可以和777做減法,從而得到755的權限。 1 --x 執行 # Mode 764 = 執行/讀/寫 | 讀/寫 | 讀 2 -w- 寫 # |---所有者|---用戶組|---其他用戶| 4 r-- 讀ugo=a u=所有者, g=用戶組, o=其他用戶, a=所有用戶 # chmod [OPTION] MODE[,MODE] FILE # MODE 可以是 [ugoa]*([-+=]([rwxXst])) # chmod 640 /var/log/maillog # 更改 maillog 訪問權限為 -rw-r----- # chmod u=rw,g=r,o= /var/log/maillog # 同上 # chmod -R o-r /home/* # 遞歸去除所有其他用戶的可讀權限 # chmod u+s /path/to/prog # 在可執行位設置 SUID (知道你在干什么!) # find / -perm -u+s -print # 查找所有設置過 SUID 位的程序 # chown user:group /path/to/file # 改變文件的所有者和文件關聯的組 # chgrp group /path/to/file # 改變文件關聯的組 # chmod 640 `find ./ -type f -print` # Change permissions to 640 for all files # chmod 751 `find ./ -type d -print` # Change permissions to 751 for all directories

磁盤信息

# diskinfo -v /dev/ad2 # 顯示磁盤信息(扇區/大小) (FreeBSD) # hdparm -I /dev/sda # 顯示 IDE/ATA 磁盤信息 (Linux) # fdisk /dev/ad2 # 顯示和修改磁盤分區表 # smartctl -a /dev/ad2 # 顯示磁盤檢測信息

Boot

FreeBSD

如果新內核不能引導,要引導一個舊內核,停止啟動倒計時,做如下動作: # unload # load kernel.old # boot

系統掛載點/磁盤使用情況

# mount | column -t # 顯示系統已掛載分區情況 # df # 顯示磁盤剩余空間和掛載的設備 # cat /proc/partitions # 顯示所有設備的所有分區(Linux)

磁盤使用情況

# du -sh * # 列出當前目錄下所有文件夾大小 # du -csh # 當前目錄下所有目錄大小總數 # du -ks * | sort -n -r # 由大到小排序顯示目錄大小 # ls -lSr # 由小到大顯示文件列表

誰打開了那些文件

對于找出哪些文件阻止卸載分區并給出有代表性的錯誤是有幫助的: # umount /home/ umount: unmount of /home # 不能卸載,因為有一個文件鎖定了 homefailed: Device busy

FreeBSD 和大多數 Unix

# fstat -f /home # 對于一個掛載點 # fstat -p PID # 對于一個應用程序進程 ID # fstat -u user # 對于一個用戶 查找已打開日志文件(或其他已打開文件), 比如 Xorg: # ps ax | grep Xorg | awk '{print $1}' 1252 # fstat -p 1252 USER CMD PID FD MOUNT INUM MODE SZ|DV R/W root Xorg 1252 root / 2 drwxr-xr-x 512 r root Xorg 1252 text /usr 216016 -rws--x--x 1679848 r root Xorg 1252 0 /var 212042 -rw-r--r-- 56987 w 在 /var 中的只有一個 inum 為 212042 的文件: # find -x /var -inum 212042 /var/log/Xorg.0.log

Linux

使用?fuser?或?lsof?在一個掛載點中查找已打開的文件: # fuser -m /home # 列出訪問 /home 的進程 # lsof /home COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME tcsh 29029 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home) lsof 29140 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home) 關于一個應用程序: ps ax | grep Xorg | awk '{print $1}' 3324 # lsof -p 3324 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log 關于單個文件: # lsof /var/log/Xorg.0.log COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log

掛載/重掛載一個文件系統

舉個 cdrom 的例子。如果已經列于 /etc/fstab 中: # mount /cdrom 或在 /dev/ 中查找設備,亦或使用?dmesg?命令

FreeBSD

# mount -v -t cd9660 /dev/cd0c /mnt # cdrom # mount_cd9660 /dev/wcd0c /cdrom # 另外一個方法 # mount -v -t msdos /dev/fd0c /mnt # 軟驅 /etc/fstab 中的一條: # Device Mountpoint FStype Options Dump Pass# /dev/acd0 /cdrom cd9660 ro,noauto 0 0 要允許用戶做這些,可以這么做: # sysctl vfs.usermount=1 # 或者在 /etc/sysctl.conf 中插入一條 "vfs.usermount=1"

Linux

# mount -t auto /dev/cdrom /mnt/cdrom # 典型的 cdrom 掛載命令 # mount /dev/hdc -t iso9660 -r /cdrom # IDE # mount /dev/sdc0 -t iso9660 -r /cdrom # SCSI /etc/fstab 中的條目: /dev/cdrom /media/cdrom subfs noauto,fs=cdfss,ro,procuid,nosuid,nodev,exec 0 0

用 Linux 掛載一個 FreeBSD 分區

用 fdisk 查找分區號,這通常是 root 分區,但也可能是其他 BSD slice。如果 FreeBSD 有許多 slice,他們不列于同一個 fdisk 分區表中,但可見于 /dev/sda* 或 /dev/hda* 中。 # fdisk /dev/sda # 查找 FreeBSD 分區 /dev/sda3 * 5357 7905 20474842+ a5 FreeBSD # mount -t ufs -o ufstype=ufs2,ro /dev/sda3 /mnt /dev/sda10 = /tmp; /dev/sda11 /usr # 其他 slice

重掛載

不用卸載一個設備來重掛載。 對?fsck?來說是必須的。舉個例子: # mount -o remount,ro / # Linux # mount -o ro / # FreeBSD 從 cdrom 拷貝原始數據進一個 iso 映像文件: # dd if=/dev/cd0c of=file.iso

給即時燒錄(on-the-fly)添加 swap

假設你需要很多的 swap (即刻),如一個 2GB 文件 /swap2gb (只限 Linux)。 # dd if=/dev/zero of=/swap2gb bs=1024k count=2000 # mkswap /swap2gb # 創建交換區 # swapon /swap2gb # 激活這個 swap。現在可以使用了 # swapoff /swap2gb # 當使用完畢,釋放這個 swap # rm /swap2gb

掛載一個 SMB?共享

假設我們要訪問計算機 smbserver 上的名叫 myshare 的 SMB 共享,在 window PC 上鍵入的地址是 \\smbserver\myshare\。我掛載到 /mnt/smbshare 上。注意 cifs 必須是 IP 或 DNS 名,不是 Windows 名字。

Linux

# smbclient -U user -I 192.168.16.229 -L //smbshare/ # 列出共享 # mount -t smbfs -o username=winuser //smbserver/myshare /mnt/smbshare # mount -t cifs -o username=winuser,password=winpwd //192.168.16.229/myshare /mnt/share 此外,mount.cifs 軟件包可以存儲認證到一個文件中。例如,/home/user/.smb: username=winuser password=winpwd 現在可以像下面那樣掛載: # mount -t cifs -o credentials=/home/user/.smb //192.168.16.229/myshare /mnt/smbshare

FreeBSD

使用 -I 來獲取 IP (或 DNS 名);smbserver 是 Windows 名。 # smbutil view -I 192.168.16.229 //winuser@smbserver # 列出共享 # mount_smbfs -I 192.168.16.229 //winuser@smbserver/myshare /mnt/smbshare

掛載鏡像文件

Linux loop-back

# mount -t iso9660 -o loop file.iso /mnt # 掛載 CD 鏡像文件 # mount -t ext3 -o loop file.img /mnt # 用 ext3 文件系統掛載鏡像文件

FreeBSD

用于存儲設備 (如果需要做 # kldload md.ko 動作): # mdconfig -a -t vnode -f file.iso -u 0 # mount -t cd9660 /dev/md0 /mnt # umount /mnt; mdconfig -d -u 0 # 清除 md 設備 用于虛擬節點: # vnconfig /dev/vn0c file.iso; mount -t cd9660 /dev/vn0c /mnt # umount /mnt; vnconfig -u /dev/vn0c # 清除 vn 設備

Solaris and FreeBSD

用于 loop-back 文件接口或 lofi: # lofiadm -a file.iso # mount -F hsfs -o ro /dev/lofi/1 /mnt # umount /mnt; lofiadm -d /dev/lofi/1 # 清除 lofi 設備

創建并刻錄 ISO 鏡像文件

這將會拷貝 CD 或者 DVD 的扇區。當不用?conv=notrunc,鏡像文件會等于 CD 內容大小而非 CD 容量大小。看下面和?dd 例子。 # dd if=/dev/hdc of=/tmp/mycd.iso bs=2048 conv=notrunc 使用 mkisofs 把目錄中所有文件創建成 CD/DVD 鏡像文件。克服文件名限制:-r 開啟 Rock Ridge 擴展用于 Unix 系統,-J 開啟 Joliet 擴展用于微軟系統。-L 允許 ISO9660 文件名第一個字符為句點。 # mkisofs -J -L -r -V TITLE -o imagefile.iso /path/to/dir 對于 FreeBSD,mkisofs 可以到 port 的 sysutils/cdrtools 中找到。

刻錄 ISO 鏡像文件

FreeBSD

FreeBSD 默認情況下沒有在 ATAPI 驅動上啟用 DMA。DMA 可用 sysctl 命令啟用,其參數如下,或者在 /boot/loader.conf 中添加如下條目: hw.ata.ata_dma="1" hw.ata.atapi_dma="1" burncd?用于 ATAPI 驅動(burncd?為基本系統的一部分),cdrecord?(在 sysutils/cdrtools 中)用于 SCSI 驅動。 # burncd -f /dev/acd0 data imagefile.iso fixate # ATAPI 驅動 # cdrecord -scanbus # 查找 burner 設備描述符(如 1,0,0) # cdrecord dev=1,0,0 imagefile.iso

Linux

對于 Linux,同樣使用?cdrecord?如上文所述。此外,它還可以使用本地 ATAPI 接口查找設備描述符: # cdrecord dev=ATAPI -scanbus 然后同上面一樣燒錄 CD/DVD。

dvd+rw-tools

dvd+rw-tools?工具包(FreeBSD: ports/sysutils/dvd+rw-tools)可以做上面的一切,其還包括 growisofs 工具來刻錄 CD 或 DVD。本實例所引用的 DVD 設備?/dev/dvd?可能是指向?/dev/scd0?(Linux)的符號連接,或者?/dev/cd0?(FreeBSD),或者?/dev/rcd0c(NetBSD/OpenBSD),或者?/dev/rdsk/c0t1d0s2?(Solaris)。對于本實例?FreeBSD 手冊 18.7 章?上有一份很好的文檔。 # -dvd-compat 選項將完結光盤,光盤便不可再附加數據 # growisofs -dvd-compat -Z /dev/dvd=imagefile.iso # 刻錄已存在的 iso 鏡像文件 # growisofs -dvd-compat -Z /dev/dvd -J -R /p/to/data # 直接刻錄

轉換 Nero .nrg 文件成 .iso

Nero 簡單的添加了 300KB 的頭到一個常規的 iso 鏡像文件中。我們可用 dd 工具來去除它。 # dd bs=1k if=imagefile.nrg of=imagefile.iso skip=300

轉換 bin/cue 鏡像成 .iso

bchunk?程序可以做到這一點。在 FreeBSD 中,它在 port 的 sysutils/bchunk 中。 # bchunk imagefile.bin imagefile.cue imagefile.iso

創建基于文件的鏡像文件

舉個例子,一個使用文件 /usr/vdisk.img 的 1GB 分區。這里我們使用 vnode 0,但也可為 1。

FreeBSD

# dd if=/dev/random of=/usr/vdisk.img bs=1K count=1M # mdconfig -a -t vnode -f /usr/vdisk.img -u 0 # 創建設備 /dev/md1 # bsdlabel -w /dev/md0 # newfs /dev/md0c # mount /dev/md0c /mnt # umount /mnt; mdconfig -d -u 0; rm /usr/vdisk.img # 清除 md 設備 這個基于文件的鏡像文件可以在 /etc/rc.conf 和 /etc/fstab 中配置成啟動期間自動掛載。可用?# /etc/rc.d/mdconfig start?(先用?# mdconfig -d -u 0?命令刪除 md0 設備) 測試你的設置。
需要注意的是,那個自動設置僅工作于這個基于文件的鏡像文件不在 root 分區中。原因是 /etc/rc.d/mdconfig 腳本早于啟動就執行了,并且 root 分區仍然是只讀的。腳本 /etc/rc.d/mdconfig2 之后,鏡像文件將位于 root 分區外掛載。
/boot/loader.conf: md_load="YES" /etc/rc.conf: # mdconfig_md0="-t vnode -f /usr/vdisk.img" # /usr 不在 root 分區中 /etc/fstab: (行后的兩個 0 0 很重要,它告訴 fsck 忽略這個設備,現在還不存在。) /dev/md0 /usr/vdisk ufs rw 0 0 也可能在增加鏡像文件的大小之后,如增大到 300MB。 # umount /mnt; mdconfig -d -u 0 # dd if=/dev/zero bs=1m count=300 >> /usr/vdisk.img # mdconfig -a -t vnode -f /usr/vdisk.img -u 0 # growfs /dev/md0 # mount /dev/md0c /mnt # 文件分區現在為 300MB

Linux

# dd if=/dev/zero of=/usr/vdisk.img bs=1024k count=1024 # mkfs.ext3 /usr/vdisk.img # mount -o loop /usr/vdisk.img /mnt # umount /mnt; rm /usr/vdisk.img # 清楚

Linux with losetup

/dev/zero?比?urandom?更快,但對于加密來說卻不夠安全。 # dd if=/dev/urandom of=/usr/vdisk.img bs=1024k count=1024 # losetup /dev/loop0 /usr/vdisk.img # 創建并聯結 /dev/loop0 # mkfs.ext3 /dev/loop0 # mount /dev/loop0 /mnt # losetup -a # 查看已經掛載的 loop 設備 # umount /mnt # losetup -d /dev/loop0 # Detach # rm /usr/vdisk.img

創建基于內存的文件系統

基于內存的文件系統對于重量級 IO 應用程序來說非常快。怎樣創建一個掛載到 /memdisk 的 64M 分區:

FreeBSD

# mount_mfs -o rw -s 64M md /memdisk # umount /memdisk; mdconfig -d -u 0 # 清除該 md 設備 md /memdisk mfs rw,-s64M 0 0 # /etc/fstab 條目

Linux

# mount -t tmpfs -osize=64m tmpfs /memdisk

磁盤性能

在 ad4s3c (/home) 分區上讀寫一個 1GB 的文件。 # time dd if=/dev/ad4s3c of=/dev/null bs=1024k count=1000 # time dd if=/dev/zero bs=1024k count=1000 of=/home/1Gb.file # hdparm -tT /dev/hda # 僅限 Linux

網絡

路由?|?額外 IP?|?更改 MAC 地址?|?端口?|?防火墻?|?IP 轉發?|?NAT?|?DNS?|?DHCP?|?通信量?|?QoS?|?NIS

調試 (也可看流量分析)

Linux

# ethtool eth0 # 顯示以太網狀態(replaces mii-diag) # ethtool -s eth0 speed 100 duplex full # 把網卡 eth0 速度改為 100兆/秒,采用全雙工 # ethtool -s eth0 autoneg off # 禁用自動協商模式 # ethtool -p eth1 # 閃爍網絡接口 LED 燈 - 如果支持的話,非常實用 # ip link show # 在 Linux 上顯示所有網絡接口(同 ifconfig 類似) # ip link set eth0 up # 使設備激活(或Down掉)。同 "ifconfig eth0 up" # ip addr show # 在 Linux 上顯示所有 IP 地址(與 ifconfig 類似) # ip neigh show # 與 arp -a 類似

其他系統

# ifconfig fxp0 # 查看 "media" 字段(FreeBSD) # arp -a # 查看路由(或主機) ARP 條目(所有系統) # ping cb.vu # 第一個要試的事情... # traceroute cb.vu # 列印到目的地的路由路徑 # ifconfig fxp0 media 100baseTX mediaopt full-duplex # 100兆/秒 全雙工(FreeBSD) # netstat -s # 對每個網絡協議做系統級分析 另一些命令,雖然不總是默認安裝,但很好找: # arping 192.168.16.254 # 在網絡層上 Ping # tcptraceroute -f 5 cb.vu # 使用 tcp 替換 icmp 來跟蹤,透過防火墻

路由

列印路由表

# route -n # Linux 或使用 "ip route" # netstat -rn # Linux, BSD 和 UNIX # route print # Windows

添加刪除路由

FreeBSD

# route add 212.117.0.0/16 192.168.1.1 # route delete 212.117.0.0/16 # route add default 192.168.1.1 永久的添加路由可在 /etc/rc.conf 配置文件中設置 static_routes="myroute" route_myroute="-net 212.117.0.0/16 192.168.1.1"

Linux

# route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.16.254 # ip route add 192.168.20.0/24 via 192.168.16.254 # 等同于上面命令 # route add -net 192.168.20.0 netmask 255.255.255.0 dev eth0 # route add default gw 192.168.51.254 # ip route add default via 192.168.51.254 dev eth0 # 等同于上面命令 # route delete -net 192.168.20.0 netmask 255.255.255.0

Solaris

# route add -net 192.168.20.0 -netmask 255.255.255.0 192.168.16.254 # route add default 192.168.51.254 1 # 1 = 通過此路由跳數減 1 # route change default 192.168.50.254 1 永久條目配置在?/etc/defaultrouter?中。

Windows

# Route add 192.168.50.0 mask 255.255.255.0 192.168.51.253 # Route add 0.0.0.0 mask 0.0.0.0 192.168.51.254 使用?add -p?來是路由設置永久有效。

配置額外的 IP 地址

Linux

# ifconfig eth0 192.168.50.254 netmask 255.255.255.0 # 第一個 IP # ifconfig eth0:0 192.168.51.254 netmask 255.255.255.0 # 第二個 IP # ip addr add 192.168.50.254/24 dev eth0 # 等價命令 # ip addr add 192.168.51.254/24 dev eth0 label eth0:1

FreeBSD

# ifconfig fxp0 inet 192.168.50.254/24 # 第一個 IP # ifconfig fxp0 alias 192.168.51.254 netmask 255.255.255.0 # 第二個 IP 永久條目設置在 /etc/rc.conf 中 ifconfig_fxp0="inet 192.168.50.254 netmask 255.255.255.0" ifconfig_fxp0_alias0="192.168.51.254 netmask 255.255.255.0"

Solaris

用?ifconfig -a?命令檢查設置 # ifconfig hme0 plumb # 啟用網卡 # ifconfig hme0 192.168.50.254 netmask 255.255.255.0 up # 第一個 IP # ifconfig hme0:1 192.168.51.254 netmask 255.255.255.0 up # 第二個 IP

更改 MAC 地址

通常在你更改之前先停下網絡接口。不要告訴我為什么你想改變 MAC 地址...... # ifconfig eth0 down # ifconfig eth0 hw ether 00:01:02:03:04:05 # Linux # ifconfig fxp0 link 00:01:02:03:04:05 # FreeBSD # ifconfig hme0 ether 00:01:02:03:04:05 # Solaris # sudo ifconfig en0 ether 00:01:02:03:04:05 # Mac OS X Tiger # sudo ifconfig en0 lladdr 00:01:02:03:04:05 # Mac OS X Leopard 對于 Windows 已經有許多工具了。像?etherchange。或者看看 "Mac Makeup", "smac"。

使用中的端口

監聽打開的端口: # netstat -an | grep LISTEN # lsof -i # 列出所有因特網連接(Linux) # socklist # 列出打開的 socket (Linux) # sockstat -4 # 使用 socket 的應用程序列表(FreeBSD) # netstat -anp --udp --tcp | grep LISTEN # Linux # netstat -tup # 列出活躍的連接(Linux) # netstat -tupl # 列出系統中正在監聽的端口(Linux) # netstat -ano # Windows

防火墻

檢查正在運行的防火墻(只是典型配置):

Linux

# iptables -L -n -v # 狀態信息 Open the iptables firewall # iptables -P INPUT ACCEPT # 打開所有 # iptables -P FORWARD ACCEPT # iptables -P OUTPUT ACCEPT # iptables -Z # 把所有鏈的包及字節的計數器清空 # iptables -F # 清空所有鏈 # iptables -X # 刪除所有鏈

FreeBSD

# ipfw show # 狀態信息 # ipfw list 65535 # 如果顯示 "65535 deny ip from any to any",那防火墻已被禁用 # sysctl net.inet.ip.fw.enable=0 # 禁用 # sysctl net.inet.ip.fw.enable=1 # 啟用

路由 IP 轉發

Linux

查看然后啟用 IP 轉發: # cat /proc/sys/net/ipv4/ip_forward # 查看 IP 轉發 0=禁用, 1=啟用 # echo 1 > /proc/sys/net/ipv4/ip_forward 或者編輯 /etc/sysctl.conf: net.ipv4.ip_forward = 1

FreeBSD

查看并啟用: # sysctl net.inet.ip.forwarding # 查看 IP 轉發 0=禁用, 1=啟用 # sysctl net.inet.ip.forwarding=1 # sysctl net.inet.ip.fastforwarding=1 # 專用路由器或防火墻 Permanent with entry in /etc/rc.conf: gateway_enable="YES" # 如果主機是網關則設置為 YES。

Solaris

# ndd -set /dev/ip ip_forwarding 1 # 查看 IP 轉發 0=禁用, 1=啟用

NAT - 網絡地址轉換

Linux

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 激活 NAT # iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 20022 -j DNAT \ --to 192.168.16.44:22 # 轉發端口 20022 到內部 IP 端口(ssh) # iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 993:995 -j DNAT \ --to 192.168.16.254:993:995 # 轉發 993-995 范圍端口 # ip route flush cache # iptables -L -t nat # 查看 NAT 狀態信息 使用 -D 替換 -A 來刪除端口轉發。

FreeBSD

# natd -s -m -u -dynamic -f /etc/natd.conf -n fxp0 Or edit /etc/rc.conf with: firewall_enable="YES" # 設置 YES 來啟用防火墻功能 firewall_type="open" # 防火墻類型(看 /etc/rc.firewall) natd_enable="YES" # 啟用 natd (如果 firewall_enable == YES)。 natd_interface="tun0" # 公共的網絡接口或要使用的 IP 地址。 natd_flags="-s -m -u -dynamic -f /etc/natd.conf" 端口轉發: # cat /etc/natd.conf same_ports yes use_sockets yes unregistered_only # redirect_port tcp insideIP:2300-2399 3300-3399 # 端口范圍 redirect_port udp 192.168.51.103:7777 7777

DNS

在 unix 上,對于所有的網絡接口的 DNS 條目都存儲在 /etc/resolv.conf 文件中。主機域也儲存在這個文件中。最小化配置如下: nameserver 78.31.70.238 search sleepyowl.net intern.lab domain sleepyowl.net 檢查系統域名: # hostname -d # 等同于 dnsdomainname

Windows

在 Windows 上,DNS 配置于每個網絡接口。要顯示配置的 DNS 和清空 DNS 緩存可是使用: # ipconfig /? # 顯示幫助 # ipconfig /all # 顯示所有信息包括 DNS # ipconfig /flushdns # 清除 DNS 緩存

轉發查詢

Dig 是你測試 DNS 設置的好朋友。舉個例子,用于測試的 DNS 服務器為?213.133.105.2 ns.second-ns.de。查看哪個服務器客戶端接收應答(簡單應答). # dig sleepyowl.net sleepyowl.net. 600 IN A 78.31.70.238 ;; SERVER: 192.168.51.254#53(192.168.51.254) 路由器 192.168.51.254 應答了,并返回了一條 A 條目(記錄)。任何條目都可查詢,DNS 服務器可用 @ 來選定: # dig MX google.com # dig @127.0.0.1 NS sun.com # 測試本地服務器 # dig @204.97.212.10 NS MX heise.de # 查詢外部 # dig AXFR @ns1.xname.org cb.vu # 查看區傳送(zone transfer) 程式 host 也很強大。 # host -t MX cb.vu # 獲取郵件 MX 記錄 # host -t NS -T sun.com # 通過 TCP 連接獲取 NS 記錄 # host -a sleepyowl.net # 獲取所有

反向查詢

查找屬于一個 IP 地址(in-addr.arpa.)的域名。可用?dig,?host?和?nslookup?命令查詢: # dig -x 78.31.70.238 # host 78.31.70.238 # nslookup 78.31.70.238

/etc/hosts

單個主機可以配置于文件 /etc/hosts 來代替本地正在運行的?named?反向域名查詢。格式很簡單,舉個例子: 78.31.70.238 sleepyowl.net sleepyowl 對于 hosts 文件和 DNS 查詢之間的優先級,可在?/etc/nsswitch.conf?和?/etc/host.conf?中配置 order 名稱解析。這個文件同樣存在于 Windows 上,通常在: C:\WINDOWS\SYSTEM32\DRIVERS\ETC

DHCP

Linux

一些發行版(SuSE)使用 dhcpcd 作為客戶端。默認網絡接口是 eth0。 # dhcpcd -n eth0 # 觸發更新(并不總是可以工作) # dhcpcd -k eth0 # 釋放并關閉 租約(lease)的全部信息存儲在: /var/lib/dhcpcd/dhcpcd-eth0.info

FreeBSD

FreeBSD (和 Debian) 使用?dhclient。要配置一個網絡接口(如:bge0)運行: # dhclient bge0 租約(lease)的全部信息存儲在: /var/db/dhclient.leases.bge0 使用 /etc/dhclient.conf 設置 prepend 選項或強制不同的選項: # cat /etc/dhclient.conf interface "rl0" {prepend domain-name-servers 127.0.0.1;default domain-name "sleepyowl.net";supersede domain-name "sleepyowl.net"; }

Windows

dhcp 租約(lease)使用?ipconfig?來更新: # ipconfig /renew # 更新所有適配器 # ipconfig /renew LAN # 更新名叫 "LAN" 的適配器 # ipconfig /release WLAN # 釋放名叫 "WLAN" 的適配器 是的,這是一個使用簡單名稱重新命名你的適配器的好主意!

通信量分析(Traffic analysis)

Bmon?是一個小的流量監控控制臺,而且可以顯示不同的網絡接口的流量。

用 tcpdump 嗅探(sniff)

# tcpdump -nl -i bge0 not port ssh and src \(192.168.16.121 or 192.168.16.54\) # tcpdump -l > dump && tail -f dump # 緩沖輸出 # tcpdump -i rl0 -w traffic.rl0 # 把數據報文寫入二進制文件 # tcpdump -r traffic.rl0 # 從文件讀取數據報文(也可以使用 ethereal) # tcpdump port 80 # 兩個經典命令 # tcpdump host google.com # tcpdump -i eth0 -X port \(110 or 143\) # 查看端口 110(POP) 或 143(IMAP)的數據報文 # tcpdump -n -i eth0 icmp # 只捕獲 ping # tcpdump -i eth0 -s 0 -A port 80 | grep GET # -s 0 為全部包, -A 為 ASCII 另一些重要選項:
  • -A?? ? 顯示每個包清晰文本(除了報頭)
  • -X?? ? 顯示包的 ASCII 文本
  • -l?? ? 使標準輸出變為緩沖行形式
  • -D?? ? 顯示所有可用網絡接口
對于 Windows 可以使用?www.winpcap.org。使用 windump -D 來列出網絡接口。

用 nmap 掃描

Nmap?是一個用于 OS 探測的端口掃描工具,她通常在許多發行版上有安裝,并且同樣可用于 Windows。如果你不掃描你的服務器,駭客們會為你做這些... # nmap cb.vu # 掃描主機上所有保留的 TCP 端口 # nmap -sP 192.168.16.0/24 # 找出在 0/24 上主機所使用的 IP # nmap -sS -sV -O cb.vu # 做秘密 SYN 掃描來探測系統和系統服務的版本信息 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 3.8.1p1 FreeBSD-20060930 (protocol 2.0) 25/tcp open smtp Sendmail smtpd 8.13.6/8.13.6 80/tcp open http Apache httpd 2.0.59 ((FreeBSD) DAV/2 PHP/4. [...] Running: FreeBSD 5.X Uptime 33.120 days (since Fri Aug 31 11:41:04 2007) 其他非標準但好用的工具有?hping?(www.hping.org),她是一個 IP 分組組裝/分析器,和?fping?(fping.sourceforge.net)。fping 可以在一個循環隊列(round-robin fashion)中掃描多種主機。

流量控制(QoS)

流量控制管理著一個網絡的隊列、流量監控、調度以及其他流量設置(traffic parameters)。以下簡單實用的示例使用 Linux 和 FreeBSD 的能力來更好的利用帶寬。

上傳限制

DSL 或有線調制解調器有一個很長的列隊來提高上傳吞吐量(upload throughput)。然而用一個快速的設備(如以太網)填充這個列隊將大大減少交互性。這就是限制設備上傳速度有用的原因,以匹配調制解調器的實際能力,這可以有效提高交互性。設置大約為 modem 最大速度的 90%。

Linux

給 512K 上傳速度的 modem。 # tc qdisc add dev eth0 root tbf rate 480kbit latency 50ms burst 1540 # tc -s qdisc ls dev eth0 # 狀態 # tc qdisc del dev eth0 root # 刪除隊列 # tc qdisc change dev eth0 root tbf rate 220kbit latency 50ms burst 1540

FreeBSD

FreeBSD 使用?dummynet?來控制帶寬,其配置工具為 ipfw。Pipe 用來設置限制帶寬的單位[K|M]{比特/秒|字節/秒},0 意味著沒有限制。使用同樣的 pipe 數字可重新配置它。舉個例子,限制上傳帶寬為 500K。 # kldload dummynet # 如有必要加載這個模塊 # ipfw pipe 1 config bw 500Kbit/s # 創建一個帶寬限制的 pipe # ipfw add pipe 1 ip from me to any # 轉移所有上傳進入這個 pipe

服務質量 (Quality of service)

Linux

使用?tc?的優先級隊列來優化 VoIP。在?voip-info.org?或?www.howtoforge.com?上可以看到完整的例子。假設 VoIP 使用 UDP 端口 10000:11024 并且使用 eth0 設備(也可為 ppp0 或 so)。下列命令定義了三個隊列,并且用 QoS?0x1e(設置所有位) 強制 VOIP 流量到隊列 1。默認流量流入隊列 3,Qos?Minimize-Delay?流入隊列 2。 # tc qdisc add dev eth0 root handle 1: prio priomap 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 0 # tc qdisc add dev eth0 parent 1:1 handle 10: sfq # tc qdisc add dev eth0 parent 1:2 handle 20: sfq # tc qdisc add dev eth0 parent 1:3 handle 30: sfq # tc filter add dev eth0 protocol ip parent 1: prio 1 u32 \match ip dport 10000 0x3C00 flowid 1:1 # 使用服務端端口范圍match ip dst 123.23.0.1 flowid 1:1 # 或/和使用服務器 IP 狀態和移除: # tc -s qdisc ls dev eth0 # queue status # tc qdisc del dev eth0 root # delete all QoS

計算端口范圍和掩碼 (mask)

用你所計算的端口掩碼來定義 tc 過濾器的端口范圍。查詢 2^N 端口范圍結尾,推斷范圍并轉換成十六進制。這就是你的掩碼 (mask)。例如 10000 -> 11024,它的范圍是 1024。 # 2^13 (8192) < 10000 < 2^14 (16384) # 結尾是 2^14 = 16384 # echo "obase=16;(2^14)-1024" | bc # 掩碼是 0x3C00

FreeBSD

假設最大連接帶寬為 500Kbit/s,我們使用優先級 100:10:1 定義 3 個隊列給 VoIP:ssh:剩余所有。 # ipfw pipe 1 config bw 500Kbit/s # ipfw queue 1 config pipe 1 weight 100 # ipfw queue 2 config pipe 1 weight 10 # ipfw queue 3 config pipe 1 weight 1 # ipfw add 10 queue 1 proto udp dst-port 10000-11024 # ipfw add 11 queue 1 proto udp dst-ip 123.23.0.1 # 或/和使用服務器 IP # ipfw add 20 queue 2 dsp-port ssh # ipfw add 30 queue 3 from me to any # 剩余所有 狀態和移除: # ipfw list # 規則信息 # ipfw pipe list # 管道信息 # ipfw flush # 刪除除默認外所有規則

NIS 調試

一些可工作在已配置好的 NIS 客戶端上的命令: # ypwhich # 獲取提供 NIS 服務的服務器名 # domainname # 已配置的 NIS 域名 # ypcat group # 列印 NIS 映射 group # cd /var/yp && make # 重建 yp 數據庫 ypbind 正在運行嗎? # ps auxww | grep ypbind /usr/sbin/ypbind -s -m -S servername1,servername2 # FreeBSD /usr/sbin/ypbind # Linux # yppoll passwd.byname Map passwd.byname has order number 1190635041. Mon Sep 24 13:57:21 2007 The master server is servername.domain.net.

Linux

# cat /etc/yp.conf ypserver servername domain domain.net broadcast

SSH SCP

公鑰認證?|?指紋?|?SCP?|?隧道(Tunneling)

Public key authentication

使用公鑰認證而不是密碼連接主機。方法是附加你的公鑰文件到遠程主機。本例中我們用客戶端產生的 key?從?host-client?連接到?host-server
  • 使用 ssh-keygen 生成密鑰對。私鑰放在?~/.ssh/id_dsa,公鑰在?~/.ssh/id_dsa.pub。
  • 拷貝你的公鑰到服務器的?~/.ssh/authorized_keys2。
# ssh-keygen -t dsa -N '' # cat ~/.ssh/id_dsa.pub | ssh you@host-server "cat - >> ~/.ssh/authorized_keys2"

使用來自 ssh.com 的 Windows 客戶端

ssh.com 的非商業性版本的客戶端可下載自它主 FTP 站點:ftp.ssh.com/pub/ssh/。 用 ssh.com 客戶端產生的密鑰需要在 OpenSSH 服務器上進行轉換。可以使用 ssh-keygen 命令來完成。
  • 使用 ssh.com 客戶端創建一對密鑰:Settings - User Authentication - Generate New....
  • 我使用 DSA 密鑰類型;密鑰長度為 2048。
  • 拷貝 ssh.com 客戶端產生的公鑰到服務器的 ~/.ssh 目錄。
  • 她的密鑰對在 C:\Documents and Settings\%USERNAME%\Application Data\SSH\UserKeys。
  • 在服務器上使用 ssh-keygen 轉換公鑰: # cd ~/.ssh # ssh-keygen -i -f keyfilename.pub >> authorized_keys2
注意:?我們使用 DSA 密鑰,使用 RSA 密鑰也是可以的。這個密鑰不受密碼保護。

在 Windows 上使用 Putty

Putty?是一個簡單并且自由的(MIT許可)?ssh Windows 客戶端。
  • 使用 puTTYgen 程序創建密鑰對。
  • 保存密鑰對(比如:C:\Documents and Settings\%USERNAME%\.ssh).
  • 拷貝公鑰到服務器的 ~/.ssh 目錄: # scp .ssh/puttykey.pub root@192.168.51.254:.ssh/
  • 使用 ssh-keygen 在 OpenSSH 服務器上轉換這個公鑰: # cd ~/.ssh # ssh-keygen -i -f puttykey.pub >> authorized_keys2
  • 在 Putty 中設置指向私鑰的位置:Connection - SSH - Auth

檢查指紋

在首次連接時,SSH 會請求保存不知道的主機指紋。要避免中間人(man-in-the-middle)攻擊,服務器的管理員可以發送密鑰指紋給客戶端,來讓其在首次登陸時驗證服務器的真實性。使用?ssh-keygen -l?獲取服務器的指紋: # ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub # RSA 密鑰 2048 61:33:be:9b:ae:6c:36:31:fd:83:98:b7:99:2d:9f:cd /etc/ssh/ssh_host_rsa_key.pub # ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key.pub # DSA 密鑰(默認) 2048 14:4a:aa:d9:73:25:46:6d:0a:48:35:c7:f4:16:d4:ee /etc/ssh/ssh_host_dsa_key.pub 現在客戶端在連接到服務器時可驗證其服務器的真實性: # ssh linda The authenticity of host 'linda (192.168.16.54)' can't be established. DSA key fingerprint is 14:4a:aa:d9:73:25:46:6d:0a:48:35:c7:f4:16:d4:ee. Are you sure you want to continue connecting (yes/no)? yes

安全文件傳輸

一些簡單的命令:
# scp file.txt host-two:/tmp # scp joe@host-two:/www/*.html /www/tmp # scp -r joe@host-two:/www /www/tmp 在 Konqueror 或 Midnight 控制臺中,用地址?fish://user@gate?來訪問遠程文件系統是可行的,就是比較慢而已。
此外,也可以用基于 SCP 文件系統客戶端的?sshfs?來掛載一個遠程目錄。看 fuse sshfs.

隧道(Tunneling)

SSH 隧道可以讓你通過 SSH 連接進行端口轉發(轉發/反向隧道),從而確保了傳輸及端口訪問的安全。它只能工作在 TCP 協議上。通常端口轉發命令如下(也可看?ssh 和 NAT 實例): # ssh -L localport:desthost:destport user@gate # gate 為目標主機網關 # ssh -R destport:desthost:localport user@gate # 轉發你的 localport 到目標端口 # ssh -X user@gate # 轉發 X 程序 這將會連接到 gate 并轉發端口到目標主機 desthost:destport。注意 desthost 為 gate 中的目標主機名。因此,如果連接到了 gate,那么 desthost 就是 localhost。也可以做更多的端口轉發。

在 gate 上直接轉發

假設我們想訪問在 gate 上運行的 CVS(2401端口) 和 HTTP(80端口)。下面是個簡單的例子,desthost 就是 localhost,我們使用本的端口 8080 代替 80 端口,所以我們不需要 root 權限。一旦 ssh session 打開,二個服務就都可在本地端口訪問。 # ssh -L 2401:localhost:2401 -L 8080:localhost:80 user@gate

轉發 Netbios 和遠程桌面到第二個服務器

假設有一臺在 gate 后面沒有運行 ssh 的 Winodws SMB 服務器。我們需要訪問 SMB 共享和遠程桌面。 # ssh -L 139:smbserver:139 -L 3388:smbserver:3389 user@gate 現在這個 SMB 共享可以使用 \\127.0.0.1\ 訪問,但只能在本地共享關閉的情況下,因為本的共享也是在 139 端口監聽的。
保持本的共享也是可行的,因此我們需要為這個通道使用新 IP 地址來新建一個虛擬設備,SMB 共享將會使用此地址連接。此外,本地 RDP 已經在 3389 端口監聽了,所以我們選擇端口 3388。對于這個例子,讓我們使用一個虛擬 IP 地址 10.1.1.1。
  • 對于 Putty 上使用源端口=10.1.1.1:139。它可以創建多重回路(multiple loop)設備和通道。在 Windows 2000 上,只有 Putty 為我工作。
  • 對于 ssh.com 的客戶端,要禁用 "Allow local connections only"。因為 ssh.com 客戶端綁定了所有地址,所以只能連接單個共享。
現在用 IP 地址 10.1.1.1 創建回路(loopback)接口:
  • # 系統->控制面板->添加硬件 # 是,我已經連接了此硬件(Y) # 添加新的硬件設備(在列表最下面)。
  • # 安裝我手動選擇的硬件 # 網絡適配器 # Microsoft , Microsoft Loopback Adapter。
  • 配置這個假設備的 IP 地址為 10.1.1.1,掩碼 255.255.255.0,沒有網關。
  • 高級->WINS,開啟 LMHOSTS 查詢;禁用 TCP/IP 上的 NetBIOS。
  • # 啟用 Microsoft 網絡客戶端。# 禁用 Microsoft 網絡文件和打印機共享
做完這些之后我有重啟。現在用 \\10.1.1.1 連接 SMB 共享和用 10.1.1.1:3388 連接遠程桌面。

調試

如果不能工作:
  • 端口有沒有轉發:運行控制臺運行 netstat -an 命令并查看有沒有 0.0.0.0:139 或者 10.1.1.1:139
  • 有沒有 telnet 到 10.1.1.1 139?
  • 你需要打開 "本地端口接受其他主機連接"。
  • "Microsoft 網絡文件和打印機共享" 有沒有被禁用?

在 NAT 后面連接兩個客戶端

假設兩個客戶端在一個 NAT 網關后面,cliadmin 客戶端要連接到 cliuser 客戶端(目的地),兩者都可用 ssh 登錄到正在運行 sshd 的 gate 上。你不需要 root 權限,只要端口大于 1024 即可。我們在 gate 上使用 2022 端口。而且,由于 gate 使用與本地,所以網關端口不是必須的。
開啟 cliuser 客戶端(從目標到 gate): # ssh -R 2022:localhost:22 user@gate # 轉發客戶端 22 端口到 gate:2022 端口 開啟 cliadmin 客戶端(從主機到 gate): # ssh -L 3022:localhost:2022 admin@gate # 轉發客戶端 3022 端口到 gate:2022 端口 現在 admin 可以直接連接 cliuser 客戶端: # ssh -p 3022 admin@localhost # local:3022 -> gate:2022 -> client:22

在 NAT 后面的 VNC 連接

假設一個在 NAT 后面,監聽在端口 5900 上可被訪問的 Windows VNC 客戶端。
開啟 cliwin 客戶端到 gate: # ssh -R 15900:localhost:5900 user@gate 開啟 cliadmin 客戶端(從主機到 gate): # ssh -L 5900:localhost:15900 admin@gate 現在 admin 直接連接到 VNC 客戶端: # vncconnect -display :0 localhost

使用 SSH 建立 VPN

自 4.3 版開始,OpenSSH 可以使用 tun/tap?設備來加密一個隧道。其非常類似于基于 TLS 的 VPN 解決方案(像 OpenVPN)。對于 SSH 的一個優勢是,她不需要安裝和配置額外的軟件。另外隧道使用 SSH 認證(像共享密鑰)。 其缺點是,對于一個緩慢的連接, 其傳輸效率較低。并且這個隧道依賴于單個(易斷的) TCP 鏈接。這個技術對于快速設置一個基于 IP 的 VPN 來說非常有用。她對于用單個 TCP 端口轉發沒有限制,并且在所有 3/4 層 協議像 ICMP、TCP/UDP 等上都可用。不管怎么樣,下面這些選擇在 sshd_conf 文件中是必須的: PermitRootLogin yes PermitTunnel yes

單個 P2P 連接

這里,我們用點對點隧道連接 hclient 和 hserver 兩個主機。這個連接是從 hclient 開始到 hserver 的,并且是用 root 來做。這個通道的連接點是 10.0.1.1(服務端)和 10.0.1.2(客戶端),然后我們創建設備 tun5(當然也可以是其它數字)。這個過程非常簡單:
  • 使用 SSH 的通道選項 -w 來連接
  • 設置隧道的 IP 地址。服務端和客戶端各一次。

連接到服務端

連接始于客戶端,然后再服務端執行命令。

Linux上的服務端

cli># ssh -w5:5 root@hserver srv># ifconfig tun5 10.0.1.1 netmask 255.255.255.252 # 在服務端 shell 上執行

FreeBSD上的服務端

cli># ssh -w5:5 root@hserver srv># ifconfig tun5 10.0.1.1 10.0.1.2 # 在服務端 shell 上執行

連接到客戶端

在客戶端上執行命令: cli># ifconfig tun5 10.0.1.2 netmask 255.255.255.252 # Linux上的客戶端 cli># ifconfig tun5 10.0.1.2 10.0.1.1 # FreeBSD上的客戶端 現在兩個主機都連上了,并且可以在任何 3/4 層協議上使用此通道 IP 地址透明的通訊。

連接兩個網絡

除上面的 p2p 設置外,一個更有用的是SSH VPN 用兩個 gate 連接兩個私有網絡。假設有這樣一個例子,netA 為 192.168.51.0/24 還有 netB 為 192.168.16.0/24。設置過程同上面相似,我們只需要添加 routing。如果 gate 不同于默認網關,那在私有網絡接口上必須開啟 NAT。
192.168.51.0/24 (netA)|gateA <-> gateB|192.168.16.0/24 (netB)
  • 使用隧道選項 -w 連接 SSH。
  • 配置隧道的 IP 地址。服務端和客戶端各一次。
  • 為兩個網絡添加 routing。
  • 如果需要,在 gate 的私有網絡接口上開啟 NAT。
設置是從 netA 中的 gasteA 開始的.

連接 gateA 到 gateB

連接從 gateA 開始,命令執行于 gateB。

Linux 上的 gateB

gateA># ssh -w5:5 root@gateB gateB># ifconfig tun5 10.0.1.1 netmask 255.255.255.252 # 在 gateB 的 shell 中執行 gateB># route add -net 192.168.51.0 netmask 255.255.255.0 dev tun5 gateB># echo 1 > /proc/sys/net/ipv4/ip_forward # 如果不是默認網關 gateB># iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

FreeBSD 上的 gateB

gateA># ssh -w5:5 root@gateB # 創建 tun5 設備 gateB># ifconfig tun5 10.0.1.1 10.0.1.2 # 在 gateB 的 shell 中執行 gateB># route add 192.168.51.0/24 10.0.1.2 gateB># sysctl net.inet.ip.forwarding=1 # 如果不是默認網關 gateB># natd -s -m -u -dynamic -n fxp0 # 看 NAT gateA># sysctl net.inet.ip.fw.enable=1

配置 gateA

在 gateA 上執行命令:

Linux 上的 gateA

gateA># ifconfig tun5 10.0.1.2 netmask 255.255.255.252 gateA># route add -net 192.168.16.0 netmask 255.255.255.0 dev tun5 gateA># echo 1 > /proc/sys/net/ipv4/ip_forward gateA># iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

FreeBSD 上的 gateA

gateA># ifconfig tun5 10.0.1.2 10.0.1.1 gateA># route add 192.168.16.0/24 10.0.1.2 gateA># sysctl net.inet.ip.forwarding=1 gateA># natd -s -m -u -dynamic -n fxp0 # 看 NAT gateA># sysctl net.inet.ip.fw.enable=1 現在兩個私有網絡都可以通過 SSH VPN 來透明的連接。如果 gate 不是默認網關,那么 IP 轉發和 NAT 設置都是必須的。在這種情況下,客戶端將不知道在哪里轉發響應(response),并且 NAT 必須是開啟的。

RSYNC

Rsync 差不多可以代替 cp 和 scp,此外,斷點續傳是重啟有效的。尾部的斜杠也有著不同的意思,請閱讀 man 頁面......這里有一些例子:
拷貝目錄中所有內容: # rsync -a /home/colin/ /backup/colin/ # rsync -a /var/ /var_bak/ # rsync -aR --delete-during /home/user/ /backup/ # 使用相對路徑(看下面) 同之前一樣,但使用了壓縮和網絡。Rsync 使用 SSH 進行傳輸,并且使用 SSH 密鑰,如果設置的話。和 SCP 一樣使用 ":"。一個典型的拷貝: # rsync -axSRzv /home/user/ user@server:/backup/user/ 排除在 /home/user/ 中任何 tmp 目錄,并且保持相對目錄層次結構,遠程目錄的結構就是 /backup/home/user/。典型的用于備份的命令。 # rsync -azR --exclude /tmp/ /home/user/ user@server:/backup/ SSH 連接使用端口 20022: # rsync -az -e 'ssh -p 20022' /home/colin/ user@server:/backup/colin/ 使用 rsync 守護進程(使用"::")是很快的,但沒有透過 SSH 加密。 位置 /backup 定義在了配置文件 /etc/rsyncd.conf 中。變量 RSYNC_PASSWORD 可以設置用來免除手動輸入密碼。 # rsync -axSRz /home/ ruser@hostname::rmodule/backup/ # rsync -axSRz ruser@hostname::rmodule/backup/ /home/ # 回拷貝 一些重要選項:
  • -a, --archive?歸檔模式,等于 -rlptgoD (非 -H)
  • -r, --recursive?對子目錄以遞歸模式處理
  • -R, --relative?使用相對路徑名
  • -H, --hard-links?保留硬鏈結
  • -S, --sparse?對稀疏文件進行特殊處理以節省DST的空間
  • -x, --one-file-system?不跨越文件系統邊界
  • --exclude=PATTERN?指定排除不需要傳輸的文件模式
  • --delete-during?傳輸期間刪除
  • --delete-after?傳輸結束以后再刪除

在 Windows 上使用 Rsync

可以通過 cygwin 或 獨立打包的?cwrsync?來在 Windows 上運行 rsync。這對于自動備份來說非常方便。只裝其中一個(不是兩個),然后添加路徑到 Windows 系統變量中:# 控制面板 -> 系統 -> 高級標簽,環境變量按鈕。編輯 "Path" 添加 rsync 的安裝路徑,比如:C:\Program Files\cwRsync\bin 或者 C:\cygwin\bin。這可以讓?rsync?和?ssh?可用于 Windows 命令窗口中。

公鑰認證

Rsync 是自動使用 SSH 隧道的,因此在服務端使用 SSH 認證。自動備份可免受用戶的影響,rsync 命令對于使用 SSH 公鑰認證可以不需要密碼。
下面所有的命令都可在 windows 控制臺中執行。在控制臺(開始 -> 運行 -> cmd)中像在?SSH?中描述的那樣創建和上傳密鑰,根據你的情況改變 "user" 和 "server"。如果文件 authorized_keys2 不存在,拷貝 id_dsa.pub 成 authorized_keys2 并上傳它。 # ssh-keygen -t dsa -N '' # 創建密鑰對 # rsync user@server:.ssh/authorized_keys2 . # 從服務器拷貝本地文件 # cat id_dsa.pub >> authorized_keys2 # 或者使用編輯器添加這個公鑰 # rsync authorized_keys2 user@server:.ssh/ # 拷貝文件回服務器 # del authorized_keys2 # 刪除本地拷貝 現在測試一下(在同一行里面): rsync -rv "/cygdrive/c/Documents and Settings/%USERNAME%/My Documents/" \ 'user@server:My\ Documents/'

自動備份

使用批處理文件自動備份并添加到任務計劃(程序 -> 附件 -> 系統工具 -> 任務計劃)。舉個例子,創建批處理文件 backup.bat 取代 user@server。 @ECHO OFF REM rsync the directory My Documents SETLOCAL SET CWRSYNCHOME=C:\PROGRAM FILES\CWRSYNC SET CYGWIN=nontsec SET CWOLDPATH=%PATH% REM uncomment the next line when using cygwin SET PATH=%CWRSYNCHOME%\BIN;%PATH% echo Press Control-C to abort rsync -av "/cygdrive/c/Documents and Settings/%USERNAME%/My Documents/" \ 'user@server:My\ Documents/' pause

SUDO

Sudo 可以給用戶一些超級用戶的權限而不需要 root 密碼。Sudo 對于一個服務器和工作站混合的多用戶環境來說非常有用。使用 sudo 運行命令: # sudo /etc/init.d/dhcpd restart # 用 root 權限運行 rc 腳本 # sudo -u sysadmin whoami # 使用其他用戶運行命令

配置

Sudo 的配置在?/etc/sudoers?中,并且只能用?visudo?編輯。其基本語法是(列表是以逗號分隔的): user hosts = (runas) commands # 在 /etc/sudoers 中
  • users?一個或多個用戶或是%用戶組(像 %wheel) 來獲得權限
  • hosts?主機列表(或 ALL)
  • runas?列出用戶以何種身份(或 ALL)來執行命令,放在 ( ) 內!
  • commands?列出可被 users 以 runas 或 root 權限運行的命令(或 ALL)
另外一些關鍵字可以定義別名,他們是 User_Alias, Host_Alias, Runas_Alias 和 Cmnd_Alias。這對于一些較大的設置比較有用。下面是 sudoers 例子: # cat /etc/sudoers # 主機別名 Host_Alias DMZ = 212.118.81.40/28 Host_Alias DESKTOP = work1, work2# 用戶別名 和 runas 別名 User_Alias ADMINS = colin, luca, admin User_Alias DEVEL = joe, jack, julia Runas_Alias DBA = oracle,pgsql# 命令別名,其值為全路徑命令 Cmnd_Alias SYSTEM = /sbin/reboot,/usr/bin/kill,/sbin/halt,/sbin/shutdown,/etc/init.d/ Cmnd_Alias PW = /usr/bin/passwd [A-z]*, !/usr/bin/passwd root # Not root pwd! Cmnd_Alias DEBUG = /usr/sbin/tcpdump,/usr/bin/wireshark,/usr/bin/nmap # 一個真實的規則 root,ADMINS ALL = (ALL) NOPASSWD: ALL # ADMINS 別名中的用戶可做任何事情不需要密碼 DEVEL DESKTOP = (ALL) NOPASSWD: ALL # 開發人員可在 DESKTOP 別名的主機上做任何事情 DEVEL DMZ = (ALL) NOPASSWD: DEBUG # 開發人員可以在 DMZ 別名的主機上使用 DEBUG 別名中的命令# 用戶 sysadmin 可以在 DMZ 服務器上執行一些命令 sysadmin DMZ = (ALL) NOPASSWD: SYSTEM,PW,DEBUG sysadmin ALL,!DMZ = (ALL) NOPASSWD: ALL # 可以在非 DMZ 主機上做任何事情 %dba ALL = (DBA) ALL # 用戶組 dba 可以運行 DBA 別名中用戶權限的所有命令 # 所有用戶可以在 DESKTOP 別名的主機上 掛載/卸載 CD-ROM ALL DESKTOP = NOPASSWD: /sbin/mount /cdrom,/sbin/umount /cdrom

文件加密

單個文件

加密和解密: # openssl des -salt -in file -out file.des # openssl des -d -salt -in file.des -out file 那個 file 可以是歸檔文件(tar archive)。

歸檔并加密整個目錄

# tar -cf - directory | openssl des -salt -out directory.tar.des # 加密 # openssl des -d -salt -in directory.tar.des | tar -x # 解密

壓縮歸檔并加密整個目錄

# tar -zcf - directory | openssl des -salt -out directory.tar.gz.des # 加密 # openssl des -d -salt -in directory.tar.gz.des | tar -xz # 解密
  • 在使用-k mysecretpassword后,des會取消交互式的密碼請求。不過,這非常不安全。
  • 使用des3代替des來獲得更強的加密(Triple-DES Cipher)。這同樣會消耗更多的CPU。

GPG

GnuPG?是眾所周知的對郵件或任何數據進行加密和簽名的軟件。此外,gpg 還提供高級密鑰管理系統。此章節只涵蓋了文件加密,沒有郵件加密、簽名或者信任網絡(Web-Of-Trust)。
單純的加密是一個對稱式的加密算法(symmetric cipher)。在本例中,文件是用一個秘密來加密的,任何人知道了這個密碼都可以對其進行解密,因此就不需要密鑰。Gpg 添加后綴 ".gpg" 到已加密的文件名。 # gpg -c file # 使用密碼加密文件 # gpg file.gpg # 文件解密(選項 -o 其他文件)

使用密鑰

對于更詳細的請看?GPG 快速上手?和?GPG/PGP 基礎,特別是?gnupg 文檔。
密鑰對(私鑰,公鑰)為非對稱加密技術。 要點如下:
  • 你的公鑰是用來給別人加密文件的并且只有你作為接收者才可以解密(甚至不是一個人加密的文件也可以解密)。公鑰是公開的也就意味著可以分發。
  • 用你的密碼加密的私鑰用來解密用你的公鑰加密的文件。這個密鑰必須保持安全。因為如果遺失了私鑰或者密碼,那么所有的文件都是使用你的公鑰加密的。
  • 多個密鑰文件被稱為密鑰環(keyrings),她可以包含一個以上的密鑰。
首先生成密鑰對。使用默認就行,但你至少要輸入你的全名、郵件地址和可選注釋。該注釋對于創建相同的名字和郵件地址的多個密鑰來說非常有用。此外,你應該使用"口令(passphrase)",而不是簡單的密碼。 # gpg --gen-key # 這需要一些時間 在 Unix 上密鑰存儲在 ~/.gnupg/ 中,在 Windows 上通常存儲在
C:/Documents and Settings/%USERNAME%/Application Data/gnupg/ 中。 ~/.gnupg/pubring.gpg # 包含你的公鑰和所有其他導入的信息 ~/.gnupg/secring.gpg # 可包含多個私鑰 常用選項的簡短描述:
  • -e?加密數據
  • -d?解密數據
  • -r?為某個收件者加密('全名' 或者 'email@domain')
  • -a?輸出經過 ascii 封裝的密鑰
  • -o?指定輸出文件
本實例使用'Your Name' 和 'Alice' 作為密鑰的 email 或 全名 或 部分名字的參考。舉個例子,我可以使用 'Colin' or 'c@cb.vu' 給我的密鑰 [Colin Barschel (cb.vu) <c@cb.vu>]。

只用于個人的加密

不需要導出/導入任何密鑰,因為你都已經有了。 # gpg -e -r 'Your Name' file # 使用你的公鑰加密 # gpg -o file -d file.gpg # 解密。使用 -o 指定輸出文件

用密鑰加密-解密

首先你需要導出給別人使用的公鑰。并且你需要導入來自 Alice 她所加密文件的公鑰。你可以用簡單的 ascii 文檔或者使用公鑰服務器來保存這些密鑰。
舉個例子,Alice 導出她的公鑰,然后你導入它,之后你就可以加密一個文件給她。這個加密文件只有 Alice 可以解密。 # gpg -a -o alicekey.asc --export 'Alice' # Alice 導出她的公鑰到 ascii 文件中 # gpg --send-keys --keyserver subkeys.pgp.net KEYID # Alice 把她的公鑰放入一個服務器 # gpg --import alicekey.asc # 你導入她的密鑰到你的公鑰環(pubring)中 # gpg --search-keys --keyserver subkeys.pgp.net 'Alice' # 或者從一個服務器中獲取他的公鑰 一旦這些公鑰導入后,加密或解密一個文件會非常簡單: # gpg -e -r 'Alice' file # 給 Alice 加密文件 # gpg -d file.gpg -o file # 解密 Alice 給你的加密文件

密鑰管理

# gpg --list-keys # 列出所有公鑰并查看其 KEYIDKEYID 跟在 '/' 后面 比如:pub 1024D/D12B77CE 它的 KEYID 是 D12B77CE # gpg --gen-revoke 'Your Name' # 產生一份撤銷密鑰證書 # gpg --list-secret-keys # 列出所有私鑰 # gpg --delete-keys NAME # 從本的密鑰環中刪除一個公鑰 # gpg --delete-secret-key NAME # 從本的密鑰環中刪除一個私鑰 # gpg --fingerprint KEYID # 顯示 KIYID 這個密鑰的指紋 # gpg --edit-key KEYID # 編輯密鑰(比如簽名或者添加/刪除 email)

分區加密

Linux with LUKS?|?Linux dm-crypt only?|?FreeBSD GELI?|?FreeBSD 只使用密碼

有(許多)其他替代方法來加密磁盤,我只呈現我所知道和使用的方法。請記住,安全只是系統還未經過實際考驗而已。入侵者可以輕易通過鍵盤事件記錄密碼。此外,當已經加載了分區,其數據是可以自由訪問的,并不會阻止入侵者去訪問它。

Linux

這部分我們使用可用于 2.6 內核的 Linux dm-crypt (device-mapper)。在這個實例中,讓我們加密?/dev/sdc1?分區,它可為任何其他分區、磁盤、USB或者用?losetup?創建的基于文件的分區。對于基于文件的分區,我們使用?/dev/loop0。看?鏡像文件分區。Device mapper 利用標簽來標識一個分區。我們使用?sdc1?作為此標簽,但可以為任何字符串。

dm-crypt with LUKS

LUKS 和 dm-crypt 是較好的加密技術,并且可為同一個分區設置多個口令,更改密碼也很方便。可簡單輸入?# cryptsetup --help?來測試 LUKS 是否可用。如果沒有顯示任何關于 LUKS 的信息,可看下面Without LUKS?的介紹。第一步如果需要的話創建一個分區:fdisk /dev/sdc。

創建加密分區

# dd if=/dev/urandom of=/dev/sdc1 # 可選 # cryptsetup -y luksFormat /dev/sdc1 # 這破壞了在 sdc1 上的數據 # cryptsetup luksOpen /dev/sdc1 sdc1 # mkfs.ext3 /dev/mapper/sdc1 # 創建 ext3 文件系統 # mount -t ext3 /dev/mapper/sdc1 /mnt # umount /mnt # cryptsetup luksClose sdc1 # Detach 已加密的分區

Attach

# cryptsetup luksOpen /dev/sdc1 sdc1 # mount -t ext3 /dev/mapper/sdc1 /mnt

Detach

# umount /mnt # cryptsetup luksClose sdc1

dm-crypt without LUKS

# cryptsetup -y create sdc1 /dev/sdc1 # 或任何其他分區像 /dev/loop0 # dmsetup ls # 檢查一下,將顯示:sdc1 (254, 0) # mkfs.ext3 /dev/mapper/sdc1 # 只有第一次要這么做! # mount -t ext3 /dev/mapper/sdc1 /mnt # umount /mnt/ # cryptsetup remove sdc1 # Detach 已加密的分區 這樣做等同于(非 mkfs 部分) re-attach 分區。如果密碼不正確,mount 命令將會失敗。對于這個例子,只要簡單的移除 sdc1 (cryptsetup remove sdc1)并重建即可。

FreeBSD

兩個流行的 FreeBSD 磁盤加密模塊為?gbde?和?geli。我現在使用?geli?原因是它夠快并且它使用加解密硬件加速設備。詳情可看?FreeBSD 使用手冊 18.6。geli?模塊必須已編譯或加載進內核: options GEOM_ELI device crypto # 內核配置文件中加入這兩行 # echo 'geom_eli_load="YES"' >> /boot/loader.conf # 也可以在系統引導時加載或者做:kldload geom_eli

使用密碼和密鑰

我為一個典型的磁盤加密使用這些設置,其使用了一個口令和一個加密主密鑰(master key)的密鑰。這意味著你需要密碼和生產的密鑰?/root/ad1.key?來 attach 分區。主密鑰存儲在這個加密分區中并且不可見。看下面為 USB 或 映像文件的加密設置。

創建加密分區

# dd if=/dev/random of=/root/ad1.key bs=64 count=1 # 加密主密鑰的密鑰 # geli init -s 4096 -K /root/ad1.key /dev/ad1 # 對于磁盤也可用 -s 8192 # geli attach -k /root/ad1.key /dev/ad1 # 將 /dev/ad1 與所生成的密鑰 /root/ad1.key 關聯 # dd if=/dev/random of=/dev/ad1.eli bs=1m # 可選,需要很長時間 # newfs /dev/ad1.eli # 創建文件系統 # mount /dev/ad1.eli /mnt

Attach

# geli attach -k /root/ad1.key /dev/ad1 # fsck -ny -t ffs /dev/ad1.eli # 檢查文件系統 # mount /dev/ad1.eli /mnt

Detach

Detach 步驟會在關機時自動完成。 # umount /mnt # geli detach /dev/ad1.eli

/etc/fstab

加密分區在 /etc/fstab 中配置成自動加載。系統啟動時會詢問加密分區的密碼。對于本例下列設置是必須的: # grep geli /etc/rc.conf geli_devices="ad1" geli_ad1_flags="-k /root/ad1.key" # grep geli /etc/fstab /dev/ad1.eli /home/private ufs rw 0 0

僅用密碼

加密一個 USB stick 或者映像文件使用密碼而不是密鑰來得更方便。這種情況下,沒有必要隨身攜帶額外的密鑰文件。所做步驟同上面非常相似,只是不需要密鑰文件。讓我們來加密一個 1 GB 的映像文件/cryptedfile。 # dd if=/dev/zero of=/cryptedfile bs=1M count=1000 # 1 GB 文件 # mdconfig -at vnode -f /cryptedfile # geli init /dev/md0 # 僅用密碼加密 # geli attach /dev/md0 # newfs -U -m 0 /dev/md0.eli # mount /dev/md0.eli /mnt # umount /dev/md0.eli # geli detach md0.eli 現在可以把這個映像文件加載成僅需密碼的文件系統。 # mdconfig -at vnode -f /cryptedfile # geli attach /dev/md0 # mount /dev/md0.eli /mnt

SSL 認證

所謂的 SSL/TLS 認證是加密的公鑰認證,它由一個公用密鑰和私用密鑰組成。證書用來認證終端和加密數據的。例如,用在 web 服務器(https)或者郵件服務器(imaps)。

步驟

  • 我們需要一個證書頒發機構來簽署我們的證書。這一步通常由供應商提供,如 Thawte、Verisign等。不過,我們也可以創建我們自己的。
  • 創建一個證書簽發申請(signing request)。這個申請需要一個已經包含所有必需的信息的未簽署證書(公共部分)。該證書申請通常發送到認證供應商去簽署。這一步同樣也在本地機器上創建了私鑰。
  • 證書頒發機構簽署證書。
  • 如果有需要,加入證書和密鑰到單個文件來給應用程序使用(web 服務器、郵件服務器等)。

配置 OpenSSL

我們使用 /usr/local/certs 作為這個例子的目錄或者根據你的設置相應的編輯 /etc/ssl/openssl.cnf 文件,因此你知道文件將創建在哪里。以下是 openssl.cnf 的相關部分: [ CA_default ] dir = /usr/local/certs/CA # 保存所有信息的文件夾 certs = $dir/certs # 已生成證書的默認保存目錄 crl_dir = $dir/crl # 生成的證書撤銷列表(CRL)的默認保存目錄 database = $dir/index.txt # 保存已簽發證書的文本數據庫文件 確保所有目錄已經創建 # mkdir -p /usr/local/certs/CA # cd /usr/local/certs/CA # mkdir certs crl newcerts private # echo "01" > serial # 僅當 serial 不存在時 # touch index.txt

創建一個認證授權

如果你沒有來自供應商的認證授權,你必須創建你自己的。如果打算去供應商簽署申請,那么這個步驟不是必須的。創建認證授權 (CA): # openssl req -new -x509 -days 730 -config /etc/ssl/openssl.cnf \ -keyout CA/private/cakey.pem -out CA/cacert.pem

創建證書簽發申請

要創建一個新證書(比如給郵件服務器或 web 服務器),首先用其私鑰創建證書申請。如果你的應用程序不支持加密的私鑰(比如 UW-IMAP 就不支持),那么就用?-nodes?來禁用加密。 # openssl req -new -keyout newkey.pem -out newreq.pem \ -config /etc/ssl/openssl.cnf # openssl req -nodes -new -keyout newkey.pem -out newreq.pem \ -config /etc/ssl/openssl.cnf # 不對這個密鑰加密

簽署證書

該證書申請由 CA 簽發確認,這個步驟通常由供應商完成。注意:在下面命令中替換 "servername" 成你的服務器名稱。 # cat newreq.pem newkey.pem > new.pem # openssl ca -policy policy_anything -out servernamecert.pem \ -config /etc/ssl/openssl.cnf -infiles new.pem # mv newkey.pem servernamekey.pem 現在,servernamekey.pem 就是私鑰,servernamecert.pem 就為服務器的證書。

創建聯合認證(united certificate)

IMAP 服務器想要私鑰和服務器證書在同一個文件中。通常,這還是比較容易處理的,但是該文件要保證安全! Apache 也可以處理好它。創建一個包含證書和密鑰的文件 servername.pem 。
  • 用文本編輯器打開私鑰文件(servernamekey.pem),并拷貝私鑰到 "servername.pem" 文件中去。
  • 服務器證書(servernamecert.pem)也做同樣的動作。
最后 servername.pem 文件應該看起來像這樣:

-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDutWy+o/XZ/[...]qK5LqQgT3c9dU6fcR+WuSs6aejdEDDqBRQ -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIIERzCCA7CgAwIBAgIBBDANB[...]iG9w0BAQQFADCBxTELMAkGA1UEBhMCREUx -----END CERTIFICATE----- 現在我們的 /usr/local/certs/ 目錄中有了這些;
  • CA/private/cakey.pem?(CA 服務器私鑰)
  • CA/cacert.pem?(CA 服務器公鑰)
  • certs/servernamekey.pem?(服務器私鑰)
  • certs/servernamecert.pem?(服務器已簽署的證書)
  • certs/servername.pem?(私鑰和服務器證書)
要保證私鑰的安全!

查看證書信息

要查看證書信息,只要這么做: # openssl x509 -text -in servernamecert.pem # 顯示證書信息 # openssl req -noout -text -in server.csr # 顯示申請信息 # openssl s_client -connect cb.vu:443 # 檢查 web 服務器認證信息

CVS

服務器設置?|?CVS 測試?|?SSH 隧道?|?CVS 使用

服務器設置

CVS 環境初始化

決定主 repository 將要創建和重置的 cvs 根目錄。比如 /usr/local/cvs (根): # mkdir -p /usr/local/cvs # setenv CVSROOT /usr/local/cvs # 設置 CVSROOT 環境變量(本地) # cvs init # 創建所有初始化 CVS 配置文件 # cd /root # cvs checkout CVSROOT # 簽出配置文件來修改他們 # cd CVSROOT edit config ( fine as it is) # cvs commit config cat >> writers # 創建 writers 文件 (也可為 readers) colin ^D # 使用 [Control][D] 退出編輯 # cvs add writers # 添加文件 writers 進 repository # cvs edit checkoutlist # cat >> checkoutlist writers ^D # 使用 [Control][D] 退出編輯 # cvs commit # 提交所有配置更改 添加一個?readers?文件,如果你要區分讀寫權限的話。注意:?不要在主 cvs 中直接編輯文件,而應該簽出要編輯的文件,修改完成后再簽入。我們所做的文件?writers?用來定義可寫權限。
下面有三種流行的方式去訪問 CVS。前兩個不需要任何進一步的配置。看?CVSROOT?部分的實例了解如何使用它們:
  • 直接本的訪問文件系統。用戶需要有足夠的權限來直接訪問 CVS,除了要登錄到操作系統,沒有進一步的驗證。然而這僅對本地 repository 才有用。
  • 使用 ext 協議通過 ssh 來遠程訪問。任何有 ssh shell 賬戶和在 CVS 服務器上可讀寫權限的都可直接使用 ext 協議通過 ssh 來訪問 CVS,而不需要任何額外的隧道。沒有服務器來處理運行在 CVS 上的驗證工作。ssh 登錄會去驗證。
  • 用 pserver 來遠程訪問。這是對于有較大用戶量的首選方法,用戶由 CVS 的 pserver 通過一個專門的密碼數據庫來驗證,因此不需要本地用戶帳戶。這種設置在下面會有說明。

用 inetd 設置網絡

如果不需要網絡訪問,CVS 可以運行于本地。對于遠程訪問,在 /etc/inetd.conf (Suse 為 /etc/xinetd.d/cvs)中配置如下行,可讓守護進程 inetd 啟動 pserver: cvspserver stream tcp nowait cvs /usr/bin/cvs cvs \ --allow-root=/usr/local/cvs pserver 這是個用來阻斷從 internet 訪問 cvs 端口的好方法,可使用 ssh 隧道來遠程的訪問 repository。

單獨認證

CVS 用戶可能不是操作系統的一部分(即不是本地用戶)。這其實可從安全的角度去看。簡單的添加一個叫?passwd?(in the CVSROOT directory) 的文件,其包含 crypt 格式的用戶登錄名和密碼。這也可以使用 apache 的 htpasswd 工具來完成。
注意:這個 passwd 文件僅僅是文件,可以在 CVSROOT 中直接編輯。它不能被簽出。更多信息請用 htpasswd --help # htpasswd -cb passwd user1 password1 # -c 創建文件 # htpasswd -b passwd user2 password2 現在添加?:cvs?到每行的結尾處,用來告訴 cvs 服務器更改用戶到 cvs (或任何你正在運行的 cvs 服務器下)。它看起來像這樣: # cat passwd user1:xsFjhU22u8Fuo:cvs user2:vnefJOsnnvToM:cvs

測試它

測試作為一般用戶登錄(比如我) # cvs -d :pserver:colin@192.168.50.254:/usr/local/cvs login Logging in to :pserver:colin@192.168.50.254:2401/usr/local/cvs CVS password:

CVSROOT 變量

這是個環境變量用來指定 repository 的位置。對于本地使用,該變量只需設置成 repository 的目錄。對于通過網絡使用,傳輸協議必須指定。使用?setenv CVSROOT string?(csh, tcsh shell) 或者?export CVSROOT=string?( sh, bash shell) 設置 CVSROOT 環境變量。 # setenv CVSROOT :pserver:<username>@<host>:/cvsdirectory For example: # setenv CVSROOT /usr/local/cvs # 僅限本的使用 # setenv CVSROOT :local:/usr/local/cvs # 同上 # setenv CVSROOT :ext:user@cvsserver:/usr/local/cvs # 通過 SSH 直接訪問 # setenv CVS_RSH ssh # ext 協議訪問 # setenv CVSROOT :pserver:user@cvsserver.254:/usr/local/cvs # 通過 pserver 網絡訪問 一旦登錄成功就可導入一個新項目進 repository:cd 進入你的項目根目錄 cvs import <module name> <vendor tag> <initial tag> cvs -d :pserver:colin@192.168.50.254:/usr/local/cvs import MyProject MyCompany START 在 repository 中有個名叫 MyProject 新項目(之后用來簽出)。CVS 會導入當前目錄的內容進新項目。

簽出: # cvs -d :pserver:colin@192.168.50.254:/usr/local/cvs checkout MyProject 或者 # setenv CVSROOT :pserver:colin@192.168.50.254:/usr/local/cvs # cvs checkout MyProject

通過 SSH 隧道訪問 CVS

我們需要兩個 shell 來做這個。在第一個 shell 中,我們連接到 cvs 服務器并對 cvs 連接進行端口轉發(port-forward)。在第二個 shell 中,我們就像在本地一樣使用 cvs。?
在 shell 1: # ssh -L2401:localhost:2401 colin@cvs_server # 直接連接到 cvs 服務器。或: # ssh -L2401:cvs_server:2401 colin@gateway # 使用一個網關間接連接到 cvs 服務器 在 shell 2: # setenv CVSROOT :pserver:colin@localhost:/usr/local/cvs # cvs login Logging in to :pserver:colin@localhost:2401/usr/local/cvs CVS password: # cvs checkout MyProject/src

CVS 命令及其使用

導入

該 import 命令用來添加整個目錄,它必須運行于要導入的目錄中。比如,目錄 /devel/ 包含的所有文件和子目錄要導入。該目錄名在 CVS 中(模塊)將會稱為 "myapp"。 # cvs import [options] directory-name vendor-tag release-tag # cd /devel # 必須在該目錄中來導入 # cvs import myapp Company R1_0 # 修訂(release)標簽可以為任何單個單詞 在添加了一個新目錄 "/devel/tools/" 后,也可這么導入。 # cd /devel/tools # cvs import myapp/tools Company R1_0

簽出、更新和提交

# cvs co myapp/tools # 僅會簽出 tools 目錄 # cvs co -r R1_1 myapp # 簽出修訂版本為 R1_1 的 myapp (sticky) # cvs -q -d update -P # 典型的 CVS 更新 # cvs update -A # 重置所有 sticky 標簽(或日期、選項) # cvs add newfile # 添加一個新文件 # cvs add -kb newfile # 添加一個二進制文件 # cvs commit file1 file2 # 僅提交這兩個文件 # cvs commit -m "message" # 提交所有更改并為這個更改添加日志消息

創建一個 patch

It is best to create and apply a patch from the working development directory related to the project, or from within the source directory. # cd /devel/project # diff -Naur olddir newdir > patchfile # Create a patch from a directory or a file # diff -Naur oldfile newfile > patchfile

應用一個 patch

Sometimes it is necessary to strip a directory level from the patch, depending how it was created. In case of difficulties, simply look at the first lines of the patch and try -p0, -p1 or -p2. # cd /devel/project # patch --dry-run -p0 < patchfile # Test the path without applying it # patch -p0 < patchfile # patch -p1 < patchfile # strip off the 1st level from the path

SVN

Server setup?|?SVN+SSH?|?SVN over http?|?SVN usage

Subversion (SVN)?is a version control system designed to be the successor of CVS (Concurrent Versions System). The concept is similar to CVS, but many shortcomings where improved. See also the?SVN book.

Server setup

The initiation of the repository is fairly simple (here for example?/home/svn/?must exist): # svnadmin create --fs-type fsfs /home/svn/project1 Now the access to the repository is made possible with:
  • file://?Direct file system access with the svn client with. This requires local permissions on the file system.
  • svn://?or?svn+ssh://?Remote access with the svnserve server (also over SSH). This requires local permissions on the file system.
  • http://?Remote access with webdav using apache. No local users are necessary for this method.
Using the local file system, it is now possible to import and then check out an existing project. Unlike with CVS it is not necessary to cd into the project directory, simply give the full path: # svn import /project1/ file:///home/svn/project1/trunk -m 'Initial import' # svn checkout file:///home/svn/project1 The new directory "trunk" is only a convention, this is not required.

Remote access with ssh

No special setup is required to access the repository via ssh, simply replace?file://?with?svn+ssh/hostname. For example: # svn checkout svn+ssh://hostname/home/svn/project1 As with the local file access, every user needs an ssh access to the server (with a local account) and also read/write access. This method might be suitable for a small group. All users could belong to a subversion group which owns the repository, for example: # groupadd subversion # groupmod -A user1 subversion # chown -R root:subversion /home/svn # chmod -R 770 /home/svn

Remote access with http (apache)

Remote access over http (https) is the only good solution for a larger user group. This method uses the apache authentication, not the local accounts. This is a typical but small apache configuration: LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so # Only for access control <Location /svn>DAV svn# any "/svn/foo" URL will map to a repository /home/svn/fooSVNParentPath /home/svnAuthType BasicAuthName "Subversion repository"AuthzSVNAccessFile /etc/apache2/svn.aclAuthUserFile /etc/apache2/svn-passwdRequire valid-user </Location> The apache server needs full access to the repository: # chown -R www:www /home/svn Create a user with htpasswd2: # htpasswd -c /etc/svn-passwd user1 # -c creates the file

Access control svn.acl example

# Default it read access. "* =" would be default no access [/] * = r [groups] project1-developers = joe, jack, jane # Give write access to the developers [project1:] @project1-developers = rw

SVN commands and usage

See also the?Subversion Quick Reference Card.?Tortoise SVN?is a nice Windows interface.

Import

A new project, that is a directory with some files, is imported into the repository with the?import?command. Import is also used to add a directory with its content to an existing project. # svn help import # Get help for any command # Add a new directory (with content) into the src dir on project1 # svn import /project1/newdir http://host.url/svn/project1/trunk/src -m 'add newdir'

Typical SVN commands

# svn co http://host.url/svn/project1/trunk # Checkout the most recent version # Tags and branches are created by copying # svn mkdir http://host.url/svn/project1/tags/ # Create the tags directory # svn copy -m "Tag rc1 rel." http://host.url/svn/project1/trunk \http://host.url/svn/project1/tags/1.0rc1 # svn status [--verbose] # Check files status into working dir # svn add src/file.h src/file.cpp # Add two files # svn commit -m 'Added new class file' # Commit the changes with a message # svn ls http://host.url/svn/project1/tags/ # List all tags # svn move foo.c bar.c # Move (rename) files # svn delete some_old_file # Delete files

實用命令

less?|?vi?|?mail?|?tar?|?dd?|?screen?|?find?|?混雜的

less

less?命令用來在控制臺中分屏顯示文本文檔。它在許多發行版中可用。 # less unixtoolbox.xhtml 一些重要指令(^N 代表 [control]-[N]):
  • h H?? ? ? 顯示指令的匯總列表
  • f ^F ^V SPACE?? ? ? 向前滾動一屏(或者 N 行)
  • b ^B ESC-v?? ? ? 向后滾動一屏(或者 N 行)
  • F?? ? ? 向前滾動;類似于"tail -f"
  • /pattern?? ? ? 向前搜索匹配該模式的行
  • ?pattern?? ? ? 向后搜索匹配該模式的行
  • n?? ? ? 重復之前的搜索
  • N?? ? ? 反方向重復之前的搜索
  • q?? ? ? 退出

vi

Vi 在任何 Linux/Unix 發行安裝版(gentoo 沒有?)上都存在。因此,我們有必要了解一些基本的命令。Vi 有兩個模式:命令模式和插入模式。使用?[ESC]?鍵可進入命令模式,使用?i?鍵可進入插入模式。如果你迷失了,可在命令模式下鍵入?: help。
編輯器?nano?和?pico?通常也都可用,而且更容易(IMHO)使用。

Quit

  • :w?newfilename ? ? ? 保存文件為 newfilename
  • :wq or :x?? ? ? 保存并退出
  • :q!?? ? ? 退出但不保存

移動和查找

  • /string?? ? ? 向前查找 string
  • ?string?? ? ? 向后查找 string
  • n?? ? ? 同方向重復上一次搜索命令
  • N?? ? ? 反方向重復上一次搜索命令
  • {?? ? ? 光標移至段落結尾
  • }?? ? ? 光標移至段落開頭
  • 1G?? ? ? 光標移至文件的第一行首
  • nG?? ? ? 光標移至文件的第 n 行首
  • G?? ? ? 光標移至文件的最后一行首
  • :%s/OLD/NEW/g?? ? ? 替換所有查找到的 OLD 為 NEW

刪除文本

  • dd?? ? ? 刪除當前行
  • D?? ? ? 刪除光標到當前行末尾的字符
  • dw?? ? ? 刪除單詞
  • x?? ? ? 刪除字符
  • u?? ? ? 回復上一次操作
  • U?? ? ? 回復所有此行的更改

mail

mail?命令是一個讀取和發送郵件的應用程序,她通常已安裝。要發送一封郵件,可以簡單的輸入 "mail user@domain"。其第一行為主題,然后是郵件內容。在一個新行中使用單個點(.)來結束并發送郵件。例子: # mail c@cb.vu Subject: Your text is full of typos "For a moment, nothing happened. Then, after a second or so, nothing continued to happen." . EOT # 這同樣可用于管道: # echo "This is the mail body" | mail c@cb.vu 也是測試郵件服務器的簡單方法。

tar

命令?tar?(磁帶存檔) 可以為文件和目錄創建檔案。歸檔文件 .tar 是未壓縮的,一個壓縮過的歸檔文件的后綴是 .tgz 或 .tar.gz (zip) 或者 .tbz (bzip2)。不要使用絕對路徑建立一個歸檔文件,你可能要解開這個歸檔文件到某個地方。一些常用命令如下:

創建

# cd / # tar -cf home.tar home/ # 歸檔整個 /home 目錄(c 為創建) # tar -czf home.tgz home/ # 等同于 zip 壓縮 # tar -cjf home.tbz home/ # 等同于 bzip2 壓縮 從一個目錄樹中只包含一個(或2個)目錄,并保持相對目錄結構。舉個例子,/usr/local/etc 和 /usr/local/www,它們在歸檔文件中的第一層目錄是 local/。 # tar -C /usr -czf local.tgz local/etc local/www # tar -C /usr -xzf local.tgz # 釋放 local 目錄到 /usr # cd /usr; tar -xzf local.tgz # 同上面一樣

釋放(Extract)

# tar -tzf home.tgz # 列出歸檔文件中的所有文件,并不釋放 # tar -xf home.tar # 釋放歸檔文件(x 為釋放) # tar -xzf home.tgz # 等同于 zip 壓縮 # tar -xjf home.tgz # 等同于 bzip2 壓縮 # tar -xjf home.tgz home/colin/file.txt # 釋放單個文件

更高級的

# tar c dir/ | gzip | ssh user@remote 'dd of=dir.tgz' # 歸檔壓縮 dir/ 目錄并存儲到遠程主機上 # tar cvf - `find . -print` > backup.tar # 歸檔當前目錄 # tar -cf - -C /etc . | tar xpf - -C /backup/etc # 拷貝目錄 # tar -cf - -C /etc . | ssh user@remote tar xpf - -C /backup/etc # 遠程拷貝 # tar -czf home.tgz --exclude '*.o' --exclude 'tmp/' home/

dd

程序?dd?(磁盤備份(disk dump) 或 destroy disk,也可看?dd 的含義) 用來拷貝分區、磁盤或者其它拷貝。通常這么用: # dd if=<source> of=<target> bs=<byte size> conv=<conversion> 重要的 conv 選項:
  • notrunc?? ? ? 不截短輸出文件
  • noerror?? ? ? 出錯時不停止處理(e.g. 壞扇區)
  • sync?? ? ? 把每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊
默認字節大小為 512 (一個扇區)。MBR 處于磁盤的第一個扇區,之后的 63 個扇區是空的。較大的字節大小可以加快拷貝速度但也需要更多的內存。

備份和恢復

# dd if=/dev/hda of=/dev/hdc bs=16065b # 拷貝磁盤到磁盤(相同大小) # dd if=/dev/sda7 of /home/root.img bs=4096 conv=notrunc,noerror # 備份 / # dd if /home/root.img of=/dev/sda7 bs=4096 conv=notrunc,noerror # 恢復 / # dd bs=1M if=/dev/ad4s3e | gzip -c > ad4s3e.gz # 壓縮備份 # gunzip -dc ad4s3e.gz | dd of=/dev/ad0s3e bs=1M # 解壓恢復 # dd bs=1M if=/dev/ad4s3e | gzip | ssh eedcoba@fry 'dd of=ad4s3e.gz' # 也可為遠程的 # gunzip -dc ad4s3e.gz | ssh eedcoba@host 'dd of=/dev/ad0s3e bs=1M' # dd if=/dev/ad0 of=/dev/ad2 skip=1 seek=1 bs=4k conv=noerror # 忽略 MBR # 如果目標(ad2)比較小,這是必須的。

恢復

該?dd?命令會讀取分區的每一個區塊,即所有區塊。對于有問題的區塊,最好使用?conv=sync,noerror?選項,dd 將會跳過壞的區塊并入 0。因此,這就是設置塊大小等于或小于磁盤塊大小的重要性。1k 大小似乎安全,用?bs=1k?來設置它。假如一個磁盤有壞扇區并且有個分區的數據要恢復,那么用 dd 工具創建一個鏡像文件,掛載這個鏡像文件,然后拷貝內容到新的磁盤中。如果用了?noerror?選項,dd 會跳過壞扇區并寫入 0,也即壞扇區中的內容會丟失。 # dd if=/dev/hda of=/dev/null bs=1m # 檢查壞扇區 # dd bs=1k if=/dev/hda1 conv=sync,noerror,notrunc | gzip | ssh \ # 發送到遠程 root@fry 'dd of=hda1.gz bs=1k' # dd bs=1k if=/dev/hda1 conv=sync,noerror,notrunc of=hda1.img # 存儲為一個映像文件 # mount -o loop /hda1.img /mnt # 掛載這個映像文件 # rsync -ax /mnt/ /newdisk/ # 拷貝到一個新磁盤 # dd if=/dev/hda of=/dev/hda # 刷新磁狀態 # 上面的命令對于刷新磁盤(refresh disk)很有用。這絕對安全,但必須先卸載磁盤。

刪除

# dd if=/dev/zero of=/dev/hdc # 刪除全部數據 # dd if=/dev/urandom of=/dev/hdc # 更好的刪除全部數據 # kill -USR1 PID # 查看 dd 進度(僅Linux!)

MBR 技巧

MBR 包含了引導程序和分區表,它的大小為 512 字節。前 446 字節為引導程序,446 到 512 字節為分區表。 # dd if=/dev/sda of=/mbr_sda.bak bs=512 count=1 # 完全備份 MBR # dd if=/dev/zero of=/dev/sda bs=512 count=1 # 刪除 MBR 和分區表 # dd if=/mbr_sda.bak of=/dev/sda bs=512 count=1 # 完全恢復MBR # dd if=/mbr_sda.bak of=/dev/sda bs=446 count=1 # 僅回復引導程序 # dd if=/mbr_sda.bak of=/dev/sda bs=1 count=64 skip=446 seek=446 # 恢復分區表

screen

Screen 提供了兩個主要功能:
  • 在一個終端內運行多個終端會話(terminal session)。
  • 一個已啟動的程序與運行它的真實終端分離的,因此可運行于后臺。真實的終端可以被關閉,還可以在稍后再重新接上(reattached)。

簡短實例

開啟 screen: # screen 在 screen 會話中,我們可以開啟一個長時間運行的程序(如 top)。Detach 這個終端,之后可以從其他機器 reattach 這個相同的終端(比如通過 ssh)。 # top 現在用?Ctrl-a Ctrl-d?來 detach。Reattach 終端: # screen -r 或更好的: # screen -R -D 現在 attach 到這里。具體意思是:先試圖恢復離線的 screen 會話。若找不到離線的 screen 會話,即建立新的 screen 會話給用戶。

Screen 命令 (在 screen 中)

所有命令都以?Ctrl-a?開始。
  • Ctrl-a ??各功能的幫助摘要
  • Ctrl-a c?創建一個新的 window (終端)
  • Ctrl-a Ctrl-n 和 Ctrl-a Ctrl-p?切換到下一個或前一個 window
  • Ctrl-a Ctrl-N?N 為 0 到 9 的數字,用來切換到相對應的 window
  • Ctrl-a "?獲取所有正在運行的 window 的可導航的列表
  • Ctrl-a a?清楚錯誤的 Ctrl-a
  • Ctrl-a Ctrl-d?斷開所有會話,會話中所有任務運行于后臺
  • Ctrl-a x?用密碼鎖柱 screen 終端
當程序內部運行終端關閉并且你登出該終端時,該 screen 會話就會被終止。

Find

一些重要選項:
  • -x?(BSD)?-xdev?(Linux) ? ? ? 留于同一文件系統 (fstab 中的 dev)
  • -exec cmd {} \;?? ? ? 執行命令并用全路徑替換 {}
  • -iname?? ? ? 同 -name 一樣,但不區分大小寫
  • -ls?? ? ? 顯示關于文件的信息(同 ls -la)
  • -size n?? ? ? n 為 +-n (k M G T P)
  • -cmin n?? ? ? 查找系統中最后 n 分鐘改變文件狀態的文件
# find . -type f ! -perm -444 # 尋找所有無法讀取的文件 # find . -type d ! -perm -111 # 尋找所有無法訪問的目錄 # find /home/user/ -cmin 10 -print # 尋找最后 10 分鐘創建或修改的文件 # find . -name '*.[ch]' | xargs grep -E 'expr' # 在當前目錄及子目錄搜索 'expr' 表達式 # find / -name "*.core" | xargs rm # 尋找 core 垃圾并刪除它們(也可試試 core.*) # find / -name "*.core" -print -exec rm {} \; # 另一種語法 # 尋找圖像文件并創建一個歸檔文件,iname 為不區分大小寫。-r 為附加 # find . \( -iname "*.png" -o -iname "*.jpg" \) -print -exec tar -rf images.tar {} \; # find . -type f -name "*.txt" ! -name README.txt -print # 除 README.txt 的文件 # find /var/ -size +10M -exec ls -lh {} \; # 查找 > 10 MB 的文件 # find /var/ -size +10M -ls # 這個更簡單 # find . -size +10M -size -50M -print # find /usr/ports/ -name work -type d -print -exec rm -rf {} \; # 清理 port # 以 SUID 查找文件;這些文件很脆弱,必須保持安全。 # find / -type f -user root -perm -4000 -exec ls -l {} \; 小心 xarg 或 exec,因為當文件或目錄中包含空格時可能會返回錯誤的結果。在有疑惑時用 "-print0 | xargs -0" 代替 "| xargs"。選項 -print0 必須在 find 命令的最后。看這個不錯的?find 迷你教程. # find . -type f | xargs ls -l # 不能工作于有空格的名字 # find . -type f -print0 | xargs -0 ls -l # 可工作于有空格的名字 # find . -type f -exec ls -l '{}' \; # 或使用用于 -exec 的引用 '{}'

混雜的

# which command # 顯示命令的全路徑名 # time command # 顯示一個命令執行完成所用的時間 # time cat # 使用 time 作為秒表,用 Ctrl-c 來停止 # set | grep $USER # 列顯當前環境變量 # cal -3 # 顯示三個月日歷 # date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] # date 10022155 # 設置日期和時間 # whatis grep # 顯示命令的簡短信息 # whereis java # 查詢命令的的路徑和標準目錄 # setenv varname value # 設置環境變量,設置變量 varname 的值為 value (csh/tcsh) # export varname="value" # 設置環境變量,設置變量 varname 的值為 value (sh/ksh/bash) # pwd # 顯示當前工作目錄 # mkdir -p /path/to/dir # 如果存在不顯示錯誤,建立所需的上級目錄 # mkdir -p project/{bin,src,obj,doc/{html,man,pdf},debug/some/more/dirs} # rmdir /path/to/dir # 移除目錄 # rm -rf /path/to/dir # 移除目錄和其內容(強制) # cp -la /dir1 /dir2 # 存檔、硬連接目錄所有文件,用來替代拷貝 # cp -lpR /dir1 /dir2 # 同上 (FreeBSD) # cp unixtoolbox.xhtml{,.bak} # 拷貝文件成新擴展名的快速方法 # mv /dir1 /dir2 # 修改目錄名

軟件安裝

列出已安裝過的軟件包

# rpm -qa # 列出已安裝過的軟件包(RH, SuSE, 基于 RPM 的) # dpkg -l # Debian, Ubuntu # pkg_info # 列出所有已安裝過的軟件包(FreeBSD) # pkg_info -W smbd # 查看 smbd 安裝了那些軟件包(FreeBSD) # pkginfo # Solaris

添加/刪除軟件

前端界面:SuSE 為 yast2/yast,Red Hat 為 redhat-config-packages。 # rpm -i pkgname.rpm # 安裝軟件包(RH, SuSE, 基于 RPM 的) # rpm -e pkgname # 刪除軟件包

Debian

# apt-get update # 更新源列表 # apt-get install emacs # 安裝 emacs 軟件包 # dpkg --remove emacs # 刪除 emacs 軟件包 # dpkg -S file # 查找擁有該 file 的軟件包

Gentoo

Gentoo 使用 emerge 作為 "Portage" 軟件包管理系統的核心。 # emerge --sync # 同步更新本地 protage 樹 # emerge -u packagename # 安裝或更新一個軟件包 # emerge -C packagename # 刪除軟件包 # revdep-rebuild # 修復依賴關系的缺失

Solaris

<cdrom> 路徑通常為?/cdrom/cdrom0. # pkgadd -d <cdrom>/Solaris_9/Product SUNWgtar # pkgadd -d SUNWgtar # 添加下載的軟件包(先要 bunzip2) # pkgrm SUNWgtar # 刪除軟件包

FreeBSD

# pkg_add -r rsync # 獲取并安裝 rsync # pkg_delete /var/db/pkg/rsync-xx # 刪除 rsync 軟件包 可使用?PACKAGESITE?環境變量來設置哪里可以獲取軟件包。舉個例子: # export PACKAGESITE=ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages/Latest/ # or ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/Latest/

FreeBSD ports

Port 樹?/usr/ports/?是一個準備編譯和安裝的軟件集。可用?portsnap?工具來跟新 port。 # portsnap fetch extract # 當第一次運行這個命令,會創建 port 樹 # portsnap fetch update # 跟新 port 樹 # cd /usr/ports/net/rsync/ # 選擇軟件安裝目錄 # make install distclean # 安裝并清理(也可看 man ports) # make package # Make 一個二進制軟件包

庫路徑

由于復雜的依賴關系和運行時鏈接,程序難于分發或拷貝到其他系統。不過對于較少依賴關系的小程序,缺失的庫可被拷貝過去。運行時庫(即缺失的庫)可用?ldd?和?ldconfig?來檢查和管理。 # ldd /usr/bin/rsync # 列出所有所需的運行時庫 # ldconfig -n /path/to/libs/ # 添加一個路徑到共享庫目錄Add a path to the shared libraries directories # ldconfig -m /path/to/libs/ # FreeBSD # LD_LIBRARY_PATH # 設置連接庫路徑的環境變量

媒體轉換

有時候需要轉換一個視頻、音頻文件或者文檔成其他格式。

文本編碼

文本編碼可以得到完全錯誤的,特別是當語言需要某些特殊字符像 à??。命令?iconv?可以從一個編碼轉換成另一個編碼。 # iconv -f <from_encoding> -t <to_encoding> <input_file> # iconv -f ISO8859-1 -t UTF-8 -o file.input > file_utf8 # iconv -l # 列顯系統所支持的字符編碼 若文檔顯示良好,通常都可不使用 -f 選項,iconv 會使用本地字符集(char-set)。

Unix - DOS 新行

在 Unix Shell 中轉換 DOS (CR/LF) 到 Unix (LF) 新行格式。也可使用?dos2unix?和?unix2dos?工具,如果你有它們的話。 # sed 's/.$//' dosfile.txt > unixfile.txt 在 Windows 環境中轉換 Unix 到 Dos 新行格式。需要在 mingw 或 cygwin 中使用 sed。 # sed -n p unixfile.txt > dosfile.txt

PDF 轉換成 Jpeg 和 連接一串 PDF 文件

用?gs?(GhostScript) 工具轉換 PDF 文檔的每一頁成 jpeg (或 png)圖像。也可以使用更短的?convert?(來自 ImageMagick 或 GraphicsMagick 工具) 命令。 # gs -dBATCH -dNOPAUSE -sDEVICE=jpeg -r150 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 \-dMaxStripSize=8192 -sOutputFile=unixtoolbox_%d.jpg unixtoolbox.pdf # convert unixtoolbox.pdf unixtoolbox-%03d.png # convert *.jpeg images.pdf # 把所有圖片轉換成一份簡單的 PDF 文檔 Ghostscript 同樣可連接多個 pdf 文件成一份 PDF 文檔。這僅可工作于這些 PDF 文件都 "呈現一致(well behaved)" 的情況下。 # gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=all.pdf \ file1.pdf file2.pdf ... # 在 Windows 上使用 '#' 代替 '='

視頻轉換

使用 mpeg4 編碼壓縮佳能數碼相機視頻并修復無用音質。 # mencoder -o videoout.avi -oac mp3lame -ovc lavc -srate 11025 \ -channels 1 -af-adv force=1 -lameopts preset=medium -lavcopts \ vcodec=msmpeg4v2:vbitrate=600 -mc 0 vidoein.AVI 對于聲音的處理可看?sox。

拷貝音頻光盤

程序?cdparanoia?可以保存音軌(FreeBSD port 在 audio/cdparanoia/),oggenc?可編碼 Ogg Vorbis 格式,lame?可轉換成 mp3。 # cdparanoia -B # 拷貝音軌成 wav 文件到當前目錄列表(dir) # lame -b 256 in.wav out.mp3 # 編碼成 256 kb/s 的 mp3 # for i in *.wav; do lame -b 256 $i `basename $i .wav`.mp3; done # oggenc in.wav -b 256 out.ogg # 編碼成 256 kb/s 的 Ogg Vorbis

打印

打印命令 lpr

# lpr unixtoolbox.ps # 用默認打印機打印 # export PRINTER=hp4600 # 更改默認打印機 # lpr -Php4500 #2 unixtoolbox.ps # 指定打印機 hp4500 并打印 2 份 # lpr -o Duplex=DuplexNoTumble ... # 啟用雙面打印 # lpr -o PageSize=A4,Duplex=DuplexNoTumble ... # lpq # 查看默認打印機的隊列 # lpq -l -Php4500 # 詳細顯示打印機隊列信息 # lprm - # 刪除所有打印機內的用戶打印作業 # lprm -Php4500 3186 # 刪除作業 3186。可使用 lpq 查看作業號 # lpc status # 列印所有可用打印機 # lpc status hp4500 # 如果打印機在線,查看其狀態和列隊長度 當要打印 PDF 文件時,一些打印設備不具備處理 postscript 的能力。可以這樣解決: # gs -dSAFER -dNOPAUSE -sDEVICE=deskjet -sOutputFile=\|lpr file.pdf

數據庫

PostgreSQL

更改 root 用戶或其它用戶的密碼

# psql -d template1 -U pgsql > alter user pgsql with password 'pgsql_password'; # pgsql 為需要更改密碼的用戶名

創建用戶和數據庫

命令?createuser,?dropuser,?createdb?和?dropdb?等同于 SQL 命令的快捷方式。我們創建一個新用戶叫 bob 和一個數據庫叫 bobdb;使用數據庫的超級用戶 pgsql 來創建: # createuser -U pgsql -P bob # -P 會請求一個秘密 # createdb -U pgsql -O bob bobdb # 新數據庫 bobdn 的所有者是 bob # dropdb bobdb # 刪除數據庫 bobdb # dropuser bob # 刪除用戶 bob 一般數據庫認證機制配置在 pg_hba.conf 文件中。

允許遠程訪問

文件?$PGSQL_DATA_D/postgresql.conf?可指定綁定地址。對于 Postgres 8.x 通常為?listen_addresses = '*'。
文件?$PGSQL_DATA_D/pg_hba.conf?定義了訪問控制。舉例: # TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD host bobdb bob 212.117.81.42 255.255.255.255 password host all all 0.0.0.0/0 password

備份和恢復

使用 pgsql 或 postgres 用戶來完成備份與恢復。下面是備份和恢復單個數據庫: # pg_dump --clean dbname > dbname_sql.dump # psql dbname < dbname_sql.dump 備份和恢復所有數據庫(包括用戶): # pg_dumpall --clean > full.dump # psql -f full.dump postgres 在這個例子中,你可以聲明任意現有的數據庫進行連接,但是如果你是向一個空的數據庫集群裝載,那么 postgres 應該是比較好的選擇。

MySQL

更改 mysql root 用戶或其它用戶的密碼

方法 1

# /etc/init.d/mysql stop or # killall mysqld # mysqld --skip-grant-tables # mysqladmin -u root password 'newpasswd' # /etc/init.d/mysql start

方法 2

# mysql -u root mysql mysql> UPDATE USER SET PASSWORD=PASSWORD("newpassword") where user='root'; mysql> FLUSH PRIVILEGES; # 使用用戶名替代"root" mysql> quit

創建用戶和數據庫

# mysql -u root mysql mysql> CREATE DATABASE bobdb; mysql> GRANT ALL ON *.* TO 'bob'@'%' IDENTIFIED BY 'pwd'; # 使用 localhost 替代 % 來限制網絡訪問 mysql> DROP DATABASE bobdb; # 刪除數據庫 bobdb mysql> DROP USER bob; # 刪除用戶 bob mysql> DELETE FROM mysql.user WHERE user='bob and host='hostname'; # 刪除 mysql 數據庫 user 表中 user=bob,host=hostname 的記錄 mysql> FLUSH PRIVILEGES;

允許遠程訪問

遠程訪問通常允許單個數據庫,而不是所有的數據庫。文件?/etc/my.cnf?包含約定的 IP 地址。通常為?bind-address =?綁定地址。 # mysql -u root mysql mysql> GRANT ALL ON bobdb.* TO bob@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'PASSWORD'; mysql> REVOKE GRANT OPTION ON foo.* FROM bar@'xxx.xxx.xxx.xxx'; mysql> FLUSH PRIVILEGES; # 使用 'hostname' 也可為 '%' 來完全訪問

備份和恢復

備份和恢復單個數據庫: # mysqldump -u root -psecret --add-drop-database dbname > dbname_sql.dump # mysql -u root -psecret -D dbname < dbname_sql.dump 備份和恢復所有的數據庫: # mysqldump -u root -psecret --add-drop-database --all-databases > full.dump # mysql -u root -psecret < full.dump 這里 mysql root 的密碼為 "secret",-p 選項后面沒有空格。當單獨使用 -p 選項(不跟密碼),命令行提示符后會要求輸入密碼。

SQLite

SQLite?是一個小而強大的、獨立的(self-contained)、無服務器的(serverless)、零配置的(zero-configuration) SQL 數據庫。

備份和恢復

實用備份和恢復 SQLite 數據庫命令。舉個例子,你可以編輯備份文件來修改字段的屬性和類型,然后再恢復這個數據庫。這比使用 SQL 命令來得容易。對于 3.x 數據庫可使用?sqlite3。 # sqlite database.db .dump > dump.sql # 備份 # sqlite database.db < dump.sql # 恢復

轉換 2.x 到 3.x 數據庫

sqlite database_v2.db .dump | sqlite3 database_v3.db

磁盤限額

磁盤限額用來限制磁盤空間大小和/或用戶(或用戶組)可用的文件數。The quotas are allocated on a per-file system basis and are enforced by the kernel.

Linux 設置

Quota 工具包通常已安裝,其包含一些命令行工具。
在 fstab 中激活用戶配額并重新掛載分區。如果分區正在使用,關閉所有使用的文件,或者重啟系統。添加?usrquota?到 fstab 的掛載類型中,舉個例子: /dev/sda2 /home reiserfs rw,acl,user_xattr,usrquota 1 1 # mount -o remount /home # mount # 檢查 usrquota 已經激活,否則重啟 用?quotacheck?初始化 quota.user 文件。 # quotacheck -vum /home # chmod 644 /home/aquota.user # 讓用戶檢查自己的配額 用腳本(e.g. SuSE 的 /etc/init.d/quotad)或?quotaon?來啟用限額: quotaon -vu /home 檢查配額啟用情況: quota -v

FreeBSD 設置

Quota 工具是 FreeBSD 基本系統的一部分,然而內核需要 quota 選項。如果不存在,新增它并重新編譯內核。 options QUOTA 與 Linux 一樣,添加限額到 fstab 選項(是 userquota,而不是 usrquota)中: /dev/ad0s1d /home ufs rw,noatime,userquota 2 2 # mount /home # 重新掛載分區 在 /etc/rc.conf 中啟用磁盤限額并開啟 quota 服務。 # grep quotas /etc/rc.conf enable_quotas="YES" # 在啟動時打開限額(或者 "NO") check_quotas="YES" # 在啟動時檢查限額(或者 "NO") # /etc/rc.d/quota start

分配限額

磁盤限額默認并不限制(設置為0)。用?edquota?來對單用戶進行限制。一個 quota 也可給許多用戶復用。雖然 quota 實現之間的文件結構不同,但其原理是相同的:限制節點(inodes)數量以及使用者可以取用的磁盤區塊數量。Only change the values of soft and hard. 如果未指定,默認區塊大小為 1k。使用?edquota -t?設置 grace 時間。舉個例子: # edquota -u colin

Linux

Disk quotas for user colin (uid 1007):Filesystem blocks soft hard inodes soft hard/dev/sda8 108 1000 2000 1 0 0

FreeBSD

Quotas for user colin: /home: kbytes in use: 504184, limits (soft = 700000, hard = 800000)inodes in use: 1792, limits (soft = 0, hard = 0)

給許多用戶分配限額

命令?edquota -p?用來復用一個 quota 給其他用戶。舉個例子,復用所指用戶的限額給所有用戶: # edquota -p refuser `awk -F: $3 > 499 {print $1}' /etc/passwd` # edquota -p refuser user1 user2 # 復用給 2 個用戶

檢查

用戶只需輸入?quota?(文件 quota.user 必須可讀) 來可以檢查他們的限額。Root 可以查看所有用戶的限額。 # quota -u colin # 查看用戶的限額 # repquota /home # 所有用戶在這個分區上的限額情況

SHELLS

許多 Linux 發行版使用 BASH Shell,BSD 使用的是 tcsh,Bourne Shell 僅用于腳本。過濾器(Filter)非常有用并且可用于管道(pipe):
  • grep?? ?模式匹配
  • sed?? ? 查找并替換字符串或字符
  • cut?? ? 從一個標記開始打印所指定列數據
  • sort?? ?按字母或數字排序
  • uniq?? ?刪除一個文件中重復行
舉個例子,一次使用所有命令: # ifconfig | sed 's/ / /g' | cut -d" " -f1 | uniq | grep -E "[a-z0-9]+" | sort -r # ifconfig | sed '/.*inet addr:/!d;s///;s/ .*//'|sort -t. -k1,1n -k2,2n -k3,3n -k4,4n sed 的模式字符串中的第一個字符是一個 tab。要在命令控制臺中輸入 tab,可以使用 ctrl-v ctrl-tab。

bash

Bash、sh 的重定向和管道: # cmd 1> file # 重定向標準輸出到 file。 # cmd 2> file # 重定向標準錯誤輸出到 file。 # cmd 1>> file # 重定向標準輸出并追加到 file。 # cmd &> file # 重定向標準輸出和標準錯誤輸出到 file。 # cmd >file 2>&1 # 重定向標準錯誤輸出到標準輸出然后重定向到 file。 # cmd1 | cmd2 # cmd1 的輸出通過管道連接到 cmd2 的輸入 # cmd1 2>&1 | cmd2 # cmd1 的輸出和錯誤輸出通過管道連接到 cmd2 的輸入 修改你的配置文件 ~/.bashrc (也可以是 ~/.bash_profile)。下列條目非常有用,使用". .bashrc"重新加載。 # in .bashrc bind '"\e[A"':history-search-backward # 使用上下鍵查找 bind '"\e[B"':history-search-forward # 歷史命令。無價之寶! set -o emacs # Set emacs mode in bash (看下面) set bell-style visible # Do not beep, inverse colors# 設置一個漂亮的提示符像 [user@host]/path/todir> PS1="\[\033[1;30m\][\[\033[1;34m\]\u\[\033[1;30m\]" PS1="$PS1@\[\033[0;33m\]\h\[\033[1;30m\]]\[\033[0;37m\]" PS1="$PS1\w\[\033[1;30m\]>\[\033[0m\]" # 要檢查當前可用別名(alias),只需簡單輸入命令 alias alias ls='ls -aF' # 添加指示符(*/=>@| 其中之一) alias ll='ls -aFls' # 清單 alias la='ls -all' alias ..='cd ..' alias ...='cd ../..' export HISTFILESIZE=5000 # 巨大的歷史記錄 export CLICOLOR=1 # 使用顏色(如果可用) export LSCOLORS=ExGxFxdxCxDxDxBxBxExEx

tcsh

Tcsh、csh 的重定向和管道(> 和 >> 同 sh 中一樣): # cmd >& file # 重定向標準輸出和標準錯誤輸出到 file。 # cmd >>& file # 追加標準輸出和標準錯誤輸出到 file。 # cmd1 | cmd2 # cmd1 的輸出通過管道連接到 cmd2 的輸入 # cmd1 |& cmd2 # cmd1 的輸出和錯誤輸出通過管道連接到 cmd2 的輸入 Csh/tcsh 的設置在?~/.cshrc?中,使用"source .cshrc"來重新加載。例子: # in .cshrc alias ls 'ls -aF' alias ll 'ls -aFls' alias la 'ls -all' alias .. 'cd ..' alias ... 'cd ../..' set prompt = "%B%n%b@%B%m%b%/> " # 像 user@host/path/todir> set history = 5000 set savehist = ( 6000 merge ) set autolist # 控制命令補全和變量補全 set visiblebell # 使用閃動屏幕的方式來取代蜂鳴器鳴叫 # Bindkey 和顏色 bindkey -e Select Emacs bindings # 將命令行編輯器切換到emacs模式 bindkey -k up history-search-backward # 使用上下鍵來搜索 bindkey -k down history-search-forward setenv CLICOLOR 1 # 使用顏色(可能的話) setenv LSCOLORS ExGxFxdxCxDxDxBxBxExEx 該 emacs 模式將使用 emacs 快捷鍵來修改命令提示行。這是非常有用的(不單為 Emacs 用戶)。最常用的命令如下:
  • C-a ? ? ? 移動光標到行頭
  • C-e ? ? ? 移動光標到行尾
  • M-b ? ? ? 移動光標到前一個單詞
  • M-f ? ? ? 移動光標到后一個單詞
  • M-d ? ? ? 剪切下一個單詞
  • C-w ? ? ? 剪切最后一個單詞
  • C-u ? ? ? 剪切光標前所有字符
  • C-k ? ? ? 剪切光標后所有字符
  • C-y ? ? ? 粘帖最后剪切的字符(簡易的粘帖)
  • C-_ ? ? ? 重做
注意:?C- = 按住 control 鍵,M- = 按住 meta (它通常為 alt 或者 escape)鍵。

腳本

基礎?|?腳本實例?|?sed/實用命令

Bourne shell?(/bin/sh) 存在于所有的 Unix 系統上,并且用她寫的腳本是(完全)可移植的;?man 1 sh?是一個好的參考。

基礎

變量和參數

使用?variable=value?的命令格式設置變量,其中 variable 是變量名稱,value是打算賦給該變量的值。使用 $variable 獲取變量值。 MESSAGE="Hello World" # 賦予一個字符串 PI=3.1415 # 賦予一個十進制小數 N=8 TWON=`expr $N * 2` # 算術表達式(只限整數) TWON=$(($N * 2)) # 另一種語法 TWOPI=`echo "$PI * 2" | bc -l` # 使用 bc 進行浮點運算 ZERO=`echo "c($PI/4)-sqrt(2)/2" | bc -l` 命令行參數: $0, $1, $2, ... # $0 命令本身 $# # 命令參數個數 $* # 所有參數(也可以是 $@)

一些特殊的變量

$$ # 當前進程 ID $? # 最后命令退出狀態碼commandif [ $? != 0 ]; thenecho "command failed"fi mypath=`pwd` mypath=${mypath}/file.txt echo ${mypath##*/} # 只顯示文件名 echo ${mypath%%.*} # 除了擴展名的全路徑 var2=${var:=string} # 如果var沒有被賦值,則string值先賦值給var, # 然后再賦值給var2

結構控制

for file in `ls` doecho $file donecount=0 while [ $count -lt 5 ]; do echo $count sleep 1 count=$(($count + 1)) done myfunction() { find . -type f -name "*.$1" -print # $1 為方法的第一個參數 } myfunction "txt"

產生一個文件

MYHOME=/home/colin cat > testhome.sh << _EOF # 所有_EOF前的代碼都會進入到 testhome.sh 文件中去 if [ -d "$MYHOME" ] ; thenecho $MYHOME exists else echo $MYHOME does not exist fi _EOF sh testhome.sh

Bourne 腳本實例

來一個小實例,此腳本從本 xhtml 文檔創建一個 PDF 小冊子: #!/bin/sh # 此腳本可以創建一份供雙面打印機打印的 PDF 格式的書 if [ $# -ne 1 ]; then # 檢查參數是否等于 1 echo 1>&2 "Usage: $0 HtmlFile" exit 1 # 如果不等于1,非0退出 fi file=$1 # 文件變量 fname=${file%.*} # 文件名變量 fext=${file#*.} # 文件擴展名變量 prince $file -o $fname.pdf # www.princexml.com pdftops -paper A4 -noshrink $fname.pdf $fname.ps # 創建 postscript 小冊子 cat $fname.ps |psbook|psnup -Pa4 -2 |pstops -b "2:0,1U(21cm,29.7cm)" > $fname.book.ps ps2pdf13 -sPAPERSIZE=a4 -sAutoRotatePages=None $fname.book.ps $fname.book.pdf # 在 Windows 上使用 #a4 和 #None! exit 0 # exit 0 意為成功

一些 sed 命令

這里是單行 sed 命令的金礦。還有一個很好的?sed 介紹及教程。 sed 's/string1/string2/g' # 替換 string1 為 string2 sed -i 's/wroong/wrong/g' *.txt # 用 g 替換所有返回的單詞 sed 's/\(.*\)1/\12/g' # 修改 anystring1 為 anystring2 sed '/<p>/,/<\/p>/d' t.xhtml # 刪除以 <p> 開始,以 </p> 結尾的行 sed '/ *#/d; /^ *$/d' # 刪除注釋和空行 sed 's/[ \t]*$//' # 刪除行尾空格 (使用 tab 代替 \t) sed 's/^[ \t]*//;s/[ \t]*$//' # 刪除行頭尾空格 sed 's/[^*]/[&]/' # 括住首字符 [] top -> [t]op sed = file | sed 'N;s/\n/\t/' > file.num # 為文件添加行號

正則表達式

一些基本的正則表達式同樣可用于 sed。作為一個良好的啟蒙,可看?基本正則語法。 [\^$.|?*+() # 特殊字符,其他字符將匹配自身 \ # 轉義特殊字符,當成普通字符對待 * # 重復前項 0 次或多次 . # 單個字符除換行符 .* # 匹配 0 個或多個字符 ^ # 匹配字符串行開始處 $ # 匹配字符串行結尾處 .$ # 匹配字符串行最后一個字符 ^ $ # 匹配單個空格的行 [^A-Z] # 匹配任何以 A-Z 字符開始的行

一些實用命令

下列命令對于包含于一個腳本或者單行命令來說很有用。 sort -t. -k1,1n -k2,2n -k3,3n -k4,4n # 排序 IPv4 格式的 IP 地址 echo 'Test' | tr '[:lower:]' '[:upper:]' # 轉換成大寫 echo foo.bar | cut -d . -f 1 # 返回 foo PID=$(ps | grep script.sh | grep bin | awk '{print $1}') # 正在運行名為 script 腳本的 PID PID=$(ps axww | grep [p]ing | awk '{print $1}') # ping 的 PID (w/o grep pid) IP=$(ifconfig $INTERFACE | sed '/.*inet addr:/!d;s///;s/ .*//') # Linux IP=$(ifconfig $INTERFACE | sed '/.*inet /!d;s///;s/ .*//') # FreeBSD if [ `diff file1 file2 | wc -l` != 0 ]; then [...] fi # 文件改變了? cat /etc/master.passwd | grep -v root | grep -v \*: | awk -F":" \ # 創建 http passwd '{ printf("%s:%s\n", $1, $2) }' > /usr/local/etc/apache2/passwd testuser=$(cat /usr/local/etc/apache2/passwd | grep -v \ # 查看 passwd 中的用戶 root | grep -v \*: | awk -F":" '{ printf("%s\n", $1) }' | grep ^user$) :(){ :|:& };: # bash fork 炸彈。會干掉你的機器 tail +2 file > file2 # 刪除文件的第一行 我使用一種小伎倆來一次更改許多文件的擴展名。舉個例子,從 .cxx 到 .cpp。排除最后的?| sh?先測試一下。你同樣可以使用命令?rename?來做這些,如果安裝了的話。或者使用 bash 內建命令。 # ls *.cxx | awk -F. '{print "mv "$0" "$1".cpp"}' | sh # ls *.c | sed "s/.*/cp & &.$(date "+%Y%m%d")/" | sh # 如 拷貝 *.c 成 *.c.20080401 # rename .cxx .cpp *.cxx # 重命名所有 .cxx 成 .cpp # for i in *.cxx; do mv $i ${i%%.cxx}.cpp; done # bash 內建的

編程

C 基礎

strcpy(newstr,str) /* 拷貝 str 到 newstr */ expr1 ? expr2 : expr3 /* if (expr1) expr2 else expr3 */ x = (y > z) ? y : z; /* if (y > z) x = y; else x = z; */ int a[]={0,1,2}; /* 初始化數組 (或者 a[3]={0,1,2}; */ int a[2][3]={{1,2,3},{4,5,6}}; /* 初始化二維數組 */ int i = 12345; /* 從 i 轉換成 char str */ char str[10]; sprintf(str, "%d", i);

C 實例

一個最小化的 C 程式 simple.c: #include <stdio.h> main() {int number=42;printf("The answer is %i\n", number); } 編譯: # gcc simple.c -o simple # ./simple The answer is 42

C++ 基礎

*pointer // 指向對象的指針 &obj // 對象 obj 的地址 obj.x // 類(對象) obj 成員 x pobj->x // 指針 pobj 指向類(對象)成員 x// (*pobj).x 同 pobj->x

C++ 實例

來一個稍微現實一點的 C++ 程序,我們在一個頭文件(IPv4.h)中創建一個類并且實現它(IPv4.cpp),然后創建一個程式來使用其功能。這個類的成員方法實現了 IP 地址從一串整數轉換成我們熟知的點分格式。這是一個最小化的 C++ 程式和多源文件(multi-source)的編譯。

IPv4 class

IPv4.h:

#ifndef IPV4_H #define IPV4_H #include <string>namespace GenericUtils { // 創建 namespace class IPv4 { // 類定義 public: IPv4(); ~IPv4(); std::string IPint_to_IPquad(unsigned long ip);// 成員方法接口 }; } //namespace GenericUtils #endif // IPV4_H

IPv4.cpp:

#include "IPv4.h" #include <string> #include <sstream> using namespace std; // 使用 namespace using namespace GenericUtils; IPv4::IPv4() {} // 默認構造/析構函數 IPv4::~IPv4() {} string IPv4::IPint_to_IPquad(unsigned long ip) { // 成員方法實現 ostringstream ipstr; // 使用字符串流 ipstr << ((ip &0xff000000) >> 24) // 位右移 << "." << ((ip &0x00ff0000) >> 16) << "." << ((ip &0x0000ff00) >> 8) << "." << ((ip &0x000000ff)); return ipstr.str(); }

程序 simplecpp.cpp

#include "IPv4.h" #include <iostream> #include <string> using namespace std;int main (int argc, char* argv[]) { string ipstr; // 定義變量 unsigned long ipint = 1347861486; // 數字形式的 IP GenericUtils::IPv4 iputils; // 創建一個類的對象 ipstr = iputils.IPint_to_IPquad(ipint); // 調研類的成員方法 cout << ipint << " = " << ipstr << endl; // 輸出結果 return 0; } 編譯和執行: # g++ -c IPv4.cpp simplecpp.cpp # 編譯成目標文件 # g++ IPv4.o simplecpp.o -o simplecpp.exe # 連接目標代碼,生成可執行文件 # ./simplecpp.exe 1347861486 = 80.86.187.238 使用?ldd?腳本檢查并列出可執行程序所依賴的共享庫文件。這個命令同樣可以用來檢查共享庫的丟失。 # ldd /sbin/ifconfig

簡單的 Makefile

相應的最小化多源文件(multi-source)編譯 Makefile 顯示如下。每一個命令行必須以?tab?開始!可以將一個較長行使用反斜線"\"來分解為多行。 CC = g++ CFLAGS = -O OBJS = IPv4.o simplecpp.osimplecpp: ${OBJS}${CC} -o simplecpp ${CFLAGS} ${OBJS} clean:rm -f ${TARGET} ${OBJS}

轉載于:https://www.cnblogs.com/youyouii/p/10119466.html

總結

以上是生活随笔為你收集整理的linux命令备忘录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久久久久亚洲精品a片成人 | 全黄性性激高免费视频 | 中文字幕无码av波多野吉衣 | 国产精品久久久av久久久 | 婷婷综合久久中文字幕蜜桃三电影 | 中文久久乱码一区二区 | 精品aⅴ一区二区三区 | 国产成人无码av片在线观看不卡 | 内射欧美老妇wbb | 日欧一片内射va在线影院 | 欧美熟妇另类久久久久久多毛 | 欧美精品免费观看二区 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 中文字幕乱码中文乱码51精品 | 激情内射日本一区二区三区 | 荫蒂添的好舒服视频囗交 | 人妻少妇精品无码专区二区 | 精品一区二区三区波多野结衣 | 日韩欧美成人免费观看 | 亚洲国产精品久久人人爱 | 熟女体下毛毛黑森林 | 精品国偷自产在线视频 | 日本一区二区三区免费播放 | 国产极品美女高潮无套在线观看 | 国内综合精品午夜久久资源 | 色婷婷av一区二区三区之红樱桃 | 精品人妻人人做人人爽夜夜爽 | 成人综合网亚洲伊人 | 日韩av激情在线观看 | 国产一区二区三区日韩精品 | 国产日产欧产精品精品app | 四虎影视成人永久免费观看视频 | 午夜无码人妻av大片色欲 | 午夜性刺激在线视频免费 | 300部国产真实乱 | 亚洲精品一区二区三区在线观看 | 天堂亚洲2017在线观看 | 一区二区三区乱码在线 | 欧洲 | 国产国语老龄妇女a片 | aⅴ亚洲 日韩 色 图网站 播放 | 国产精品第一区揄拍无码 | 国产99久久精品一区二区 | 亚洲男人av香蕉爽爽爽爽 | 曰韩无码二三区中文字幕 | 台湾无码一区二区 | 一本大道伊人av久久综合 | 兔费看少妇性l交大片免费 | 狂野欧美性猛xxxx乱大交 | 亚洲一区二区观看播放 | 亚洲国产精品无码一区二区三区 | 国产福利视频一区二区 | 成人欧美一区二区三区黑人 | 久久久久亚洲精品中文字幕 | 性欧美大战久久久久久久 | 国产精品亚洲а∨无码播放麻豆 | 精品无码成人片一区二区98 | 日韩av无码一区二区三区 | av无码久久久久不卡免费网站 | 日日鲁鲁鲁夜夜爽爽狠狠 | 精品乱子伦一区二区三区 | 老熟妇乱子伦牲交视频 | 成人三级无码视频在线观看 | 精品久久久无码人妻字幂 | 色欲综合久久中文字幕网 | yw尤物av无码国产在线观看 | 欧美亚洲国产一区二区三区 | 国产精品美女久久久 | 亚洲人成人无码网www国产 | 欧美freesex黑人又粗又大 | 男女猛烈xx00免费视频试看 | 宝宝好涨水快流出来免费视频 | 一本精品99久久精品77 | 成人无码视频免费播放 | 日韩av无码一区二区三区不卡 | 成 人 免费观看网站 | 亚洲精品国产第一综合99久久 | 国内精品人妻无码久久久影院 | 亚洲国产欧美在线成人 | 亚洲熟女一区二区三区 | 丰满少妇熟乱xxxxx视频 | 国产手机在线αⅴ片无码观看 | 九一九色国产 | 欧美 日韩 人妻 高清 中文 | 国产成人午夜福利在线播放 | 亚洲成av人影院在线观看 | 无码一区二区三区在线观看 | 亚洲第一无码av无码专区 | 在线欧美精品一区二区三区 | av在线亚洲欧洲日产一区二区 | 99麻豆久久久国产精品免费 | 国产精品高潮呻吟av久久4虎 | 丰满妇女强制高潮18xxxx | 国产亚洲tv在线观看 | 18禁止看的免费污网站 | 久久综合九色综合欧美狠狠 | 国产精华av午夜在线观看 | 亚洲国产精华液网站w | 精品无码成人片一区二区98 | 成人精品一区二区三区中文字幕 | 无码国产乱人伦偷精品视频 | 性啪啪chinese东北女人 | 亚洲中文字幕成人无码 | 人人妻人人澡人人爽欧美精品 | 精品国产成人一区二区三区 | 国产精品va在线观看无码 | 日韩视频 中文字幕 视频一区 | 亚洲成熟女人毛毛耸耸多 | 国产av久久久久精东av | www成人国产高清内射 | 奇米影视7777久久精品人人爽 | 乱人伦中文视频在线观看 | 一个人看的www免费视频在线观看 | 国产av人人夜夜澡人人爽麻豆 | 色婷婷综合中文久久一本 | 色综合视频一区二区三区 | 日韩欧美中文字幕在线三区 | 久久久精品人妻久久影视 | 国产人妻人伦精品1国产丝袜 | 纯爱无遮挡h肉动漫在线播放 | 久久99精品久久久久久 | 精品亚洲成av人在线观看 | 少妇人妻偷人精品无码视频 | 黑人巨大精品欧美黑寡妇 | 西西人体www44rt大胆高清 | 国产精品第一区揄拍无码 | 亚洲人成影院在线观看 | 亚洲の无码国产の无码步美 | 日本成熟视频免费视频 | 天天爽夜夜爽夜夜爽 | 国产精品成人av在线观看 | 亚洲精品一区三区三区在线观看 | 色情久久久av熟女人妻网站 | 国产亚洲精品精品国产亚洲综合 | 精品人人妻人人澡人人爽人人 | 亚洲综合在线一区二区三区 | 波多野结衣av在线观看 | 国产麻豆精品一区二区三区v视界 | 波多野结衣一区二区三区av免费 | 国产美女精品一区二区三区 | 在线欧美精品一区二区三区 | 亚欧洲精品在线视频免费观看 | 中文字幕无码日韩专区 | 日产精品高潮呻吟av久久 | 人人澡人摸人人添 | 性欧美熟妇videofreesex | 成人影院yy111111在线观看 | 成年美女黄网站色大免费视频 | 国内综合精品午夜久久资源 | 国产成人无码av片在线观看不卡 | 曰韩少妇内射免费播放 | 亚洲中文字幕无码一久久区 | 波多野42部无码喷潮在线 | 日本一卡2卡3卡四卡精品网站 | 国产亚洲欧美日韩亚洲中文色 | 97人妻精品一区二区三区 | 国产午夜福利亚洲第一 | 99精品视频在线观看免费 | 最近的中文字幕在线看视频 | 婷婷五月综合激情中文字幕 | 色情久久久av熟女人妻网站 | 乱码午夜-极国产极内射 | 一区二区三区高清视频一 | 99久久久国产精品无码免费 | 男女爱爱好爽视频免费看 | 俺去俺来也www色官网 | 99久久精品午夜一区二区 | 俄罗斯老熟妇色xxxx | 粉嫩少妇内射浓精videos | 国产成人综合色在线观看网站 | 极品尤物被啪到呻吟喷水 | 东京热男人av天堂 | 日日摸天天摸爽爽狠狠97 | 日日碰狠狠躁久久躁蜜桃 | 97夜夜澡人人爽人人喊中国片 | 亚洲色无码一区二区三区 | 好爽又高潮了毛片免费下载 | 99久久久无码国产aaa精品 | 精品无人国产偷自产在线 | 高潮喷水的毛片 | 亚洲小说图区综合在线 | 欧美精品在线观看 | 国产一区二区三区精品视频 | 俺去俺来也www色官网 | 噜噜噜亚洲色成人网站 | 日韩亚洲欧美精品综合 | 久久久久99精品成人片 | 亚洲午夜福利在线观看 | 精品一区二区三区波多野结衣 | 国产熟女一区二区三区四区五区 | 西西人体www44rt大胆高清 | 人妻熟女一区 | 久久精品人妻少妇一区二区三区 | 日韩人妻系列无码专区 | 中文字幕无码免费久久9一区9 | 久久www免费人成人片 | 国产9 9在线 | 中文 | 最新版天堂资源中文官网 | 最近免费中文字幕中文高清百度 | 内射后入在线观看一区 | 1000部夫妻午夜免费 | 欧美人妻一区二区三区 | 国产人妻精品午夜福利免费 | 国产亚洲人成a在线v网站 | 成人精品视频一区二区 | 黄网在线观看免费网站 | 亚洲欧美精品伊人久久 | 国产av一区二区三区最新精品 | 撕开奶罩揉吮奶头视频 | 一二三四社区在线中文视频 | 亚洲成av人在线观看网址 | 日本一卡二卡不卡视频查询 | 亚洲成a人片在线观看日本 | 乌克兰少妇性做爰 | 国产亚洲精品久久久ai换 | 熟妇女人妻丰满少妇中文字幕 | 久久综合狠狠综合久久综合88 | 国产精品.xx视频.xxtv | 强伦人妻一区二区三区视频18 | 成人性做爰aaa片免费看 | 免费中文字幕日韩欧美 | 国内揄拍国内精品少妇国语 | 我要看www免费看插插视频 | 红桃av一区二区三区在线无码av | 精品欧洲av无码一区二区三区 | 成人精品视频一区二区三区尤物 | 18禁止看的免费污网站 | 久久成人a毛片免费观看网站 | 国精产品一区二区三区 | 久久人人爽人人人人片 | 国产精品亚洲lv粉色 | 日日摸夜夜摸狠狠摸婷婷 | aⅴ在线视频男人的天堂 | 熟女少妇在线视频播放 | 欧美人与动性行为视频 | 1000部啪啪未满十八勿入下载 | 婷婷色婷婷开心五月四房播播 | 在线观看欧美一区二区三区 | 成人免费视频视频在线观看 免费 | 131美女爱做视频 | 人人澡人人妻人人爽人人蜜桃 | 国产欧美熟妇另类久久久 | 欧美性生交xxxxx久久久 | 国产香蕉尹人视频在线 | 两性色午夜免费视频 | 中文字幕乱码人妻无码久久 | 日本xxxx色视频在线观看免费 | 国产特级毛片aaaaaa高潮流水 | 亚洲自偷自拍另类第1页 | 日韩人妻无码一区二区三区久久99 | a在线观看免费网站大全 | 在线观看免费人成视频 | 亚洲中文字幕乱码av波多ji | 成人无码视频免费播放 | 偷窥村妇洗澡毛毛多 | 国产成人一区二区三区在线观看 | 日本丰满熟妇videos | 亚洲无人区午夜福利码高清完整版 | 在线看片无码永久免费视频 | 欧美国产日韩亚洲中文 | 久久精品视频在线看15 | 鲁大师影院在线观看 | 日韩少妇内射免费播放 | 国产黄在线观看免费观看不卡 | 无码帝国www无码专区色综合 | 久久国产36精品色熟妇 | 欧美精品无码一区二区三区 | 亚洲精品国产第一综合99久久 | 装睡被陌生人摸出水好爽 | 乱人伦人妻中文字幕无码 | 最新国产乱人伦偷精品免费网站 | 久久久久国色av免费观看性色 | 亚洲精品综合五月久久小说 | 精品无码一区二区三区爱欲 | 国产精品无码一区二区三区不卡 | 樱花草在线播放免费中文 | 精品人妻中文字幕有码在线 | 中文字幕无码人妻少妇免费 | 99国产精品白浆在线观看免费 | 麻豆国产97在线 | 欧洲 | 丰满人妻精品国产99aⅴ | aⅴ亚洲 日韩 色 图网站 播放 | a在线观看免费网站大全 | 成人欧美一区二区三区 | 无码毛片视频一区二区本码 | 日韩 欧美 动漫 国产 制服 | 丰满岳乱妇在线观看中字无码 | 国产va免费精品观看 | 国产精品va在线播放 | 久久国产精品偷任你爽任你 | 欧美人与禽猛交狂配 | 免费观看又污又黄的网站 | 国产精品亚洲а∨无码播放麻豆 | 在线精品国产一区二区三区 | 丰满诱人的人妻3 | 永久黄网站色视频免费直播 | 99久久久无码国产aaa精品 | 亚洲欧美国产精品专区久久 | 久久www免费人成人片 | 丰满人妻被黑人猛烈进入 | 国产综合在线观看 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 国内综合精品午夜久久资源 | 欧美 亚洲 国产 另类 | 欧美 日韩 亚洲 在线 | 超碰97人人射妻 | 人妻尝试又大又粗久久 | 中文字幕乱码人妻无码久久 | 亚洲区欧美区综合区自拍区 | 四虎国产精品免费久久 | 大肉大捧一进一出视频出来呀 | 乱人伦人妻中文字幕无码久久网 | 18无码粉嫩小泬无套在线观看 | 久久伊人色av天堂九九小黄鸭 | 男人的天堂av网站 | yw尤物av无码国产在线观看 | 在线 国产 欧美 亚洲 天堂 | 人妻体内射精一区二区三四 | 国产艳妇av在线观看果冻传媒 | 国产成人无码午夜视频在线观看 | 国产熟妇另类久久久久 | 亚洲欧美中文字幕5发布 | 国产性生交xxxxx无码 | 久久国语露脸国产精品电影 | 蜜臀av无码人妻精品 | 亚洲天堂2017无码中文 | 男女下面进入的视频免费午夜 | 少妇被粗大的猛进出69影院 | 欧美性生交活xxxxxdddd | 妺妺窝人体色www在线小说 | 领导边摸边吃奶边做爽在线观看 | 日本精品久久久久中文字幕 | 无人区乱码一区二区三区 | 成人综合网亚洲伊人 | 麻豆国产人妻欲求不满 | 国产午夜福利亚洲第一 | 动漫av网站免费观看 | 免费人成在线视频无码 | 亚洲区小说区激情区图片区 | 亚洲一区二区三区在线观看网站 | 影音先锋中文字幕无码 | 精品久久综合1区2区3区激情 | 亚洲成在人网站无码天堂 | 正在播放东北夫妻内射 | 人妻有码中文字幕在线 | 国产精品久久久久久亚洲毛片 | 日韩精品无码一区二区中文字幕 | 性啪啪chinese东北女人 | 狠狠躁日日躁夜夜躁2020 | 国产性生交xxxxx无码 | √天堂资源地址中文在线 | 精品久久久久久亚洲精品 | 成人精品天堂一区二区三区 | 九一九色国产 | 国产亚洲日韩欧美另类第八页 | 国色天香社区在线视频 | 欧美兽交xxxx×视频 | 巨爆乳无码视频在线观看 | 中文字幕无码av激情不卡 | 久久人妻内射无码一区三区 | 人妻熟女一区 | 国产9 9在线 | 中文 | 国产精品亚洲а∨无码播放麻豆 | 久久www免费人成人片 | 亚洲乱码中文字幕在线 | 亚洲精品一区二区三区在线 | 日本饥渴人妻欲求不满 | 久久久精品人妻久久影视 | 国产精品高潮呻吟av久久 | 无码av中文字幕免费放 | 人人妻人人澡人人爽欧美一区九九 | 漂亮人妻洗澡被公强 日日躁 | 国产午夜福利亚洲第一 | 狠狠噜狠狠狠狠丁香五月 | 一本久久a久久精品亚洲 | 天堂а√在线中文在线 | 无码毛片视频一区二区本码 | 女人被男人躁得好爽免费视频 | 国产麻豆精品一区二区三区v视界 | 亚洲aⅴ无码成人网站国产app | 天干天干啦夜天干天2017 | 好男人社区资源 | 国产精品对白交换视频 | 熟妇激情内射com | 亚洲一区二区三区国产精华液 | 亚洲一区av无码专区在线观看 | 国产熟妇高潮叫床视频播放 | 亚洲精品www久久久 | 粗大的内捧猛烈进出视频 | 亚洲国产高清在线观看视频 | 狠狠综合久久久久综合网 | 色综合久久中文娱乐网 | 成 人 网 站国产免费观看 | 成人免费无码大片a毛片 | 欧美一区二区三区 | 久久久久久av无码免费看大片 | 精品一区二区三区波多野结衣 | 久久人妻内射无码一区三区 | 中文字幕中文有码在线 | 亚洲中文字幕va福利 | 一个人看的www免费视频在线观看 | 风流少妇按摩来高潮 | 乌克兰少妇性做爰 | 亚洲狠狠婷婷综合久久 | 日本一区二区三区免费播放 | 欧美精品无码一区二区三区 | 55夜色66夜色国产精品视频 | 久久久中文久久久无码 | 国产内射爽爽大片视频社区在线 | 无码人妻丰满熟妇区五十路百度 | 亚洲熟妇色xxxxx欧美老妇 | 大地资源网第二页免费观看 | 久久久久成人片免费观看蜜芽 | 色一情一乱一伦一视频免费看 | 领导边摸边吃奶边做爽在线观看 | 亚洲自偷自偷在线制服 | 人妻无码久久精品人妻 | 日本肉体xxxx裸交 | 午夜时刻免费入口 | 少妇太爽了在线观看 | 久久zyz资源站无码中文动漫 | 99久久精品午夜一区二区 | 国产精品第一国产精品 | 性生交大片免费看l | 国产偷自视频区视频 | 99久久婷婷国产综合精品青草免费 | aⅴ亚洲 日韩 色 图网站 播放 | 国产一区二区不卡老阿姨 | 熟女少妇人妻中文字幕 | 亚洲色欲久久久综合网东京热 | 国产成人午夜福利在线播放 | 免费无码一区二区三区蜜桃大 | 久久久久av无码免费网 | 免费观看黄网站 | 国产在线精品一区二区三区直播 | 好爽又高潮了毛片免费下载 | 成人免费无码大片a毛片 | 亚洲成av人片在线观看无码不卡 | 精品国产一区二区三区四区在线看 | 丝袜足控一区二区三区 | 中文字幕无线码免费人妻 | 久久综合给久久狠狠97色 | 国产精品手机免费 | 久久久久久av无码免费看大片 | 日日噜噜噜噜夜夜爽亚洲精品 | 99久久精品国产一区二区蜜芽 | 人人妻人人藻人人爽欧美一区 | 国产精品人人妻人人爽 | 日韩人妻少妇一区二区三区 | 亚洲经典千人经典日产 | 伊人久久大香线蕉av一区二区 | 天堂亚洲2017在线观看 | 福利一区二区三区视频在线观看 | 无码国产乱人伦偷精品视频 | 精品国产乱码久久久久乱码 | 日韩人妻系列无码专区 | 成人欧美一区二区三区黑人免费 | 国产午夜精品一区二区三区嫩草 | 亚洲欧美日韩综合久久久 | 亚洲国产精品一区二区第一页 | 国产av剧情md精品麻豆 | 亚洲欧美中文字幕5发布 | 蜜桃视频韩日免费播放 | 午夜福利试看120秒体验区 | 亚洲欧美国产精品久久 | 亚洲精品国产品国语在线观看 | 欧美日韩亚洲国产精品 | 国产日产欧产精品精品app | 久久国产精品精品国产色婷婷 | 成人试看120秒体验区 | 波多野结衣乳巨码无在线观看 | 成人精品视频一区二区三区尤物 | 又大又黄又粗又爽的免费视频 | 国产成人一区二区三区别 | 国产精品久久国产精品99 | 蜜臀av在线播放 久久综合激激的五月天 | 天海翼激烈高潮到腰振不止 | 亚洲一区二区三区 | 乱人伦中文视频在线观看 | 国产成人无码区免费内射一片色欲 | 国产女主播喷水视频在线观看 | 久久综合色之久久综合 | 日韩欧美中文字幕在线三区 | 欧美日韩人成综合在线播放 | 国产精品二区一区二区aⅴ污介绍 | v一区无码内射国产 | 精品亚洲韩国一区二区三区 | 全球成人中文在线 | 偷窥村妇洗澡毛毛多 | 国产成人午夜福利在线播放 | 成人免费视频视频在线观看 免费 | 久久精品国产日本波多野结衣 | 日日天日日夜日日摸 | 中文久久乱码一区二区 | 日韩亚洲欧美中文高清在线 | 国产又粗又硬又大爽黄老大爷视 | 精品人妻人人做人人爽夜夜爽 | 日韩精品无码一本二本三本色 | 国产猛烈高潮尖叫视频免费 | 99久久精品国产一区二区蜜芽 | 免费无码一区二区三区蜜桃大 | 国产免费无码一区二区视频 | 国产小呦泬泬99精品 | 内射白嫩少妇超碰 | 55夜色66夜色国产精品视频 | 亚洲自偷自偷在线制服 | 色噜噜亚洲男人的天堂 | 国产精品无码一区二区桃花视频 | 性生交大片免费看l | 国产激情无码一区二区 | 国产在线精品一区二区三区直播 | 精品熟女少妇av免费观看 | 成人三级无码视频在线观看 | 狂野欧美性猛交免费视频 | 欧美日韩色另类综合 | 性欧美牲交xxxxx视频 | 爱做久久久久久 | 亚洲色大成网站www | 无码精品人妻一区二区三区av | 欧美日韩一区二区免费视频 | 国产综合在线观看 | 撕开奶罩揉吮奶头视频 | 日韩欧美中文字幕公布 | 亚洲国产日韩a在线播放 | 国产亚洲精品久久久久久国模美 | 无码播放一区二区三区 | 国产精品无码永久免费888 | 久久久久成人精品免费播放动漫 | 欧洲欧美人成视频在线 | 福利一区二区三区视频在线观看 | 国产无套粉嫩白浆在线 | 无码吃奶揉捏奶头高潮视频 | 国产午夜福利100集发布 | 亚洲热妇无码av在线播放 | 成人一区二区免费视频 | 国产精品国产三级国产专播 | 少妇厨房愉情理9仑片视频 | 亚洲高清偷拍一区二区三区 | 风流少妇按摩来高潮 | 中国大陆精品视频xxxx | 欧美喷潮久久久xxxxx | 亚洲呦女专区 | 亚洲精品一区国产 | 亚洲精品午夜国产va久久成人 | 日本精品少妇一区二区三区 | 国产色在线 | 国产 | 欧美丰满熟妇xxxx性ppx人交 | 日欧一片内射va在线影院 | 国产精品理论片在线观看 | 色综合视频一区二区三区 | 国产高清av在线播放 | 精品aⅴ一区二区三区 | 国产精品亚洲五月天高清 | 99久久久无码国产aaa精品 | 熟妇人妻中文av无码 | 人妻aⅴ无码一区二区三区 | 久久久久久av无码免费看大片 | 老司机亚洲精品影院 | 久青草影院在线观看国产 | 97精品国产97久久久久久免费 | 国产成人无码区免费内射一片色欲 | 国产免费久久精品国产传媒 | 国产美女精品一区二区三区 | 99久久久无码国产aaa精品 | 天干天干啦夜天干天2017 | 麻豆人妻少妇精品无码专区 | 亚洲熟悉妇女xxx妇女av | 成人免费视频在线观看 | 久久久久久久女国产乱让韩 | 日产国产精品亚洲系列 | 免费男性肉肉影院 | 又大又硬又爽免费视频 | 久久国产自偷自偷免费一区调 | 性史性农村dvd毛片 | 国产免费久久久久久无码 | 国产成人综合在线女婷五月99播放 | 日本乱偷人妻中文字幕 | 天堂无码人妻精品一区二区三区 | 粉嫩少妇内射浓精videos | 天天av天天av天天透 | 内射白嫩少妇超碰 | 精品久久久久久亚洲精品 | 成人无码视频在线观看网站 | 亚洲爆乳无码专区 | 亚洲精品国产精品乱码不卡 | 人妻少妇精品久久 | 久久久久久a亚洲欧洲av冫 | 无码一区二区三区在线观看 | 国产sm调教视频在线观看 | 国内精品久久久久久中文字幕 | 亚洲国产精华液网站w | 日本精品久久久久中文字幕 | 人人澡人人妻人人爽人人蜜桃 | av无码电影一区二区三区 | 鲁鲁鲁爽爽爽在线视频观看 | 无码吃奶揉捏奶头高潮视频 | 亚洲成a人片在线观看无码3d | 亚洲a无码综合a国产av中文 | 免费乱码人妻系列无码专区 | √天堂资源地址中文在线 | 久久国产精品二国产精品 | 亚洲午夜无码久久 | 亚洲熟妇自偷自拍另类 | 捆绑白丝粉色jk震动捧喷白浆 | 波多野结衣av在线观看 | 亚洲综合伊人久久大杳蕉 | 亚洲精品一区三区三区在线观看 | 午夜熟女插插xx免费视频 | 少妇性荡欲午夜性开放视频剧场 | 7777奇米四色成人眼影 | 人妻与老人中文字幕 | 蜜桃视频韩日免费播放 | 图片小说视频一区二区 | 久久久久99精品成人片 | 久久亚洲中文字幕精品一区 | 亚洲国产精品无码久久久久高潮 | 国产69精品久久久久app下载 | 老子影院午夜精品无码 | 最近中文2019字幕第二页 | 大地资源网第二页免费观看 | 又大又黄又粗又爽的免费视频 | 久久人人爽人人爽人人片av高清 | 又粗又大又硬毛片免费看 | 国产明星裸体无码xxxx视频 | 精品偷自拍另类在线观看 | 国产97人人超碰caoprom | 欧美国产日韩亚洲中文 | 国产精品国产自线拍免费软件 | 欧美日韩一区二区综合 | 日本免费一区二区三区最新 | 久久午夜无码鲁丝片秋霞 | 日本一区二区更新不卡 | 一个人免费观看的www视频 | 亚洲精品成a人在线观看 | 国内精品九九久久久精品 | 色欲av亚洲一区无码少妇 | 天天躁夜夜躁狠狠是什么心态 | 久久精品国产一区二区三区肥胖 | 国产成人一区二区三区在线观看 | 成在人线av无码免观看麻豆 | 成人动漫在线观看 | 88国产精品欧美一区二区三区 | 最近免费中文字幕中文高清百度 | 婷婷丁香六月激情综合啪 | 久久综合狠狠综合久久综合88 | 亚洲精品久久久久avwww潮水 | 99麻豆久久久国产精品免费 | 漂亮人妻洗澡被公强 日日躁 | 一本色道久久综合亚洲精品不卡 | 国产亚洲美女精品久久久2020 | 久久精品女人的天堂av | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 一本久久伊人热热精品中文字幕 | 久久久久亚洲精品中文字幕 | 无码精品国产va在线观看dvd | 国产av无码专区亚洲awww | 欧美老熟妇乱xxxxx | 男女下面进入的视频免费午夜 | 亚洲国产精华液网站w | 欧美35页视频在线观看 | 亚洲中文字幕久久无码 | 日韩精品乱码av一区二区 | 日本又色又爽又黄的a片18禁 | 精品国产一区av天美传媒 | 自拍偷自拍亚洲精品被多人伦好爽 | 撕开奶罩揉吮奶头视频 | 女高中生第一次破苞av | 久久aⅴ免费观看 | 国产精品人人妻人人爽 | 天堂а√在线中文在线 | 欧美一区二区三区 | 亚洲一区二区三区四区 | 亚洲一区二区三区 | 老熟妇乱子伦牲交视频 | 亚洲国精产品一二二线 | 国产成人无码一二三区视频 | 性欧美熟妇videofreesex | 天堂在线观看www | 无码纯肉视频在线观看 | 亚洲熟妇色xxxxx亚洲 | 激情亚洲一区国产精品 | 亚洲熟女一区二区三区 | 97久久精品无码一区二区 | 久久久久久久人妻无码中文字幕爆 | 色欲综合久久中文字幕网 | 亚洲国产欧美国产综合一区 | 野外少妇愉情中文字幕 | 亚洲精品一区二区三区在线 | 国产国产精品人在线视 | 国产在线精品一区二区高清不卡 | 久久久国产精品无码免费专区 | 在线观看欧美一区二区三区 | 亚洲午夜久久久影院 | 久久久精品欧美一区二区免费 | 国产精品永久免费视频 | 1000部啪啪未满十八勿入下载 | 日本又色又爽又黄的a片18禁 | 国产一精品一av一免费 | 色欲人妻aaaaaaa无码 | 日韩成人一区二区三区在线观看 | 国产sm调教视频在线观看 | aⅴ在线视频男人的天堂 | 青春草在线视频免费观看 | 熟妇激情内射com | 国产亚洲日韩欧美另类第八页 | 俄罗斯老熟妇色xxxx | 任你躁在线精品免费 | 亚洲精品国产精品乱码不卡 | 少妇无码av无码专区在线观看 | 精品国产麻豆免费人成网站 | 国产网红无码精品视频 | 成人动漫在线观看 | 国产网红无码精品视频 | 欧洲极品少妇 | 亚洲熟妇色xxxxx欧美老妇y | 伊人久久大香线焦av综合影院 | 初尝人妻少妇中文字幕 | 台湾无码一区二区 | а√资源新版在线天堂 | 天天摸天天透天天添 | 日本大乳高潮视频在线观看 | 国产猛烈高潮尖叫视频免费 | 国产精品二区一区二区aⅴ污介绍 | 2019nv天堂香蕉在线观看 | 亚洲中文字幕在线无码一区二区 | 麻豆果冻传媒2021精品传媒一区下载 | www成人国产高清内射 | 1000部啪啪未满十八勿入下载 | 国产精品久久久久影院嫩草 | 欧美性生交xxxxx久久久 | 无码中文字幕色专区 | 东北女人啪啪对白 | 久久综合久久自在自线精品自 | 亚洲爆乳精品无码一区二区三区 | 中文字幕+乱码+中文字幕一区 | 成 人 网 站国产免费观看 | 亚洲日韩中文字幕在线播放 | 狂野欧美性猛xxxx乱大交 | 草草网站影院白丝内射 | 成人免费视频一区二区 | 国产成人无码av片在线观看不卡 | 成人免费视频一区二区 | 国产精品自产拍在线观看 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲日韩一区二区 | 国产激情一区二区三区 | 久久久久se色偷偷亚洲精品av | 国产激情综合五月久久 | 亚洲乱码日产精品bd | 自拍偷自拍亚洲精品被多人伦好爽 | 欧美肥老太牲交大战 | 亚洲精品成人福利网站 | 亚洲另类伦春色综合小说 | 欧美色就是色 | 国产成人一区二区三区在线观看 | 97精品人妻一区二区三区香蕉 | 美女扒开屁股让男人桶 | 国产精品va在线播放 | 国产综合色产在线精品 | 国产人妻人伦精品1国产丝袜 | 国产香蕉尹人综合在线观看 | 亚洲国产精品美女久久久久 | 狂野欧美性猛交免费视频 | 麻豆md0077饥渴少妇 | 国产精品免费大片 | 在线播放无码字幕亚洲 | 又色又爽又黄的美女裸体网站 | 国产精品久久福利网站 | 永久免费观看国产裸体美女 | 亚洲一区二区三区香蕉 | 人妻少妇被猛烈进入中文字幕 | 亚洲国产精品无码一区二区三区 | 无码帝国www无码专区色综合 | 国产精品亚洲五月天高清 | 精品亚洲韩国一区二区三区 | 亚洲国产成人a精品不卡在线 | 久久精品国产一区二区三区 | 97色伦图片97综合影院 | 久久99精品国产麻豆蜜芽 | 久精品国产欧美亚洲色aⅴ大片 | 欧美喷潮久久久xxxxx | 熟女俱乐部五十路六十路av | 午夜精品久久久久久久 | 久久亚洲日韩精品一区二区三区 | 人妻无码αv中文字幕久久琪琪布 | 国产9 9在线 | 中文 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲自偷自拍另类第1页 | 色综合视频一区二区三区 | 亚洲精品一区国产 | 男女爱爱好爽视频免费看 | 成人亚洲精品久久久久软件 | 狂野欧美性猛xxxx乱大交 | 蜜桃视频插满18在线观看 | 亚洲小说图区综合在线 | 图片小说视频一区二区 | 波多野42部无码喷潮在线 | 国内精品人妻无码久久久影院 | 5858s亚洲色大成网站www | 东京热男人av天堂 | 狠狠综合久久久久综合网 | 日韩av无码一区二区三区不卡 | 精品久久久久香蕉网 | 伊人久久大香线蕉av一区二区 | 国产亚洲精品久久久ai换 | 国产精品久久久久久久影院 | 少妇性l交大片 | 牛和人交xxxx欧美 | 高清不卡一区二区三区 | 西西人体www44rt大胆高清 | 好男人www社区 | 中文字幕无码免费久久9一区9 | 国产又粗又硬又大爽黄老大爷视 | a片在线免费观看 | 亚洲va欧美va天堂v国产综合 | 日本一区二区更新不卡 | 无码人妻丰满熟妇区毛片18 | 最新国产乱人伦偷精品免费网站 | 久久精品中文字幕大胸 | 澳门永久av免费网站 | 国产超碰人人爽人人做人人添 | 亚洲综合另类小说色区 | 国产成人精品三级麻豆 | 国产成人一区二区三区在线观看 | 两性色午夜视频免费播放 | 青青久在线视频免费观看 | 亚洲精品综合五月久久小说 | 色综合久久88色综合天天 | 久久久久av无码免费网 | 久久久精品成人免费观看 | 国内揄拍国内精品少妇国语 | 久久综合给久久狠狠97色 | 亚洲国产精品无码久久久久高潮 | 天天躁日日躁狠狠躁免费麻豆 | 国语精品一区二区三区 | 国产suv精品一区二区五 | 欧美精品在线观看 | 国产av剧情md精品麻豆 | 国产在热线精品视频 | 在线亚洲高清揄拍自拍一品区 | 正在播放东北夫妻内射 | 亚洲色成人中文字幕网站 | 亚洲男女内射在线播放 | 国产av无码专区亚洲awww | 国产性生大片免费观看性 | 欧美激情综合亚洲一二区 | 国产欧美精品一区二区三区 | 久久久久久久女国产乱让韩 | 红桃av一区二区三区在线无码av | 精品国产福利一区二区 | 久久精品99久久香蕉国产色戒 | 2019午夜福利不卡片在线 | 丝袜 中出 制服 人妻 美腿 | 福利一区二区三区视频在线观看 | yw尤物av无码国产在线观看 | 亚洲欧洲日本综合aⅴ在线 | 亚洲色欲久久久综合网东京热 | 亚洲精品国偷拍自产在线观看蜜桃 | 国内少妇偷人精品视频免费 | 日本精品久久久久中文字幕 | 夜精品a片一区二区三区无码白浆 | 图片区 小说区 区 亚洲五月 | 日本大香伊一区二区三区 | 在线观看国产一区二区三区 | 国产精品高潮呻吟av久久4虎 | 少妇激情av一区二区 | 牲欲强的熟妇农村老妇女 | 国产精华av午夜在线观看 | 久久精品女人的天堂av | 国产亚洲精品精品国产亚洲综合 | 久久精品中文闷骚内射 | 对白脏话肉麻粗话av | 色五月丁香五月综合五月 | 精品无码av一区二区三区 | 成在人线av无码免观看麻豆 | 午夜精品一区二区三区在线观看 | 1000部夫妻午夜免费 | 国产成人综合在线女婷五月99播放 | 麻豆精产国品 | а天堂中文在线官网 | 国产在线精品一区二区高清不卡 | 麻豆果冻传媒2021精品传媒一区下载 | 人人爽人人澡人人人妻 | 久久99精品久久久久婷婷 | 欧美激情内射喷水高潮 | 国产在线精品一区二区三区直播 | 成人无码影片精品久久久 | 日韩人妻少妇一区二区三区 | 国产三级精品三级男人的天堂 | 国产成人久久精品流白浆 | 红桃av一区二区三区在线无码av | 啦啦啦www在线观看免费视频 | 撕开奶罩揉吮奶头视频 | 性欧美牲交xxxxx视频 | 国产精品人人妻人人爽 | 国产精品.xx视频.xxtv | 在线а√天堂中文官网 | 大屁股大乳丰满人妻 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 久久综合激激的五月天 | 在线成人www免费观看视频 | 樱花草在线播放免费中文 | 国产区女主播在线观看 | 狂野欧美激情性xxxx | 人人澡人人妻人人爽人人蜜桃 | 久久久久久九九精品久 | 国产亚洲精品久久久闺蜜 | 久久久无码中文字幕久... | 亚洲男女内射在线播放 | 中文字幕 人妻熟女 | 377p欧洲日本亚洲大胆 | 久久99精品国产麻豆 | 成人性做爰aaa片免费看 | 亚洲国产av美女网站 | 精品国产一区二区三区四区 | 亚洲日本va中文字幕 | 国语精品一区二区三区 | 国产莉萝无码av在线播放 | 亚洲欧美中文字幕5发布 | 日日天日日夜日日摸 | 久久99久久99精品中文字幕 | 亚洲中文字幕久久无码 | 欧美精品无码一区二区三区 | 又大又紧又粉嫩18p少妇 | 精品无码国产一区二区三区av | 亚洲熟妇色xxxxx欧美老妇y | 亚洲精品成人av在线 | 无码吃奶揉捏奶头高潮视频 | 久久久av男人的天堂 | 中文字幕 亚洲精品 第1页 | 成人无码精品1区2区3区免费看 | 国产精品第一国产精品 | 国产午夜无码视频在线观看 | 熟妇人妻中文av无码 | 精品久久久无码中文字幕 | 亚洲 日韩 欧美 成人 在线观看 | 国产亚洲tv在线观看 | 精品无码一区二区三区爱欲 | 日本免费一区二区三区最新 | 偷窥日本少妇撒尿chinese | 女人被男人躁得好爽免费视频 | 亚洲性无码av中文字幕 | 丰满少妇熟乱xxxxx视频 | 熟妇女人妻丰满少妇中文字幕 | 久久国产精品偷任你爽任你 | 亚洲中文字幕无码中字 | 最新国产麻豆aⅴ精品无码 | 久久久无码中文字幕久... | 亚洲精品无码人妻无码 | 久久亚洲a片com人成 | 呦交小u女精品视频 | 大地资源中文第3页 | 午夜精品一区二区三区在线观看 | 免费乱码人妻系列无码专区 | 日韩人妻少妇一区二区三区 | 天天躁日日躁狠狠躁免费麻豆 | 久久亚洲中文字幕精品一区 | 国产乱人伦av在线无码 | 久久www免费人成人片 | 午夜性刺激在线视频免费 | 亚洲爆乳精品无码一区二区三区 | 乱码av麻豆丝袜熟女系列 | 国产香蕉97碰碰久久人人 | 国产av一区二区精品久久凹凸 | 国产午夜手机精彩视频 | 亚洲无人区一区二区三区 | 国产精品香蕉在线观看 | 国内精品久久久久久中文字幕 | 亚洲成av人影院在线观看 | 无码福利日韩神码福利片 | 成人精品一区二区三区中文字幕 | 无码午夜成人1000部免费视频 | 亚洲爆乳精品无码一区二区三区 | 天天拍夜夜添久久精品 | 久久www免费人成人片 | 少妇久久久久久人妻无码 | 特黄特色大片免费播放器图片 | 国产精品-区区久久久狼 | 欧美日本精品一区二区三区 | 中文字幕无码av波多野吉衣 | 纯爱无遮挡h肉动漫在线播放 | 中文字幕亚洲情99在线 | 婷婷色婷婷开心五月四房播播 | 亚洲精品一区二区三区大桥未久 | 国产精品久久国产三级国 | 欧美激情综合亚洲一二区 | 亚洲色欲色欲天天天www | 扒开双腿疯狂进出爽爽爽视频 | а天堂中文在线官网 | 18精品久久久无码午夜福利 | 日本一卡2卡3卡四卡精品网站 | 国产亚洲人成a在线v网站 | 2020久久超碰国产精品最新 | 色五月丁香五月综合五月 | 婷婷丁香六月激情综合啪 | 中文字幕乱码人妻二区三区 | 又大又硬又黄的免费视频 | 水蜜桃亚洲一二三四在线 | 亚洲熟妇自偷自拍另类 | 成人精品视频一区二区三区尤物 | 日本xxxx色视频在线观看免费 | 国内精品九九久久久精品 | 99久久久无码国产aaa精品 | 无码帝国www无码专区色综合 | 老司机亚洲精品影院 | 永久黄网站色视频免费直播 | 人妻无码αv中文字幕久久琪琪布 | 欧美老妇交乱视频在线观看 | 久激情内射婷内射蜜桃人妖 | 国产激情无码一区二区app | 亚洲精品综合一区二区三区在线 | 精品国产一区二区三区四区 | 搡女人真爽免费视频大全 | 国产精品久久久 | 午夜福利不卡在线视频 | 在线精品亚洲一区二区 | 国产亚洲视频中文字幕97精品 | 亚洲日韩一区二区 | 永久免费精品精品永久-夜色 | 久久国产精品精品国产色婷婷 | av无码电影一区二区三区 | 日本饥渴人妻欲求不满 | 国语自产偷拍精品视频偷 | 综合激情五月综合激情五月激情1 | 亚洲娇小与黑人巨大交 | 国产av剧情md精品麻豆 | 日韩av无码一区二区三区 | 亚洲区小说区激情区图片区 | 日本精品高清一区二区 | 国产熟女一区二区三区四区五区 | 老太婆性杂交欧美肥老太 | 国产精品亚洲五月天高清 | 色欲av亚洲一区无码少妇 | 日韩人妻无码一区二区三区久久99 | 永久免费观看国产裸体美女 | 亚洲精品一区二区三区大桥未久 | 色婷婷av一区二区三区之红樱桃 | 亚洲 另类 在线 欧美 制服 | 国产免费久久精品国产传媒 | 九九在线中文字幕无码 | 午夜无码区在线观看 | 爆乳一区二区三区无码 | 欧美精品无码一区二区三区 | 夜精品a片一区二区三区无码白浆 | 少妇太爽了在线观看 | 欧美野外疯狂做受xxxx高潮 | 香港三级日本三级妇三级 | 天堂а√在线中文在线 | 1000部啪啪未满十八勿入下载 | 丝袜 中出 制服 人妻 美腿 | 亚洲熟悉妇女xxx妇女av | 亚洲国产一区二区三区在线观看 | 精品 日韩 国产 欧美 视频 | 久久99精品久久久久婷婷 | 国产精品va在线播放 | 大乳丰满人妻中文字幕日本 | 中文字幕乱码人妻二区三区 | 久久午夜无码鲁丝片秋霞 | 国内少妇偷人精品视频免费 | 久久久久成人精品免费播放动漫 | 欧美成人高清在线播放 | 免费看少妇作爱视频 | 欧美大屁股xxxxhd黑色 | 亚洲精品成a人在线观看 | 欧美 日韩 人妻 高清 中文 | 色情久久久av熟女人妻网站 | 成人三级无码视频在线观看 | 国内精品久久毛片一区二区 | 97久久超碰中文字幕 | 国产激情艳情在线看视频 | 国产成人精品无码播放 | 少妇人妻偷人精品无码视频 | 国产一区二区三区四区五区加勒比 | 人妻人人添人妻人人爱 | 亚洲国产一区二区三区在线观看 | 国产成人精品视频ⅴa片软件竹菊 | 精品成在人线av无码免费看 | 亚洲乱码国产乱码精品精 | 精品欧洲av无码一区二区三区 | 成人无码视频免费播放 | 亚洲国产精品无码一区二区三区 | 性做久久久久久久免费看 | 亚洲熟妇色xxxxx欧美老妇y | 丝袜人妻一区二区三区 | 日本一本二本三区免费 | 极品嫩模高潮叫床 | 性色欲网站人妻丰满中文久久不卡 | 欧美喷潮久久久xxxxx | 国产午夜福利亚洲第一 | 国产内射老熟女aaaa | 一区二区三区乱码在线 | 欧洲 | 国产美女极度色诱视频www | 亚洲日本va午夜在线电影 | 国产一区二区三区四区五区加勒比 | 国产香蕉尹人综合在线观看 | 色综合久久久无码中文字幕 | 久久久久av无码免费网 | 亚洲伊人久久精品影院 | 中文字幕日产无线码一区 | 国产亚洲精品久久久久久久久动漫 | 国产成人精品视频ⅴa片软件竹菊 | 久久精品国产精品国产精品污 | 国产农村妇女高潮大叫 | 国产办公室秘书无码精品99 | 99久久婷婷国产综合精品青草免费 | 亚洲无人区一区二区三区 | 色婷婷综合中文久久一本 | 国内精品久久毛片一区二区 | 久久99精品久久久久久动态图 | 国产精品高潮呻吟av久久4虎 | 精品偷拍一区二区三区在线看 | 妺妺窝人体色www婷婷 | 精品国产国产综合精品 | 亚洲の无码国产の无码影院 | 欧美日本精品一区二区三区 | 国产精品va在线播放 | 久久国产精品_国产精品 | 欧美乱妇无乱码大黄a片 | 少妇性l交大片欧洲热妇乱xxx | 午夜福利试看120秒体验区 | 夜精品a片一区二区三区无码白浆 | 国产免费久久久久久无码 | 欧美精品一区二区精品久久 | 国产精品亚洲综合色区韩国 | 欧美日韩一区二区综合 | 在线播放无码字幕亚洲 | 伊人久久大香线蕉午夜 | 精品国产精品久久一区免费式 | 中文字幕无线码免费人妻 | 国产精品国产三级国产专播 | 久久aⅴ免费观看 | 99久久久无码国产精品免费 | 伊在人天堂亚洲香蕉精品区 | 色情久久久av熟女人妻网站 | 高清不卡一区二区三区 | 久久久亚洲欧洲日产国码αv | 无码精品国产va在线观看dvd | 一本久久a久久精品vr综合 | 成人性做爰aaa片免费看 | 国产亚洲精品久久久久久大师 | 色综合久久中文娱乐网 | 亚洲区欧美区综合区自拍区 | 精品无人国产偷自产在线 | 学生妹亚洲一区二区 | 黑人粗大猛烈进出高潮视频 | 久久久久久久久888 | 国产肉丝袜在线观看 | 日本精品人妻无码77777 天堂一区人妻无码 | 亚洲精品久久久久avwww潮水 | 国产人妻人伦精品1国产丝袜 | 国产一区二区三区日韩精品 | 四虎国产精品免费久久 | 欧美 日韩 人妻 高清 中文 | 亚洲欧美色中文字幕在线 | 国产女主播喷水视频在线观看 | 久久国产精品萌白酱免费 | 青青青手机频在线观看 | 天天做天天爱天天爽综合网 | 国产后入清纯学生妹 | 亚洲自偷自拍另类第1页 | 国产精品欧美成人 | 在线亚洲高清揄拍自拍一品区 | 久久精品中文字幕大胸 | 亚洲色大成网站www国产 | 成人亚洲精品久久久久 | 中文字幕日韩精品一区二区三区 | 丝袜 中出 制服 人妻 美腿 | 日韩视频 中文字幕 视频一区 | 亚洲va中文字幕无码久久不卡 | 国产综合色产在线精品 | 欧美zoozzooz性欧美 | 激情亚洲一区国产精品 | 色婷婷综合中文久久一本 | 夫妻免费无码v看片 | 99久久久无码国产aaa精品 | 天堂а√在线中文在线 | 无码人妻精品一区二区三区下载 | 国产美女极度色诱视频www | 中文亚洲成a人片在线观看 | 中文字幕人妻丝袜二区 | 国产成人精品久久亚洲高清不卡 | 亚洲国产精品毛片av不卡在线 | 狠狠色欧美亚洲狠狠色www | 97色伦图片97综合影院 | 人人妻人人澡人人爽精品欧美 | 精品午夜福利在线观看 | 亚洲成av人综合在线观看 | 麻豆md0077饥渴少妇 | 亚洲精品国产精品乱码不卡 | 高中生自慰www网站 | 亚洲欧洲日本综合aⅴ在线 | 强开小婷嫩苞又嫩又紧视频 | 免费观看激色视频网站 | 特黄特色大片免费播放器图片 | 天海翼激烈高潮到腰振不止 | 国产成人一区二区三区在线观看 | 日本www一道久久久免费榴莲 | 欧美成人家庭影院 | 在线观看免费人成视频 | 色综合久久88色综合天天 | 国产精品毛片一区二区 | 黑人大群体交免费视频 | 丰满少妇弄高潮了www | 综合人妻久久一区二区精品 | 亚洲人亚洲人成电影网站色 | 久久无码专区国产精品s | 久久99精品国产麻豆蜜芽 | 亚洲熟女一区二区三区 | 超碰97人人做人人爱少妇 | 97久久精品无码一区二区 | 久久久久久久人妻无码中文字幕爆 | 亚洲成在人网站无码天堂 | 久久精品一区二区三区四区 | 亚洲精品一区二区三区大桥未久 | 扒开双腿吃奶呻吟做受视频 | 无码中文字幕色专区 | 日日夜夜撸啊撸 | 国产精品香蕉在线观看 | 日本精品少妇一区二区三区 | 天堂无码人妻精品一区二区三区 | 国产精品久久久久久亚洲毛片 | 国内少妇偷人精品视频免费 | 男人的天堂av网站 | 青青青手机频在线观看 | 久久亚洲精品中文字幕无男同 | 无人区乱码一区二区三区 | 亚洲成av人片天堂网无码】 | 无码人妻丰满熟妇区毛片18 | 国产精品无码久久av | 在线视频网站www色 | 一本久久a久久精品亚洲 | 无码一区二区三区在线 | 帮老师解开蕾丝奶罩吸乳网站 | 成人免费视频视频在线观看 免费 | 女人被爽到呻吟gif动态图视看 | 人妻插b视频一区二区三区 | 在线观看免费人成视频 | 性欧美牲交xxxxx视频 | 久久99热只有频精品8 | 日日噜噜噜噜夜夜爽亚洲精品 | 久久久久成人精品免费播放动漫 | 55夜色66夜色国产精品视频 | 国产性生大片免费观看性 | 亚洲理论电影在线观看 | 在线亚洲高清揄拍自拍一品区 | 国产国语老龄妇女a片 | 成熟妇人a片免费看网站 | ass日本丰满熟妇pics | 丰满少妇高潮惨叫视频 | 思思久久99热只有频精品66 | 国产精品久久久久久亚洲毛片 | 蜜桃臀无码内射一区二区三区 | 久久久久免费看成人影片 | 人妻少妇被猛烈进入中文字幕 | 亚洲国产av精品一区二区蜜芽 | 狠狠色欧美亚洲狠狠色www | 曰韩无码二三区中文字幕 | 丰满少妇人妻久久久久久 | 激情内射日本一区二区三区 | 亚洲精品成a人在线观看 | 国产无遮挡又黄又爽又色 | 在线 国产 欧美 亚洲 天堂 | 国产成人综合美国十次 | 最近中文2019字幕第二页 | 5858s亚洲色大成网站www | 夫妻免费无码v看片 | 亚洲欧洲日本无在线码 | 精品一区二区三区无码免费视频 | 女人被爽到呻吟gif动态图视看 | 国产av无码专区亚洲a∨毛片 | 国内少妇偷人精品视频免费 | 无码国产色欲xxxxx视频 | 人妻插b视频一区二区三区 | 色欲人妻aaaaaaa无码 | 亚洲爆乳精品无码一区二区三区 | 欧美三级不卡在线观看 | 国产av一区二区精品久久凹凸 | 亚洲中文字幕无码中字 | 一二三四社区在线中文视频 | 性生交大片免费看女人按摩摩 | 国产精品美女久久久 | 久久国产精品偷任你爽任你 | 1000部啪啪未满十八勿入下载 | 日本一卡2卡3卡四卡精品网站 | 一个人看的www免费视频在线观看 | 国产色精品久久人妻 | 牛和人交xxxx欧美 | 精品欧美一区二区三区久久久 | 中文字幕人妻丝袜二区 | 亚洲精品欧美二区三区中文字幕 | 国产做国产爱免费视频 | 男人和女人高潮免费网站 | 131美女爱做视频 | 激情爆乳一区二区三区 | 国产69精品久久久久app下载 | 大肉大捧一进一出视频出来呀 | 国产在线无码精品电影网 | 国产精品无码mv在线观看 | 亚洲 另类 在线 欧美 制服 | 精品国产国产综合精品 | 乱码午夜-极国产极内射 | 波多野42部无码喷潮在线 | 国产精品a成v人在线播放 | 自拍偷自拍亚洲精品10p | 中文字幕久久久久人妻 | 国产成人无码av一区二区 | 少妇高潮一区二区三区99 | 亚洲精品国产a久久久久久 | 爆乳一区二区三区无码 | 国产精品爱久久久久久久 | 欧美性黑人极品hd | 色五月五月丁香亚洲综合网 | 青青久在线视频免费观看 | 精品午夜福利在线观看 | 东北女人啪啪对白 | 欧美日韩久久久精品a片 | 国产真人无遮挡作爱免费视频 | 男女爱爱好爽视频免费看 | 97精品国产97久久久久久免费 | 67194成是人免费无码 | 鲁一鲁av2019在线 | 少妇性l交大片欧洲热妇乱xxx | 18黄暴禁片在线观看 | 久久久精品人妻久久影视 | 综合激情五月综合激情五月激情1 | 亚洲国产成人a精品不卡在线 | 日日夜夜撸啊撸 | 日本www一道久久久免费榴莲 | 久久综合给合久久狠狠狠97色 | 婷婷丁香六月激情综合啪 | 欧美精品国产综合久久 | 成在人线av无码免观看麻豆 | 日本精品高清一区二区 | 精品无人国产偷自产在线 | 日本肉体xxxx裸交 | 免费观看的无遮挡av | 美女毛片一区二区三区四区 | 一区二区传媒有限公司 | 欧洲欧美人成视频在线 | 国产亚洲欧美在线专区 | 成人无码精品1区2区3区免费看 | 国产精品久久久久9999小说 | 亚洲国产成人a精品不卡在线 | 欧美老妇交乱视频在线观看 | 人妻体内射精一区二区三四 | 欧美野外疯狂做受xxxx高潮 | 日韩少妇白浆无码系列 | 99久久精品无码一区二区毛片 | 国产成人无码av在线影院 | 国产成人无码av片在线观看不卡 | 青青久在线视频免费观看 | 欧美午夜特黄aaaaaa片 | 国产精品永久免费视频 | 秋霞特色aa大片 | 亚洲精品国产第一综合99久久 | 一本无码人妻在中文字幕免费 | 成人亚洲精品久久久久软件 | 婷婷五月综合激情中文字幕 | 亚洲欧美日韩成人高清在线一区 | 久久婷婷五月综合色国产香蕉 | 亚洲人成影院在线观看 | 97夜夜澡人人爽人人喊中国片 | 亚洲精品成a人在线观看 | 精品无码成人片一区二区98 | 国产一精品一av一免费 | 亚洲自偷精品视频自拍 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 欧美zoozzooz性欧美 | 国产精品18久久久久久麻辣 | 久久天天躁狠狠躁夜夜免费观看 | 精品国产麻豆免费人成网站 | 亚洲大尺度无码无码专区 | 亚洲人成影院在线无码按摩店 | 久久无码中文字幕免费影院蜜桃 | 日本一区二区三区免费播放 | 爽爽影院免费观看 | 伊人久久大香线蕉午夜 | 日本精品人妻无码77777 天堂一区人妻无码 | 玩弄中年熟妇正在播放 | 国内少妇偷人精品视频 | 午夜福利一区二区三区在线观看 | 六月丁香婷婷色狠狠久久 | 欧美日韩一区二区免费视频 | 少妇久久久久久人妻无码 | 国产av剧情md精品麻豆 | 99久久精品无码一区二区毛片 | 日日摸日日碰夜夜爽av | 亚洲中文字幕久久无码 | 色综合久久中文娱乐网 | 国产精品亚洲一区二区三区喷水 | 欧美日韩人成综合在线播放 | 国产精品理论片在线观看 | 欧美丰满老熟妇xxxxx性 | 中文字幕人妻无码一区二区三区 | 精品无人区无码乱码毛片国产 | 免费看男女做好爽好硬视频 | 欧美变态另类xxxx | 日本大乳高潮视频在线观看 | 麻豆人妻少妇精品无码专区 | 国产深夜福利视频在线 | 伊人色综合久久天天小片 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 国产超级va在线观看视频 | 1000部啪啪未满十八勿入下载 | 99精品无人区乱码1区2区3区 | 男人和女人高潮免费网站 | 国产舌乚八伦偷品w中 | 国产香蕉尹人综合在线观看 | 久久精品中文闷骚内射 | 久精品国产欧美亚洲色aⅴ大片 | 又大又紧又粉嫩18p少妇 | 中文字幕 亚洲精品 第1页 | 福利一区二区三区视频在线观看 | 精品人妻av区 | 亚洲综合无码一区二区三区 | 在线精品国产一区二区三区 | 天天爽夜夜爽夜夜爽 | 无码人妻精品一区二区三区下载 | √天堂中文官网8在线 | 成人精品视频一区二区三区尤物 | 亚洲中文字幕无码一久久区 | 欧美性生交xxxxx久久久 | 国产精品无码一区二区桃花视频 | 精品国产一区二区三区四区 | 久久久久国色av免费观看性色 | 日本欧美一区二区三区乱码 | 夜夜夜高潮夜夜爽夜夜爰爰 | 老子影院午夜精品无码 | 精品国产av色一区二区深夜久久 | 久久人人爽人人人人片 | 国产亚洲人成a在线v网站 | 老司机亚洲精品影院无码 | 国产亚洲精品久久久久久国模美 | 亚洲七七久久桃花影院 | 乱人伦人妻中文字幕无码 | 中文字幕av无码一区二区三区电影 | 在线精品国产一区二区三区 | 波多野结衣一区二区三区av免费 | 樱花草在线社区www | 18无码粉嫩小泬无套在线观看 | 欧美 日韩 亚洲 在线 | 香蕉久久久久久av成人 | 国产精品高潮呻吟av久久 | аⅴ资源天堂资源库在线 | 日韩精品无码免费一区二区三区 | 国产精品久久久久9999小说 | 午夜时刻免费入口 | 3d动漫精品啪啪一区二区中 | 正在播放老肥熟妇露脸 | 久久 国产 尿 小便 嘘嘘 | 国内丰满熟女出轨videos | 人妻中文无码久热丝袜 | 免费无码一区二区三区蜜桃大 | 亚洲欧美日韩国产精品一区二区 | 在线成人www免费观看视频 | 国产激情艳情在线看视频 | 性做久久久久久久免费看 | 国产乱人偷精品人妻a片 | 免费网站看v片在线18禁无码 | 黑森林福利视频导航 | 久久精品中文字幕大胸 | 亚洲精品国偷拍自产在线观看蜜桃 | 久久久久久亚洲精品a片成人 | 夜夜躁日日躁狠狠久久av | 波多野结衣 黑人 | 欧美亚洲国产一区二区三区 | 国内精品人妻无码久久久影院蜜桃 | 久久久成人毛片无码 | 亚洲精品国偷拍自产在线麻豆 | 偷窥村妇洗澡毛毛多 | 久久综合久久自在自线精品自 | a在线观看免费网站大全 | 搡女人真爽免费视频大全 | 99riav国产精品视频 | 粉嫩少妇内射浓精videos | 久久精品国产99精品亚洲 | 午夜无码区在线观看 | 熟女少妇人妻中文字幕 | 国产女主播喷水视频在线观看 | 中文字幕亚洲情99在线 | 国产卡一卡二卡三 | 精品一区二区三区波多野结衣 | 国产精品欧美成人 | 丰满岳乱妇在线观看中字无码 | 夜精品a片一区二区三区无码白浆 | 午夜无码人妻av大片色欲 | 内射白嫩少妇超碰 | 无码人妻出轨黑人中文字幕 | 色一情一乱一伦一区二区三欧美 | 高中生自慰www网站 | 亚洲自偷精品视频自拍 | 国精产品一品二品国精品69xx | 性色av无码免费一区二区三区 | 久久人人爽人人爽人人片av高清 | 久久久国产精品无码免费专区 | 国产艳妇av在线观看果冻传媒 | 精品欧洲av无码一区二区三区 | √天堂资源地址中文在线 | 自拍偷自拍亚洲精品被多人伦好爽 | 免费看少妇作爱视频 | 在线成人www免费观看视频 | 人人妻人人澡人人爽精品欧美 | 东京无码熟妇人妻av在线网址 | 清纯唯美经典一区二区 | 十八禁真人啪啪免费网站 | 亚洲a无码综合a国产av中文 | 国产两女互慰高潮视频在线观看 | 国产无套粉嫩白浆在线 | 荫蒂被男人添的好舒服爽免费视频 | 无码精品国产va在线观看dvd | 国产午夜福利亚洲第一 | 5858s亚洲色大成网站www | 久久天天躁狠狠躁夜夜免费观看 | 精品久久久久香蕉网 | 久久人妻内射无码一区三区 | 久久精品无码一区二区三区 | 国产黑色丝袜在线播放 | 曰韩无码二三区中文字幕 | 精品欧美一区二区三区久久久 | 国产乱码精品一品二品 | 无码人妻精品一区二区三区不卡 | 人人妻人人澡人人爽人人精品浪潮 | 无套内射视频囯产 | 人人爽人人爽人人片av亚洲 | 水蜜桃亚洲一二三四在线 | 少妇高潮喷潮久久久影院 | 久久国产精品萌白酱免费 | 精品人妻人人做人人爽夜夜爽 | 99久久久无码国产精品免费 | 亚洲综合伊人久久大杳蕉 | 亚洲啪av永久无码精品放毛片 | 2020最新国产自产精品 | 欧美日本免费一区二区三区 | 国产高清av在线播放 | 亚洲精品欧美二区三区中文字幕 | 精品国产一区二区三区四区在线看 | 成人免费无码大片a毛片 | 波多野结衣av一区二区全免费观看 | 一本大道久久东京热无码av | 又大又紧又粉嫩18p少妇 | 99久久无码一区人妻 | 久久精品人妻少妇一区二区三区 | 日韩av无码中文无码电影 | 久久久久99精品国产片 | 日日摸天天摸爽爽狠狠97 | 激情爆乳一区二区三区 | 亚洲精品中文字幕乱码 | 人妻插b视频一区二区三区 | 国产凸凹视频一区二区 | 欧美大屁股xxxxhd黑色 | 国产一区二区不卡老阿姨 | 亚洲天堂2017无码 | 日日碰狠狠躁久久躁蜜桃 | 久久国产36精品色熟妇 | 色五月五月丁香亚洲综合网 | 亚洲国产精品久久久久久 | 国产精品亚洲一区二区三区喷水 | 精品人妻人人做人人爽夜夜爽 | 日韩人妻无码中文字幕视频 | 亚洲精品欧美二区三区中文字幕 | 国产成人一区二区三区别 | 女人和拘做爰正片视频 | 天堂а√在线地址中文在线 | 人妻无码久久精品人妻 | 在线观看国产午夜福利片 | 乱中年女人伦av三区 | 国产成人无码av在线影院 | 欧美精品在线观看 | 国产午夜视频在线观看 | 99久久无码一区人妻 | 清纯唯美经典一区二区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 欧美 亚洲 国产 另类 | 国产xxx69麻豆国语对白 | 亚洲gv猛男gv无码男同 | 全黄性性激高免费视频 | 欧美肥老太牲交大战 | 精品国产aⅴ无码一区二区 | 丰满妇女强制高潮18xxxx | 亚洲精品一区二区三区四区五区 | 国产av一区二区三区最新精品 | 美女黄网站人色视频免费国产 | 人妻体内射精一区二区三四 | 亚洲男人av香蕉爽爽爽爽 | 丁香花在线影院观看在线播放 | 老头边吃奶边弄进去呻吟 | 综合网日日天干夜夜久久 | 亚洲 欧美 激情 小说 另类 | 欧美日本免费一区二区三区 | 夜夜躁日日躁狠狠久久av | 又大又黄又粗又爽的免费视频 | 中文字幕av无码一区二区三区电影 | 成人无码精品一区二区三区 | 天下第一社区视频www日本 | 国产精品国产三级国产专播 | v一区无码内射国产 | 亚洲精品综合五月久久小说 | 国产av无码专区亚洲awww | 国产三级久久久精品麻豆三级 | 国产成人无码午夜视频在线观看 | 久久精品国产大片免费观看 | 无码人妻少妇伦在线电影 | 久久久久久久女国产乱让韩 | 欧洲精品码一区二区三区免费看 | 熟妇人妻无乱码中文字幕 | 亚洲欧美国产精品专区久久 | 亚洲一区二区三区在线观看网站 | 麻豆国产97在线 | 欧洲 | 欧美真人作爱免费视频 | 一二三四在线观看免费视频 | 青青草原综合久久大伊人精品 | 无人区乱码一区二区三区 | 国产精品99爱免费视频 | 丰满少妇高潮惨叫视频 | 强辱丰满人妻hd中文字幕 | 4hu四虎永久在线观看 | 成人无码视频免费播放 | 国产成人一区二区三区在线观看 | 免费视频欧美无人区码 | 日韩 欧美 动漫 国产 制服 | 国产做国产爱免费视频 | 99久久精品国产一区二区蜜芽 | 日日躁夜夜躁狠狠躁 | 亚洲中文无码av永久不收费 | 沈阳熟女露脸对白视频 | 亚洲一区二区三区在线观看网站 | 少妇太爽了在线观看 | 亚洲中文无码av永久不收费 | 国产亚洲精品久久久久久大师 | 日韩av无码一区二区三区不卡 | 疯狂三人交性欧美 | 国产精品国产自线拍免费软件 | 国产亚洲tv在线观看 | 99riav国产精品视频 | 亚洲日本一区二区三区在线 | 久热国产vs视频在线观看 | 久久精品人人做人人综合试看 | 久久精品人人做人人综合 | 中文字幕无线码 | 熟女少妇人妻中文字幕 | 乱人伦人妻中文字幕无码久久网 | 1000部啪啪未满十八勿入下载 | 精品久久久久久人妻无码中文字幕 | 亚洲色欲色欲欲www在线 | 国产疯狂伦交大片 | 国产精品国产三级国产专播 | 国产精品igao视频网 | 精品午夜福利在线观看 | 正在播放老肥熟妇露脸 | 免费无码av一区二区 | 在线观看欧美一区二区三区 | 久热国产vs视频在线观看 | 人妻人人添人妻人人爱 | 亚洲爆乳无码专区 | 色综合久久久无码中文字幕 | 天天爽夜夜爽夜夜爽 | 99久久精品午夜一区二区 | 亚洲天堂2017无码中文 | 97久久精品无码一区二区 | 好爽又高潮了毛片免费下载 | 国产精品99爱免费视频 | 亚洲欧美日韩综合久久久 | 少妇无码av无码专区在线观看 | 日日躁夜夜躁狠狠躁 | 日韩av无码一区二区三区不卡 | 国产激情艳情在线看视频 | 四虎永久在线精品免费网址 | 国产精品高潮呻吟av久久 | 伊人久久婷婷五月综合97色 | 1000部啪啪未满十八勿入下载 | 色欲综合久久中文字幕网 | 最新国产麻豆aⅴ精品无码 | 老熟女乱子伦 | 精品国产av色一区二区深夜久久 | 欧美性生交xxxxx久久久 | 蜜桃臀无码内射一区二区三区 | 亚洲日韩av一区二区三区四区 |