導航:首頁 > 文件教程 > smack文件發送

smack文件發送

發布時間:2023-07-12 11:28:01

『壹』 想實現一個linux內核安全功能模塊的技術思路是怎樣的

參考網站:http://www.hu.com/question/21637060
用戶在執行系統調用時,先通過原有的內核介面依次執行功能性的錯誤檢查,接著進行傳統的DAC檢查,並在即將訪問內核的內部對象之前,通過LSM鉤子函數調用LSM。LSM再調用具體的訪問控制策略來決定訪問的合法性。訪問控制整體構架:
LSM框架下訪問決策模塊包括selinux,smack,tomoyo,yama,apparmor.
每個決策模塊都是通過各自的XXX_init函數調用register_security()函數,注冊到LSM框架的模塊被載入成功後,就可以進行訪問控制操作。如果此時還有一個安全模塊要使用register_security()函數進行載入,則會出現錯誤,直到使用框架注銷後,下一個模塊才可以載入。

Linux安全模塊(LSM)提供了兩類對安全鉤子函數的調用:一類管理內核對象的安全域,另一類仲裁對這些內核對象的訪問。對安全鉤子函數的調用通過鉤子來實現,鉤子是全局表security_ops中的函數指針,這個全局表的類型是security_operations結構,這個結構定義在include/linux/security.h這個頭文件中。
通過對security代碼進行一番簡單的分析,LSM啟動過程流圖:

security_initcall只能調用selinux_init,smack_init ,tomoyo_init , yama_init 和apparmor_init中的一個,因為內核不允許多種安全機制同時一起工作。一旦一個安全模塊被載入,就成為系統的安全策略決策中心,而不會被後面的register_security()函數覆蓋,直到這個安全模塊被使用unregister_security()函數向框架注銷。

因此LSM框架下只能開啟一種安全機制,smack編譯進Linux內核的配置和要求:

(1)要求smack和selinux不能夠同時運行,不能同時存在於同一個運行中的內核;
查看內核是否開啟以下的功能(如果沒有則需要開啟):

CONFIG_NETLABEL=y
CONFIG_SECURITY=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_SMACK=y
CONFIG_SECURITY_SELINUX should not be
set

步驟:

make menuconfig
make moles_install
make install
查看/proc/filesystems
可以看到smackfs,說明smack已經編進內核

執行如下的命令:
mkdir -p /smack
在文件/etc/fstab添加下面的一行
smackfs /smack smackfs defaults 0 0
然後執行下面的命令:
mount –a

然後就體驗一下它的功能了:
1. 比如在用戶test的home目錄下(/home/test),新建文件夾 mkdir testdir
cd testdir/
touch testfile
2. 給新建的testfile 打上TheOther標簽
setfattr
--name=security.SMACK64 --value=TheOther testfile
查看其標簽
getfattr
--only-values -n security.SMACK64 -e text testfile
可以看到標簽TheOther

3. echo TheOne
2>/dev/null > /proc/self/attr/current,當前執行的進程默認都會被打為/proc/self/attr/current下的標簽
4.配置策略echo -n "TheOne TheOther r---"> /sma ck/load
因為當前進程只要是沒有特殊配置過的都被打為TheOne,所以當轉換到普通用戶test下,cat testfile是可讀的
5.現在我將當前進程打為NotTheOne ,echo NotTheOne 2>/dev/null >
/proc/self/attr/current
當轉換到普通用戶test下,cat testfile則變成不可讀的了
6.如果你想單獨對某個進程打標簽,而不是對當前進程打,就
attr -s security.SMACK64 -V TheOne /bin/cat
此時cat被標為TheOne,根據策略可以看出,當轉換到普通用戶test下,cat testfile是可讀的
若attr -s
security.SMACK64 –V Not TheOne /bin/cat
根據策略可以看出,當轉換到普通用戶test下,cat testfile是不可讀的
(需要說明的一點是,當cat本身被標上標簽和/proc/self/attr/current打入標簽共存時,cat本身的標簽生效,而/proc/self/attr/current打入標簽沒有生效)

『貳』 有哪位大哥知道基於XMPP的文件傳輸嗎,有的話,請給一份用Smack API編寫的文件傳輸的例子Java源代碼

Spark是開源的基於XMPP用了的即時聊天軟體,下載它的源代碼,什麼功能都有。
public void sendFile(final OutgoingFileTransfer transfer, FileTransferManager transferManager, final String jid, final String nickname) {
this.transferManager = transferManager;

cancelButton.setVisible(true);
retryButton.setVisible(false);
this.fullJID = jid;
this.nickname = nickname;

this.transfer = transfer;
String fileName = transfer.getFileName();
long fileSize = transfer.getFileSize();
ByteFormat format = new ByteFormat();
String text = format.format(fileSize);

fileToSend = new File(transfer.getFilePath());
imageLabel.setFile(fileToSend);

fileLabel.setText(fileName + " (" + text + ")");

ContactList contactList = SparkManager.getWorkspace().getContactList();
ContactItem contactItem = contactList.getContactItemByJID(jid);

titleLabel.setText(Res.getString("message.transfer.waiting.on.user", contactItem.getDisplayName()));

if (isImage(fileName)) {
try {
URL imageURL = new File(transfer.getFilePath()).toURI().toURL();
ImageIcon image = new ImageIcon(imageURL);
image = GraphicUtils.scaleImageIcon(image, 64, 64);
imageLabel.setIcon(image);
}
catch (MalformedURLException e) {
Log.error("Could not locate image.", e);
imageLabel.setIcon(SparkRes.getImageIcon(SparkRes.DOCUMENT_INFO_32x32));
}
}
else {
File file = new File(transfer.getFilePath());
Icon icon = GraphicUtils.getIcon(file);
imageLabel.setIcon(icon);
}
cancelButton.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent mouseEvent) {
transfer.cancel();
}
});

