版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、相比mysql單一的f,postgresql的訪問認證配置主要涉及到兩個主要的配置文件:postgresql.conf和 pg_hba.conf,本文從安全設置角度講述這兩個配置文件的配置選項。部分文字、樣例摘抄自postgresql的中文手冊。postgresql.confpostgresql.conf包含了許多的選項,這些選項控制了postgresql.conf的方方面面,中間影響訪問認證的選項是:unix_socket_group設置 Unix 域套接字的組所有人,(套接字的所有權(quán)用戶總是啟動 postmaster 的用戶)與 UNIX_SOCKET_PERMISSIONS 選項一起使用
2、可以給這種套接字類型增加額外的訪問控制機制,缺省時是一個空字串,也就是使用當前用戶的缺省的組, 這個選項只能在服務器啟動時設置。unix_socket_permissions給 Unix 域套接字設置訪問權(quán)限,Unix 域套接字使用通常的 Unix 文件系統(tǒng)權(quán)限集。可選的值可以是一個 chmod 和 umask 系統(tǒng)調(diào)用可以接受的數(shù)字模式。(要使用客戶化的八進制格式,該數(shù)字必須以 0 (零)開頭)缺省權(quán)限是 0777,意即任何人都可以聯(lián)接,合理的選則可能是0770 (只有用戶和組, 參閱UNIX_SOCKET_GROUP)和 0700 (只有用戶)。(請注意對于 Unix 套接字而言,實際上只
3、有寫權(quán)限有意義,而且 也沒有辦法設置或者取消讀或執(zhí)行權(quán)限)這個選項只能在服務器啟動時設置。pg_hba.conf是設置訪問認證的主要文件,格式為每條記錄一行,每行指定一條訪問認證。設定一條訪問認證包含了7個部分:連接方式(type)、數(shù)據(jù)庫(database)、用戶名(user)、ip地址(ip-address)、子網(wǎng)掩碼(ip-mask)、認證方法(authentication method)、認證配置(authentication-option),以下是這7個部分的詳細說明:連接方式(type)連接方式共有三種:local、host、hostssllocal這條記錄匹配通過 Unix 域套
4、接字進行的聯(lián)接企圖, 沒有這種類型的記錄,就不允許 Unix 域套接字的聯(lián)接。host這條記錄匹配通過 TCP/IP 網(wǎng)絡進行的聯(lián)接嘗試,請注意,除非服務器是 帶著 -i 選項或者打開了 postgresql.conf 里面的 tcpip_socket 配置參數(shù)集啟動的,否則 TCP/IP 聯(lián)接是被禁止掉的。hostssl這條記錄匹配通過在 TCP/IP 上進行的 SSL 聯(lián)接企圖, host 記錄可以匹配 SSL 和非 SSL 的聯(lián)接企圖, 但 hostssl 記錄需要 SSL 聯(lián)接。數(shù)據(jù)庫(database)聲明記錄所匹配的數(shù)據(jù)庫。值 all 表明該記錄匹配所有數(shù)據(jù)庫, 值 sameuse
5、r表示如果被請求的數(shù)據(jù)庫和請求的用戶同名,則匹配。 samegroup 表示請求的用戶必須是一個與數(shù)據(jù)庫同名的組中的成員。 在其他情況里,這就是一個特定的 PostgreSQL 的名字。我們可以通過用逗號分隔的方法聲明多個數(shù)據(jù)庫。 一個包含數(shù)據(jù)庫名的文件可以 通過對該文件前綴 來聲明該文件必需和 pg_hba.conf 在同一個目錄。用戶名(user)為這條記錄聲明所匹配的 PostgreSQL 用戶,值 all 表明它匹配 于所有用戶。否則,它就是特定 PostgreSQL 用戶的名字,多個用戶名可以通過用逗號分隔的方法聲明,組名字 可以通過用 + 做組名字前綴來聲明。一個包含用戶名的文件可
6、以 通過在文件名前面前綴 來聲明,該文件必需和 pg_hba.conf 在同一個目錄。ip地址(ip-address)子網(wǎng)掩碼(ip-mask)這兩個字段包含標準的點分十進制表示的 IP地址/掩碼值。 (IP地址只能用數(shù)字的方式聲明,而不能用域名或者主機名)它們倆放在一起,聲明了這條記錄匹配的客戶機的 IP 地址。 準確的邏輯是:(actual-IP-address xor IP-address-field) and IP-mask-field對于要匹配的記錄必需為零。如果連接方式是host或者hostssl的話,這兩項必須指定,否則可以不填。認證方法(authentication metho
7、d)trust無條件地允許聯(lián)接,這個方法允許任何可以與PostgreSQL 數(shù)據(jù)庫聯(lián)接的用戶以他們期望的任意 PostgreSQL 數(shù)據(jù)庫用戶身份進行聯(lián)接,而不需要口令。reject聯(lián)接無條件拒絕,常用于從一個組中過濾某些主機。md5要求客戶端提供一個 MD5 加密的口令進行認證,這個方法是允許加密口令存儲在pg_shadow里的唯一的一個方法。crypt類似 md5 方法,只是用的是老式的 crypt 加密認證, 用于 7.2 以前的客戶端,對于 7.2 以及以后的客戶端,我們建議使用 md5。password和md5一樣,但是口令是以明文形式在網(wǎng)絡上傳遞的,我們不應該在不安全的網(wǎng)絡上使用這
8、個方式。krb4用 Kerberos V4 認證用戶,只有在進行 TCP/IP 聯(lián)接的時候才能用。(譯注:Kerberos,克爾波洛斯,故希臘神話冥王哈得斯的多頭看門狗,F(xiàn)F8中“反擊的狼煙”。Kerberos 是 MIT 開發(fā)出來的基與對稱加密算法的認證協(xié)議和/或密鑰交換方法,其特點是需要兩個不同用途的服務器,一個用于認證身份,一個用于通道兩端用戶的密鑰交換。同時 Kerberos 對網(wǎng)絡時間同步要求比較高,以防止回放攻擊,因此通常伴隨 NTP 服務。)krb5用 Kerberos V5 認證用戶只有在進行 TCP/IP 聯(lián)接的時候才能用。(譯注:Kerberos V5 是上面 V4 的改良
9、,主要是不再依賴 DES 算法, 同時增加了一些新特性。)ident獲取客戶的操作系統(tǒng)名(對于 TCP/IP 聯(lián)接,用戶的身份是通過與運行在客戶端上的 ident 服務器聯(lián)接進行判斷的,對于本地聯(lián)接,它是從操作系統(tǒng)獲取的。) 然后檢查一下,看看用戶是否允許以要求的數(shù)據(jù)庫用戶進行聯(lián)接, 方法是參照在 ident 關鍵字后面聲明的映射。如果你使用了 sameuser 映射,那么假設用戶名是相等的。如果沒有聲明這個關鍵字,則在 $PGDATA/pg_ident.conf 文件中找出映射名。如果這個文件里包含一條記錄標識著ident提供的用戶名 和請求的 PostgreSQL 用戶名的映射, 那么聯(lián)接
10、被接受。對于本地聯(lián)接,只有在系統(tǒng)支持Unix域套接字信任證的情況下 才能使用(目前是 Linux, FreeBSD, NetBSD, 和 BSD/OS)。pam使用操作系統(tǒng)提供的可插入的認證模塊服務 (Pluggable Authentication Modules) (PAM)來認證。認證配置(authentication-option)這個可選的字段的含義取決與選擇的認證方法。了解了以上的內(nèi)容以后,我們可以開始設置自己的訪問認證。和mysql一樣,postgresql默認安裝的訪問認證是不安全的,當我第一次安裝好我的 postgresql以后,我發(fā)現(xiàn)只要輸入psql -U pgsql -d
11、 template1就可以不需要任何密碼的進入我的數(shù)據(jù)庫,并且使用的是pgsql用戶(數(shù)據(jù)庫的最高權(quán)限),即使在我使用ALTER USER為我的數(shù)據(jù)庫用戶添加了密碼以后情況也沒有得到改善,經(jīng)過一番查找,我發(fā)現(xiàn)我的pg_hba.conf內(nèi)容如下:local all all trusthost all all 0.0.0.0 0.0.0.0 trust這說明無論在本地還是通過tcp/ip,任何人都可以不加任何限制的使用任何他想用的身份訪問我的數(shù)據(jù)庫,于是我為所有的訪問都使用了md5認證方法,我的pg_hba.conf變?yōu)椋簂ocal all all md5host all all 0.0.0.0
12、0.0.0.0 md5事情似乎得到了解決,任何人想訪問我的數(shù)據(jù)庫都需要通過密碼這一關,我的數(shù)據(jù)庫安全了。但是當我有一天重新啟動計算機的以后發(fā)現(xiàn)我的 postgresql并沒有被正常的啟動,在終端前我發(fā)現(xiàn)啟動到postgresql服務啟動腳本時,提示需要輸入密碼,原來在設置了md5認證方式以后我的pgsql需要密碼才能夠啟動服務,為了不每次啟動都跑到終端前去輸入一次密碼,我的pgsql用戶的認證方法必須為trust:local pgsql all trustlocal all all md5host all all 0.0.0.0 0.0.0.0 md5在隨后的檢測中我發(fā)現(xiàn),雖然通過網(wǎng)絡得到了保
13、護,但是如果在本地通過Unix域套接字進行連接的話,任何人都還是可以使用psql -U pgsql -d template1的方式輕松的進入我的數(shù)據(jù)庫,這樣做顯而易見不是我想要的結(jié)果,現(xiàn)在我需要unix_socket_permissions的協(xié)助,當我把這個項設置為0700以后,就只有套接字的所有人,即系統(tǒng)用戶pgsql可以使用套接字進行連接,另外如果我的數(shù)據(jù)庫有幾個管理員需要最高權(quán)限的話,0770也是一個選擇,不過暫時只有我一個管理員,所以我選擇了0700,現(xiàn)在我的pg_hba.conf改變?yōu)椋簂ocal pgsql all trusthost all all 0.0.0.0 0.0.0.0
14、 md5結(jié)合了unix_socket_permissions以后,現(xiàn)在只有系統(tǒng)用戶pgsql可以無任何限制的連接(當然,偉大的root例外),并且我也不用每次啟動的時候都跑到終端前去輸入一次密碼了,而其他人只能通過網(wǎng)絡連接,即使登錄到了本地計算機上,其他用戶也只能使用psql -U xx -d template1 -h 127.0.0.1的方式連接,這種連接是受到密碼認證的保護的,這一切正是我想要的。pg_hda.conf看看pg_hda.conf的:# TYPE DATABASE USER CIDR-ADDRESS METHOD順序一定不要搞錯了,我的前面關于認證設置的文章是網(wǎng)上照搬的,將d
15、atabase和user順序設反了,導致我一直出現(xiàn)錯誤。汗顏!注意到type:包含local和host兩種。意思是本機(local)和遠程調(diào)用(host)對于一個user,最好給本機和遠程都給權(quán)限。然后看method:有trust(不需要安全認證);md5(md5加密認證);password(明碼認證)。依然存在問題:我對用戶使用md5和password方式,使用psql命令輸入密碼都提示密碼錯誤。不知道是什么原因。問題分析中。待續(xù)eg:對globus用戶,rftDatabase數(shù)據(jù)庫的授權(quán):local all globus trusthost rftDatabase globus 202.1
16、98.30.65 255.255.255.128 trust這個是保證GT4的container和使用psql命令都能簡單進入的方式,不過使用password和md5方式就出現(xiàn)錯誤了。順便說一句,container聯(lián)接數(shù)據(jù)庫的配置文件是:$GLOBUS_LOCATION/etc/globus_wsrf_rft/jndi-config.xml在dbConnection部分指定數(shù)據(jù)庫,用戶名和密碼。pg_hba.conf 文件客戶端認證是由一個配置文件控制的,通常其文件名是 pg_hba.conf, 存放在數(shù)據(jù)庫集群的數(shù)據(jù)目錄里。 (HBA 的意思是 host-based authenticati
17、on:基于主機的認證。) 在initdb初始化數(shù)據(jù)目錄的時候,它會安裝一個缺省的文件。 不過我們也可以把認證配置文件放在其它地方;參閱 hba_file 配置參數(shù)。文件 pg_hba.conf 的常用格式是一套記錄, 每行一條??瞻仔行斜缓雎?,井號( # )開頭的注釋也被忽略。 一條記錄是由若干用空格和/或 tab 分隔的字段組成。 如果字段用引號包圍,那么它可以包含空白。記錄不能跨行存在。每條記錄聲明一種聯(lián)接類型,一個客戶端 IP 地址范圍(如果和聯(lián)接類型相關的話),一個數(shù)據(jù)庫名,一個用戶名字, 以及對匹配這些參數(shù)的聯(lián)接使用的認證方法。 第一條匹配聯(lián)接類型,客戶端地址和聯(lián)接企圖請求的數(shù)據(jù)庫名
18、和用戶名的記錄將用于執(zhí)行認證。 這個處理過程沒有跨越或者回頭的說法:如果選擇了一條記錄而且認證失敗, 那么將不考慮后面的記錄。如果沒有匹配的記錄,那么訪問將被拒絕。每條記錄可以下面七種格式之一local database user auth-method auth-optionhost database user CIDR-address auth-method auth-optionhostssl database user CIDR-address auth-method auth-optionhostnossl database user CIDR-address auth-method
19、 auth-optionhost database user IP-address IP-mask auth-method auth-optionhostssl database user IP-address IP-mask auth-method auth-optionhostnossl database user IP-address IP-mask auth-method auth-option各個字段的含義如下:local這條記錄匹配通過 Unix 域套接字進行的聯(lián)接企圖。 沒有這種類型的記錄,就不允許 Unix 域套接字的聯(lián)接。host這條記錄匹配通過 TCP/IP 進行的聯(lián)接嘗試
20、。 host 記錄匹配 SSL 和非 SSL 的連接請求。注意: 除非服務器帶著合適的 listen_addresses 配置參數(shù)值啟動,否則將不可能進行遠程的 TCP/IP 連接, 因為缺省的行為是只監(jiān)聽本地自環(huán)地址 localhost 的連接。hostssl這條記錄匹配使用 TCP/IP 的 SSL 聯(lián)接企圖。 但必須是使用 SSL 加密的聯(lián)接。要使用這個選項,制作服務器的時候必須打開 SSL 支持。而且在服務器啟動的時候, 必須SSL選項通過配置選項ssl打開。 hostnossl這個記錄與 hostssl 有著正相反的邏輯: 它只匹配那些在 TCP/IP 上不使用 SSL 的連接請求。
21、database聲明記錄所匹配的數(shù)據(jù)庫名稱。值 all 表明該記錄匹配所有數(shù)據(jù)庫, 值 sameuser表示如果被請求的數(shù)據(jù)庫和請求的用戶同名,則匹配。 samerole 表示請求的用戶必須是一個與數(shù)據(jù)庫同名的組中的成員。 (samegroup 是一個已經(jīng)廢棄了的,但仍然被接受的 samerole 的同義詞。) 在其他情況里,這就是一個特定的 PostgreSQL 的名字。 我們可以通過用逗號分隔的方法聲明多個數(shù)據(jù)庫。 可以通過對該文件前綴 來聲明一個獨立的包含數(shù)據(jù)庫名的文件。user為這條記錄聲明所匹配的數(shù)據(jù)庫用戶。值 all 表明它匹配于所有用戶。 否則,它就是特定數(shù)據(jù)庫用戶的名字。或者是
22、一個前綴 + 的組名稱。 (請注意,在 PostgreSQL 里,用戶和組沒有真正的區(qū)別, + 實際上只是意味著匹配任何直接或者間接屬于這個角色的成員, 而沒有 + 記號的名字只匹配指定的角色。) 多個用戶名可以通過用逗號分隔的方法聲明。 一個包含用戶名的文件可以通過在文件名前面前綴 來聲明。CIDR-address聲明這條記錄匹配的客戶端機器的 IP 地址范圍。它包含一個標準的點分十進制的 IP 地址和一個 CIDR 掩碼長度。 (IP 地址只能用數(shù)值聲明,不能用域或者主機名。) 掩碼長度表示客戶端 IP 地址必須匹配的高位二進制位數(shù)。 在給出的 IP 地址里,這個長度的右邊的二進制位必須為
23、零。 在 IP 地址,/,和 CIDR 掩碼長度之間不能有空白。典型的 CIDR 地址是 172.20.143.89/32,這表明一個主機, 或者 172.20.143.0/24 表示一個網(wǎng)絡。 要聲明單個主機,給 IPv4 地址聲明 CIDR 掩碼 32,給 IPv6 地址聲明 128。以 IPv4 格式給出的 IP 地址會匹配那些擁有對應地址的 IPv6 連接,比如 127.0.0.1 將匹配 IPv6 地址 :ffff:127.0.0.1。 一個以 IPv6 格式給出的記錄將只匹配 IPv6 連接,即使對應的地址在 IPv4-in-IPv6 范圍內(nèi)。請注意如果系統(tǒng)的 C 庫不支持 IPv
24、6 地址,那么 IPv6 的格式將被拒絕。這個域只適用于 host,hostssl 和 hostnossl 記錄。IP-addressIP-mask這些方法可以用于作為 CIDR-address 表示法的替補。 它不是聲明掩碼的長度,而是在另外一個字段里聲明實際的掩碼。 比如,255.0.0.0 表示 IPv4 CIDR 掩碼長度 8,而 255.255.255.255 表示 CIDR 掩碼長度 32。 同樣的匹配邏輯將用于一個點分的 IP-mask。這些字段只適用于 host, hostssl, 和 hostnossl 記錄。auth-method(認證方法)聲明通過這條記錄聯(lián)接的時候使用的
25、認證方法。 可能的選擇在下面簡介。trust無條件地允許聯(lián)接。這個方法允許任何可以與PostgreSQL 數(shù)據(jù)庫服務器聯(lián)接的用戶以他們期望的任意 PostgreSQL 數(shù)據(jù)庫用戶身份進行聯(lián)接,而不需要口令。reject聯(lián)接無條件拒絕。常用于從一個組中過濾某些主機。md5要求客戶端提供一個 MD5 加密的口令進行認證 cryptNote: 這個選項只有在與 7.2 以前的客戶端進行通訊的時候才建議使用。要求客戶端提供一個 crypt() 加密的口令用于認證。 現(xiàn)在我們建議使用 md5。 password要求客戶端提供一個未加密的口令進行認證。 因為口令是以明文形式在網(wǎng)絡上傳遞的, 所以我們不應該
26、在不安全的網(wǎng)絡上使用這個方式。 并且它通常還不能和線程化的客戶端應用一起使用。krb5用 Kerberos V5 認證用戶。只有在進行 TCP/IP 聯(lián)接的時候才能用。 (譯注:Kerberos V5 是上面 V4 的改良,主要是不再依賴 DES 算法, 同時增加了一些新特性。)ident獲取客戶的操作系統(tǒng)名(對于 TCP/IP 聯(lián)接,用戶的身份是通過與運行在客戶端上的 ident 服務器聯(lián)接進行判斷的,對于本地聯(lián)接,它是從操作系統(tǒng)獲取的。) 然后檢查一下,看看用戶是否允許以要求的數(shù)據(jù)庫用戶進行聯(lián)接, 方法是參照在 ident 關鍵字后面聲明的映射。pam使用操作系統(tǒng)提供的可插入的認證模塊服務
27、 (Pluggable Authentication Modules) (PAM)來認證auth-option這個可選的字段的含義取決與選擇的認證方法。細節(jié)在下面。用 構(gòu)造包含的文件是當作一列名字讀取的, 這些名字可以用空白或者逗號分隔。注釋用 # 引入, 就像在 pg_hba.conf 里那樣,允許嵌套 構(gòu)造。 除非跟在 后面的文件名是一個絕對路徑,否則被當作與包含該文件的目錄相對的路徑。因為認證時系統(tǒng)是為每個聯(lián)接請求順序檢查 pg_hba.conf 里的記錄的,所以這些記錄的順序是非常關鍵的。 通常,靠前的記錄有比較嚴的聯(lián)接匹配參數(shù)和比較弱的 認證方法,而靠后的記錄有比較松的匹配參數(shù)和比較
28、嚴的認證方法。 比如,我們一般都希望對本地 TCP/IP 聯(lián)接使用 trust 認證, 而對遠端的 TCP/IP 聯(lián)接要求口令。在這種情況下我們將 trust 認證方法用于來自 127.0.0.1 的聯(lián)接,這條記錄將出現(xiàn)在允許更廣泛的客戶端 IP 地址的使用口令認證的記錄前面。在啟動和主服務器進程( postmaster )收到SIGHUP 信號的時候, 系統(tǒng)都會重新裝載 pg_hba.conf 文件。 如果你在活躍的系統(tǒng)上編輯了該文件,你就需要用 kill 向 postmaster 發(fā)一個 SIGHUP信號,好讓它重新讀取該文件。在 Example 20-1 里是 pg_hba.conf 記
29、錄的一些例子。 閱讀下文理解不同認證方法的細節(jié)。Example 20-1. pg_hba.conf 記錄的例子# 允許在本機上的任何用戶使用 Unix 域套接字(本地連接的缺?。? 以任何數(shù)據(jù)庫用戶身份聯(lián)接任何數(shù)據(jù)庫# TYPE DATABASE USER CIDR-ADDRESS METHODlocal all all trust# 和上面相同,但是使用的是自環(huán)的(loopback)TCP/IP 連接# TYPE DATABASE USER CIDR-ADDRESS METHODhost all all 127.0.0.1/32 trust# 和上面一行相同,但是用的是獨立的掩碼字段# TYPE DATABASE USER IP-ADDRESS METHODhost all all 127.0.0.1 255.255.255.255 trust# 允許 IP 地址為 192.168.93.x 的任何主機與數(shù)據(jù)庫# postgres 相連,用與他們在自己的主機上相同 ident 的用戶名標識他自己# (通常是他的 Unix 用戶名)# TYPE DATABASE USER CIDR-ADDRESS METHODhost postgres all 192.168.93.0/24 iden
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游餐飲住宿工作匯報
- 微粒貸逾期立案通知函
- 關注網(wǎng)絡安全主題班會
- 2025違約責任(適用主設計合同)
- 2025公司租房協(xié)議書合同范
- 廣西南寧市2024-2025學年高二上學期期末考試 地理 含答案
- 2025最簡單的銷售合同
- 2025關于渣土清運合同范本
- 教育行業(yè)員工招聘清晰引流
- 快消品行業(yè)美工的市場需求
- 2024至2030年中國抗菌藥數(shù)據(jù)監(jiān)測研究報告
- 藝術(shù)哲學:美是如何誕生的學習通超星期末考試答案章節(jié)答案2024年
- 太平洋保險在線測評題
- 北京海淀區(qū)2025屆高三下第一次模擬語文試題含解析
- 珠寶玉石居間合同范本
- 青少年人工智能編程水平測試二級-模擬真題01含答案
- 仁愛英語八年級下冊Unit-5-Topic-2單元測試
- DZ∕T 0291-2015 飾面石材礦產(chǎn)地質(zhì)勘查規(guī)范
- 線上家長會模板
- SH/T 3227-2024 石油化工裝置固定水噴霧和水(泡沫)噴淋滅火系統(tǒng)技術(shù)標準(正式版)
- DZ∕T 0276.18-2015 巖石物理力學性質(zhì)試驗規(guī)程 第18部分:巖石單軸抗壓強度試驗(正式版)
評論
0/150
提交評論