《Mysql應(yīng)用MySQL在Linux系統(tǒng)中隱藏命令行中的密碼的方法》要點(diǎn):
本文介紹了Mysql應(yīng)用MySQL在Linux系統(tǒng)中隱藏命令行中的密碼的方法,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
MYSQL教程在命令行中輸入命令并不是一個(gè)好主意,會(huì)造成平安問題.但是如果你決定去寫一個(gè)應(yīng)用,而這個(gè)應(yīng)用需要在命令行中使用密碼或者其他敏感信息.那么,你能通過以下方法禁止系統(tǒng)的其他用戶輕易的看到這些敏感數(shù)據(jù) 呢?,類似MySQL在ps命令下隱藏密碼.
MYSQL教程假設(shè)我這里系統(tǒng)里兩個(gè)用戶,一個(gè)是root ,一個(gè)是dabu .測(cè)試系統(tǒng)為centos 6.5在依照下面的步驟做:
MYSQL教程
[root@dabu.info ~]#su dabu #切換到dabu這個(gè)賬號(hào)
[dabu@dabu.info ~]$cd ~ #切換到dabu的home目錄
[dabu@dabu.info ~]$ touch pwhide.c #創(chuàng)建 pwhide.c文件
[dabu@dabu.info ~]$ls
MYSQL教程顯示:
MYSQL教程?
MYSQL教程將下面的代碼保留到 pwhide.c :
MYSQL教程?
MYSQL教程
#include <stdio.h>
#include <unistd.h> /* unix類系統(tǒng)定義符號(hào)常量的頭文件*/
#include <string.h> /* 字符數(shù)組的函數(shù)定義的頭文件*/
#include <sys/types.h> /* Unix/Linux系統(tǒng)的基本系統(tǒng)數(shù)據(jù)類型的頭文件*/
int main(int argc, char *argv[]) /*形參argc指命令行中參數(shù)的個(gè)數(shù)(包括執(zhí)行文件本身).形參argv是一個(gè)紙箱字符串的指針數(shù)組*/
{
int i = 0;
pid_t mypid = getpid(); /*獲得該程序運(yùn)行時(shí)候的pid*/
if (argc == 1) /*如果argc參數(shù)個(gè)數(shù)等于1,按要求,應(yīng)該argc要為2才行*/
return 1; /*異常退出*/
printf("argc = %d and arguments are:\n", argc); /*打印argc參數(shù)個(gè)數(shù)*/
for (i ; i < argc ; i++) /*打印i序號(hào),以及對(duì)應(yīng)的argv數(shù)組指針元素*/
printf("%d = %s\n" ,i, argv[i]); /*打印i序號(hào),以及對(duì)應(yīng)的argv數(shù)組指針元素*/
printf("Replacing first argument with x:es... Now open another terminal and run: ps p %d\n", (int)mypid); /*打印該字符串和該程序是的pid*/
fflush(stdout); //*清空緩沖區(qū),并打印其內(nèi)容*/
memset(argv[1], 'x', strlen(argv[1])); /*注意,這里是本文的重點(diǎn)和關(guān)鍵點(diǎn).(原文http://www.dabu.info/?p=5150)就是利用memset(void *s, int c, size_t n)函數(shù)用x來(lái)覆蓋密碼的每個(gè)字符*.你也可以將x替換為 a ,然后重新編譯運(yùn)行,再ps看看有什么不同/
getc(stdin); /* 等待并獲取鍵盤輸入,其實(shí)這里主要的作用是保持該c程序在 運(yùn)行狀態(tài),這樣才能通過ps 查看pid來(lái)觀察密碼是否被暗藏 .所以在這個(gè)函數(shù)運(yùn)行后,不能再有任何的鍵盤操作 */
return 0; /* 正常退出 */
#include <stdio.h>
#include <unistd.h> /* unix類系統(tǒng)定義符號(hào)常量的頭文件*/
#include <string.h> /* 字符數(shù)組的函數(shù)定義的頭文件*/
#include <sys/types.h> /* Unix/Linux系統(tǒng)的基本系統(tǒng)數(shù)據(jù)類型的頭文件*/
int main(int argc, char *argv[]) /*形參argc指命令行中參數(shù)的個(gè)數(shù)(包括執(zhí)行文件本身).形參argv是一個(gè)紙箱字符串的指針數(shù)組*/
{
int i = 0;
pid_t mypid = getpid(); /*獲得該程序運(yùn)行時(shí)候的pid*/
if (argc == 1) /*如果argc參數(shù)個(gè)數(shù)等于1,按要求,應(yīng)該argc要為2才行*/
return 1; /*異常退出*/
printf("argc = %d and arguments are:\n", argc); /*打印argc參數(shù)個(gè)數(shù)*/
for (i ; i < argc ; i++) /*打印i序號(hào),以及對(duì)應(yīng)的argv數(shù)組指針元素*/
printf("%d = %s\n" ,i, argv[i]); /*打印i序號(hào),以及對(duì)應(yīng)的argv數(shù)組指針元素*/
printf("Replacing first argument with x:es... Now open another terminal and run: ps p %d\n", (int)mypid); /*打印該字符串和該程序是的pid*/
fflush(stdout); //*清空緩沖區(qū),并打印其內(nèi)容*/
memset(argv[1], 'x', strlen(argv[1])); /*注意,這里是本文的重點(diǎn)和關(guān)鍵點(diǎn).(原文http://www.dabu.info/?p=5150)就是利用memset(void *s, int c, size_t n)函數(shù)用x來(lái)覆蓋密碼的每個(gè)字符*.你也可以將x替換為 a ,然后重新編譯運(yùn)行,再ps看看有什么不同/
getc(stdin); /* 等待并獲取鍵盤輸入,其實(shí)這里主要的作用是保持該c程序在 運(yùn)行狀態(tài),這樣才能通過ps 查看pid來(lái)觀察密碼是否被暗藏 .所以在這個(gè)函數(shù)運(yùn)行后,不能再有任何的鍵盤操作 */
return 0; /* 正常退出 */
}
MYSQL教程?
MYSQL教程然后編譯 pwhide.c ,命令如下:
MYSQL教程
[dabu@dabu.info ~]$ gcc -o hide pwhide.c #編譯后的文件叫 hide
[dabu@dabu.info ~]$ ls
MYSQL教程顯示:
?
MYSQL教程?
MYSQL教程用編譯后的程序進(jìn)行測(cè)試:
MYSQL教程
[dabu@dabu.info ~]$ ./hide dabu.info //dabu.info作為參數(shù)(其實(shí)就是暗碼) 進(jìn)行測(cè)試
顯示:
argc = 2 and arguments are:
0 = ./hide
1 = dabu.info
Replacing first argument with x:es... Now open another terminal and run: ps p 15585
MYSQL教程注意:ps p 15585 .你可能和我的不一樣,因?yàn)閜id每次運(yùn)行,都會(huì)變的.你顯示什么數(shù)字,后面就用什么數(shù)字.
MYSQL教程顯示出上面結(jié)果后,不再進(jìn)行任何操作,也不關(guān)閉這個(gè)終端窗口(命令窗口).然后在用root賬號(hào)登錄,便是相當(dāng)于同時(shí)開兩個(gè)終端窗口.輸入下面的命令:
MYSQL教程
[root@dabu.info ~]#ps p 15585 #就是運(yùn)行 ./hide dabu.info后,得到的該程序的pid
顯示:
PID TTY STAT TIME COMMAND
15585 pts/0 S+ 0:00 ./hide xxxxxxxxx //dabu.info 共有9個(gè)字符,所以這里就顯示9個(gè)x
MYSQL教程由此測(cè)試的結(jié)果,我們知道了這個(gè)方法能夠使MySQL如安在ps命令下隱藏命令行中的密碼.以此類推,在寫其他程序后,就知道如何使用這個(gè)方法來(lái) 讓程序 在ps命令下隱藏命令行參數(shù).
MYSQL教程為了簡(jiǎn)明起見,上面的代碼可能不怎么好移植到其他平臺(tái),但是它可以工作在linux上,而且如愿的表達(dá)了關(guān)鍵點(diǎn).在其它環(huán)境,如FreeBSD,你可以使用系統(tǒng)調(diào)用setproctitle() 來(lái)為你做這種苦力活.關(guān)鍵的一點(diǎn)是重寫argv
《Mysql應(yīng)用MySQL在Linux系統(tǒng)中隱藏命令行中的密碼的方法》是否對(duì)您有啟發(fā),歡迎查看更多與《Mysql應(yīng)用MySQL在Linux系統(tǒng)中隱藏命令行中的密碼的方法》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/12335.html