『叄』 如何測試MySQL的系統的性能

有一些有用的工具可以測試MySQL 和基於MySQL 的系統的性能。這里將演示如何利用這些工具進行測試。

mysqlslap

mysqlslap可以模擬伺服器的負載,並輸出計時信息。它包含在MySQL 5.1 的發行包中,應該在MySQL 4.1或者更新的版本中都可以使用。測試時可以執行並發連接數,並指定SQL 語句(可以在命令行上執行,也可以把SQL 語句寫入到參數文件中)。如果沒有指定SQL 語句,mysqlslap 會自動生成查詢schema 的SELECT 語句。

MySQL Benchmark Suite (sql-bench)

在MySQL 的發行包中也提供了一款自己的基準測試套件,可以用於在不同資料庫伺服器上進行比較測試。它是單線程的,主要用於測試伺服器執行查詢的速度。結果會顯示哪種類型的操作在伺服器上執行得更快。

這個測試套件的主要好處是包含了大量預定義的測試,容易使用,所以可以很輕松地用於比較不同存儲引擎或者不同配置的性能測試。其也可以用於高層次測試,比較兩個伺服器的總體性能。當然也可以只執行預定義測試的子集(例如只測試UPDATE 的性能)。這些測試大部分是CPU 密集型的,但也有些短時間的測試需要大量的磁碟I/O 操作。

這個套件的最大缺點主要有:它是單用戶模式的,測試的數據集很小且用戶無法使用指定的數據,並且同一個測試多次運行的結果可能會相差很大。因為是單線程且串列執行的,所以無法測試多CPU 的能力,只能用於比較單CPU 伺服器的性能差別。使用這個套件測試資料庫伺服器還需要Perl 和BDB 的支持,相關文檔請參考.

Super Smack

Super Smack是一款用於MySQL 和PostgreSQL的基準測試工具,可以提供壓力測試和負載生成。這是一個復雜而強大的工具,可以模擬多用戶訪問,可以載入測試數據到資料庫,並支持使用隨機數據填充測試表。測試定義在"smack"文件中,smack 文件使用一種簡單的語法定義測試的客戶端、表、查詢等測試要素。

Database Test Suite

Database Test Suite 是由開源軟體開發實驗室(OSDL,Open Source DevelopmentLabs)設計的,發布在SourceForge 網站上,這是一款類似某些工業標准測試的測試工具集,例如由事務處理性能委員會(TPC,Transaction Processing Performance Council)制定的各種標准。特別值得一提的是,其中的dbt2 就是一款免費的TPC-C OLTP 測試工具(未認證)。之前本書作者經常使用該工具,不過現在已經使用自己研發的專用於MySQL 的測試工具替代了。

Percona's TPCC-MySQL Tool

我們開發了一個類似TPC-C 的基準測試工具集,其中有部分是專門為MySQL 測試開發的。在評估大壓力下MySQL 的一些行為時,我們經常會利用這個工具進行測試(簡單的測試,一般會採用sysbench 替代),在源碼庫中有一個簡單的文檔說明。

sysbench

sysbench是一款多線程系統壓測工具。它可以根據影響資料庫伺服器性能的各種因素來評估系統的性能。例如,可以用來測試文件I/O、操作系統調度器、內存分配和傳輸速度、POSIX 線程,以及資料庫伺服器等。sysbench 支持Lua 腳本語言,Lua 對於各種測試場景的設置可以非常靈活。sysbench 是我們非常喜歡的一種全能測試工具,支持MySQL、操作系統和硬體的硬體測試。(節選自《高性能MySQL》)

閱讀全文

與smack文件發送相關的資料

熱點內容
javafrom提交地址參數 瀏覽:721
git發布版本 瀏覽:728
vc修改文件名 瀏覽:149
linux65從域 瀏覽:321
用什麼東西壓縮文件 瀏覽:406
怎麼刪除ipad隱藏的APP 瀏覽:981
編程如何佔用大量內存 瀏覽:116
多個excel表格文件如何組合 瀏覽:918
ubuntu內核升級命令 瀏覽:679
pgp文件夾 瀏覽:894
一鍵還原的文件是什麼格式 瀏覽:581
女漢子微信名霸氣十足 瀏覽:65
win10手機藍屏修復 瀏覽:419
windows2008激活工具 瀏覽:259
g71的編程應注意什麼 瀏覽:572
文件路徑不符合是什麼意思 瀏覽:543
qq如何換綁微信綁定 瀏覽:67
文件包下載的安裝包在哪裡 瀏覽:811
90版本升級不送 瀏覽:186
工具箱英文 瀏覽:382

友情鏈接