欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL在Linux系統(tǒng)中隱藏命令行中的密碼的方法

 更新時(shí)間:2015年06月29日 09:24:31   投稿:goldensun  
這篇文章主要介紹了MySQL在Linux系統(tǒng)中隱藏命令行中的密碼的方法,作者利用簡(jiǎn)單的C程序?qū)崿F(xiàn),需要的朋友可以參考下

在命令行中輸入命令并不是一個(gè)好主意,會(huì)造成安全問題。但是如果你決定去寫一個(gè)應(yīng)用,而這個(gè)應(yīng)用需要在命令行中使用密碼或者其他敏感信息。那么,你能通過以下方法禁止系統(tǒng)的其他用戶輕易的看到這些敏感數(shù)據(jù) 呢?,類似MySQL在ps命令下隱藏密碼。

假設(shè)我這里系統(tǒng)里兩個(gè)用戶,一個(gè)是root ,一個(gè)是dabu 。測(cè)試系統(tǒng)為centos 6.5在按照下面的步驟做:

[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

顯示:

 

復(fù)制代碼 代碼如下:
pwhide.c

將下面的代碼保存到 pwhide.c :

 

#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來覆蓋密碼的每個(gè)字符*。你也可以將x替換為 a ,然后重新編譯運(yùn)行,再ps看看有什么不同/
getc(stdin);   /* 等待并獲取鍵盤輸入,其實(shí)這里主要的作用是保持該c程序在 運(yùn)行狀態(tài),這樣才能通過ps 查看pid來觀察密碼是否被隱藏 。所以在這個(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來覆蓋密碼的每個(gè)字符*。你也可以將x替換為 a ,然后重新編譯運(yùn)行,再ps看看有什么不同/
getc(stdin);   /* 等待并獲取鍵盤輸入,其實(shí)這里主要的作用是保持該c程序在 運(yùn)行狀態(tài),這樣才能通過ps 查看pid來觀察密碼是否被隱藏 。所以在這個(gè)函數(shù)運(yùn)行后,不能再有任何的鍵盤操作 */
return 0;     /* 正常退出    */
}

 

然后編譯 pwhide.c ,命令如下:

[dabu@dabu.info ~]$ gcc -o hide pwhide.c #編譯后的文件叫 hide
[dabu@dabu.info ~]$ ls

顯示:
 

復(fù)制代碼 代碼如下:
hide pwhide.c

 

用編譯后的程序進(jìn)行測(cè)試:

[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

注意:ps p 15585 。你可能和我的不一樣,因?yàn)閜id每次運(yùn)行,都會(huì)變的。你顯示什么數(shù)字,后面就用什么數(shù)字。

顯示出上面結(jié)果后,不再進(jìn)行任何操作,也不關(guān)閉這個(gè)終端窗口(命令窗口)。然后在用root賬號(hào)登錄,就是相當(dāng)于同時(shí)開兩個(gè)終端窗口。輸入下面的命令:

[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

由此測(cè)試的結(jié)果,我們知道了這個(gè)方法能夠使MySQL如何在ps命令下隱藏命令行中的密碼。以此類推,在寫其他程序后,就知道如何使用這個(gè)方法來 讓程序 在ps命令下隱藏命令行參數(shù)。

為了簡(jiǎn)明起見,上面的代碼可能不怎么好移植到其他平臺(tái),但是它可以工作在linux上,并且如愿的表達(dá)了關(guān)鍵點(diǎn)。在其它環(huán)境,如FreeBSD,你可以使用系統(tǒng)調(diào)用setproctitle() 來為你做這種苦力活。關(guān)鍵的一點(diǎn)是重寫argv

相關(guān)文章

  • mysql免安裝版配置教程

    mysql免安裝版配置教程

    這篇文章主要為大家詳細(xì)介紹了mysql免安裝版配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • MySQL優(yōu)化之InnoDB優(yōu)化

    MySQL優(yōu)化之InnoDB優(yōu)化

    InnoDB是為Mysql處理巨大數(shù)據(jù)量時(shí)的最大性能設(shè)計(jì)。它的CPU效率可能是任何其它基于磁盤的關(guān)系數(shù)據(jù)庫引擎所不能匹敵的。在數(shù)據(jù)量大的網(wǎng)站或是應(yīng)用中Innodb是倍受青睞的。那么它就不需要優(yōu)化了嗎,答案很顯然:當(dāng)然不是?。?!
    2017-03-03
  • mysql中寫判斷語句的方法總結(jié)

    mysql中寫判斷語句的方法總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于mysql中寫判斷語句的方法總結(jié)內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。
    2020-09-09
  • mysql啟動(dòng)的error 2003和1067錯(cuò)誤問題解決方法

    mysql啟動(dòng)的error 2003和1067錯(cuò)誤問題解決方法

    mysql安裝好經(jīng)常發(fā)現(xiàn)無法正常啟動(dòng)碰到最多的是error 2003的錯(cuò)誤,經(jīng)研究在此附上解決方法,希望可以幫助有類似問題的朋友
    2013-09-09
  • CentOS 6.6 源碼編譯安裝MySQL 5.7.18教程詳解

    CentOS 6.6 源碼編譯安裝MySQL 5.7.18教程詳解

    這篇文章主要介紹了CentOS 6.6 源碼編譯安裝MySQL 5.7.18教程詳解,需要的朋友可以參考下
    2017-07-07
  • MySQL 索引和數(shù)據(jù)表該如何維護(hù)

    MySQL 索引和數(shù)據(jù)表該如何維護(hù)

    使用合適的數(shù)據(jù)類型完成數(shù)據(jù)表創(chuàng)建和建立索引后,工作并沒有完結(jié)——你需要去維護(hù)數(shù)據(jù)表和索引以保證它們運(yùn)行良好。數(shù)據(jù)表維護(hù)的主要目的是查找和修復(fù)沖突,維護(hù)精確的索引統(tǒng)計(jì)和減少碎片。
    2021-05-05
  • MySQL 基礎(chǔ)常用命令總結(jié)

    MySQL 基礎(chǔ)常用命令總結(jié)

    這篇文章主要介紹了MySQL 的基礎(chǔ)常用命令,在執(zhí)行語句的時(shí)候,很多命令都是必須記住的,想具體了解的小伙伴請(qǐng)參考下面文章內(nèi)容
    2021-09-09
  • MYSQL 隨機(jī) 抽取實(shí)現(xiàn)方法及效率分析

    MYSQL 隨機(jī) 抽取實(shí)現(xiàn)方法及效率分析

    MYSQL的隨機(jī)抽取實(shí)現(xiàn)方法。舉個(gè)例子,要從tablename表中隨機(jī)提取一條記錄,大家一般的寫法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。
    2009-05-05
  • 一文教你如何使用MySQL觸發(fā)器

    一文教你如何使用MySQL觸發(fā)器

    觸發(fā)器(TRIGGER)是MySQL的數(shù)據(jù)庫對(duì)象之一,是一種特殊類型的存儲(chǔ)過程,從5.0版本開始支持,下面這篇文章主要給大家介紹了關(guān)于如何使用MySQL觸發(fā)器的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • MySQL數(shù)據(jù)庫用戶權(quán)限管理

    MySQL數(shù)據(jù)庫用戶權(quán)限管理

    這篇文章主要介紹了MySQL數(shù)據(jù)庫用戶權(quán)限管理,文章主要內(nèi)容就是在不同的項(xiàng)目中,給不同的角色(開發(fā)者)不同的操作權(quán)限,保證數(shù)據(jù)庫數(shù)據(jù)的安全,需要的朋友可以參考一下
    2022-06-06

最新評(píng)論