首先還是要簡單的說下賬戶與密碼都在**。
linux系統中,所有使用者(包括系統管理員)的賬號和密碼都可以在/etc/passwd和/etc/shadow這兩個檔案中找到。
檢視許可權可發現passwd檔案誰都可以檢視,而shadow只有root及同組使用者可以
-rw-r–r-- 1 root root 1912 10月 15 2018 passwd
-rw-r----- 1 root shadow 1127 10月 15 2018 shadow
首先檢視下passwd檔案有啥內容
上面每一行都代表乙個使用者,每一行又通過[:]分為七個部分。
1、賬號名稱
2、原先用來儲存密碼的,現在密碼都放在/etc/shadow中,所以這裡顯示x
3、uid,也就是使用者id。預設的系統管理員的uid為0,我們新增使用者的時候最好使用1000以上的uid,1-1000範圍的uid最好保留給系統用。
4、gid,也就是群組id
5、關於賬號的一些說明資訊(暫時可以忽略)
6、賬號的家目錄,家目錄就是你登陸系統後預設的那個目錄
7、賬號使用的shell(不確定)
接著我們來檢視 shadow檔案
這裡也是由[:]來進行分割,但是這裡一共分出來九個欄目,每個欄目的解釋如下:
1. 賬戶名稱
2.加密後的密碼,如果這一欄的第乙個字元為!或者*的話,說明這是乙個不能登入的賬戶,從上面可以看出,ubuntu預設的就不啟用root賬戶。密碼格式為:$id$salt$encrypted
正題是啥,賬號密碼的匹配,打字好累,直接上**吧
#define _xopen_source //定義該巨集,使crypt函式有效
#include #include #include #include #include //crypt
//extern char *crypt(const char *key, const char *salt); //函式不宣告預設返回型別位整形。
int main(char argc,char* ar**)
struct spwd *pwd = getspnam(ar**[1]); //從shadow檔案獲取賬戶資訊
char salt[16] = ;
if(pwd)
else
struct passwd *pw = getpwnam(ar**[1]); //從passwd檔案中獲取賬戶資訊
printf("code:%s\n",pw->pw_passwd); //x
char *cpwd = crypt(ar**[2], salt);//合成shadow 中的密碼
if(!cpwd)
if(!strcmp(cpwd,pwd->sp_pwdp))
else
//char path[50]=;
//getcwd(path,50); //獲取當前所在目錄
//printf("getcwd:%s\n",path);
return 0;
}
編譯與執行結果:
小結:實現了如何驗證輸入的賬戶和密碼是系統管理的賬戶與密碼,可以用於ftp伺服器登入驗證等應用。
Linux忘記root賬戶密碼
鄙人試二個版本 centos6 centos7 一 centos6 1 開機顯示3,2,1 second.的時候按回車鍵,顯示系統核心 2 選擇你的核心,按e鍵 顯示如下 3 向下選擇第二項再按e鍵,顯示如下 4 在quiet後面加個空格,再加個1 5 修改完成回車鍵,回到上個賬戶介面,再按b鍵進入...
不用互動方式修改Linux賬戶密碼
通常,要養成定期修改作業系統使用者密碼的習慣,一般我們用passwd username這樣的命令來進行密碼修改,但是如此一來就要進入互動模式進行修改 如圖 那麼對於利用指令碼更改密碼的情況,反而因為互動模式而變得不簡潔,所以要用另一種方式避開互動模式 第一種 echo newpasswd passw...
Linux賬戶密碼過期安全策略設定
主機上普通使用者執行crontab e 時,會報錯,資訊如下 you 使用者名稱 are not allowed to access to crontab because of pam configuration.問題排查思路 一 檢查crond許可權。1 cat etc corn.deny,檔案是...