成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

linux解鎖命令 linux解密

linux文件鎖定被使用

一、什么是文件鎖定

創(chuàng)新互聯(lián)長期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為牟平企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè),牟平網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

對于鎖這個(gè)字,大家一定不會(huì)陌生,因?yàn)槲覀兩钪芯痛嬖谥罅康逆i,它們各個(gè)方面發(fā)揮著它的作用,現(xiàn)在世界中的鎖的功能都可歸結(jié)為一句話,就是阻止某些人做某些事,例如,門鎖就是阻止除了屋主之外的人進(jìn)入這個(gè)房子,你進(jìn)入不到這個(gè)房子,也就不能使用房子里面的東西。

而因?yàn)槌绦蚪?jīng)常需要共享數(shù)據(jù),而這通常又是通過文件來實(shí)現(xiàn)的,試想一個(gè)情況,A進(jìn)程正在對一個(gè)文件進(jìn)行寫操作,而另一個(gè)程序B需要對同一個(gè)文件進(jìn)行讀操作,并以讀取到的數(shù)據(jù)作為自己程序運(yùn)行時(shí)所需要的數(shù)據(jù),這會(huì)發(fā)生什么情況呢?進(jìn)程B可能會(huì)讀到錯(cuò)亂的數(shù)據(jù),因?yàn)樗⒉恢懒硪粋€(gè)進(jìn)程A正在改寫這個(gè)文件中的數(shù)據(jù)。

為了解決類似的問題,就出現(xiàn)了文件鎖定,簡單點(diǎn)來說,這是文件的一種安全的更新方式,當(dāng)一個(gè)程序正在對文件進(jìn)行寫操作時(shí),文件就會(huì)進(jìn)入一種暫時(shí)狀態(tài),在這個(gè)狀態(tài)下,如果另一個(gè)程序嘗試讀這個(gè)文件,它就會(huì)自動(dòng)停下來等待這個(gè)狀態(tài)結(jié)束。Linux系統(tǒng)提供了很多特性來實(shí)現(xiàn)文件鎖定,其中最簡單的方法就是以原子操作的方式創(chuàng)建鎖文件。

用回之前的例子就是,文件鎖就是當(dāng)文件在寫的時(shí)候,阻止其他的需要寫或者要讀文件的進(jìn)程來操作這個(gè)文件。

二、創(chuàng)建鎖文件

創(chuàng)建一個(gè)鎖文件是非常簡單的,我們可以使用open系統(tǒng)調(diào)用來創(chuàng)建一個(gè)鎖文件,在調(diào)用open時(shí)oflags參數(shù)要增加參數(shù)O_CREAT和O_EXCL標(biāo)志,如file_desc = open("/tmp/LCK.test", O_RDWR|O_CREAT|O_EXCL, 0444);就可以創(chuàng)建一個(gè)鎖文件/tmp/LCK.test。O_CREAT|O_EXCL,可以確保調(diào)用者可以創(chuàng)建出文件,使用這個(gè)模式可以防止兩個(gè)程序同時(shí)創(chuàng)建同一個(gè)文件,如果文件(/tmp/LCK.test)已經(jīng)存在,則open調(diào)用就會(huì)失敗,返回-1。

如果一個(gè)程序在它執(zhí)行時(shí),只需要獨(dú)占某個(gè)資源一段很短的時(shí)間,這個(gè)時(shí)間段(或代碼區(qū))通常被叫做臨界區(qū),我們需要在進(jìn)入臨界區(qū)之前使用open系統(tǒng)調(diào)用創(chuàng)建鎖文件,然后在退出臨界區(qū)時(shí)用unlink系統(tǒng)調(diào)用刪除這個(gè)鎖文件。

注意:鎖文件只是充當(dāng)一個(gè)指示器的角色,程序間需要通過相互協(xié)作來使用它們,也就是說鎖文件只是建議鎖,而不是強(qiáng)制鎖,并不會(huì)真正阻止你讀寫文件中的數(shù)據(jù)。

可以看看下面的例子:源文件文件名為filelock1.c,代碼如下:

#include unistd.h #include stdlib.h #include stdio.h #include fcntl.h #include errno.h int main() { const char *lock_file = "/tmp/LCK.test1"; int n_fd = -1; int n_tries = 10; while(n_tries--) { //創(chuàng)建鎖文件 n_fd = open(lock_file, O_RDWR|O_CREAT|O_EXCL, 0444); if(n_fd == -1) { //創(chuàng)建失敗 printf("%d - Lock already present ", getpid()); sleep(2); } else { //創(chuàng)建成功 printf("%d - I have exclusive access ", getpid()); sleep(1); close(n_fd); //刪除鎖文件,釋放鎖 unlink(lock_file); sleep(2); } } return 0; }

同時(shí)運(yùn)行同一個(gè)程序的兩個(gè)實(shí)例,運(yùn)行結(jié)果為:

?

從運(yùn)行的結(jié)果可以看出兩個(gè)程序交叉地對對文件進(jìn)行鎖定,但是真實(shí)的操作卻是,每次調(diào)用open函數(shù)去檢查/tmp/LCK.test1這個(gè)文件是否存在,如果存在open調(diào)用就失敗,顯示有進(jìn)程已經(jīng)把這個(gè)文件鎖定了,如果這個(gè)文件不存在,就創(chuàng)建這個(gè)文件,并顯示許可信息。但是這種做法有一定的缺憾,我們可以看到文件/tmp/LCK.test1被創(chuàng)建了很多次,也被unlink刪除了很多次,也就是說我們不能使用已經(jīng)事先有數(shù)據(jù)的文件作為這種鎖文件,因?yàn)槿绻募呀?jīng)存在,則open調(diào)用總是失敗。

給我的感覺是,這更像是一種對進(jìn)程工作的協(xié)調(diào)性安排,更像是二進(jìn)制信號量的作用,文件存在為0,不存在為1,而不是真正的文件鎖定。

三、區(qū)域鎖定

我們還有一個(gè)問題,就是如果同一個(gè)文件有多個(gè)進(jìn)程需要對它進(jìn)行讀寫,而一個(gè)文件同一時(shí)間只能被一個(gè)進(jìn)程進(jìn)行寫操作,但是多個(gè)進(jìn)程讀寫的區(qū)域互不相關(guān),如果總是要等一個(gè)進(jìn)程寫完其他的進(jìn)程才能對其進(jìn)行讀寫,效率又太低,那么是否可以讓多個(gè)進(jìn)程同時(shí)對文件進(jìn)行讀寫以提高數(shù)據(jù)讀寫的效率呢?

為了解決上面提到的問題,和出現(xiàn)在第二點(diǎn)中的問題,即不能把文件鎖定到指定的已存在的數(shù)據(jù)文件上的問題,我們提出了一種新的解決方案,就是區(qū)域鎖定。

簡單點(diǎn)來說,區(qū)域鎖定就是,文件中的某個(gè)部分被鎖定了,但其他程序可以訪問這個(gè)文件中的其他部分。

然而,區(qū)域鎖定的創(chuàng)建和使用都比上面說的文件鎖定復(fù)雜很多。

1、創(chuàng)建區(qū)域鎖定

在Linux上為實(shí)現(xiàn)這一功能,我們可以使用fcntl系統(tǒng)調(diào)用和lockf調(diào)用,但是下面以fcntl系統(tǒng)調(diào)用來講解區(qū)域鎖定的創(chuàng)建。

fctnl的函數(shù)原理為:

int fctnl(int fildes, int command, ...);

它對一個(gè)打開的文件描述進(jìn)行操作,并能根據(jù)command參數(shù)的設(shè)置完成不同的任務(wù),它有三個(gè)可選的任務(wù):F_GETLK,F(xiàn)_SETLK,F_SETLKW,至于這三個(gè)參數(shù)的意義下面再詳述。而當(dāng)使用這些命令時(shí),fcntl的第三個(gè)參數(shù)必須是一個(gè)指向flock結(jié)構(gòu)的指針,所以在實(shí)際應(yīng)用中,fctnl的函數(shù)原型一般為:int fctnl(int fildes, int command, struct flock *flock_st);

2、flock結(jié)構(gòu)

準(zhǔn)確來說,flock結(jié)構(gòu)依賴具體的實(shí)現(xiàn),但是它至少包括下面的成員:

short l_type;文件鎖的類型,對應(yīng)于F_RDLCK(讀鎖,也叫共享鎖),F(xiàn)_UNLCK(解鎖,也叫清除鎖),F(xiàn)_WRLCK(寫鎖,也叫獨(dú)占鎖)中的一個(gè)。

short l_whence;從文件的哪個(gè)相對位置開始計(jì)算,對應(yīng)于SEEK_SET(文件頭),SEEK_CUR(當(dāng)前位置),SEEK_END(文件尾)中的一個(gè)。

off_t l_start;從l_whence開始的第l_start個(gè)字節(jié)開始計(jì)算。

off_t l_len;鎖定的區(qū)域的長度。

pid_t l_pid;用來記錄參持有鎖的進(jìn)程。

成員l_whence、l_start和l_len定義了一個(gè)文件中的一個(gè)區(qū)域,即一個(gè)連續(xù)的字節(jié)集合,例如:

struct flock region;

region.l_whence = SEEK_SET;

region.l_start = 10;

region.l_len = 20;

則表示fcntl函數(shù)操作鎖定的區(qū)域?yàn)槲募^開始的第10到29個(gè)字節(jié)之間的這20個(gè)字節(jié)。

3、文件鎖的類型

從上面的flock的成員l_type的取值我們可以知道,文件鎖的類型主要有三種,這里對他們進(jìn)行詳細(xì)的解說。

F_RDLCK:

從它的名字我們就可以知道,它是一個(gè)讀鎖,也叫共享鎖。許多不同的進(jìn)程可以擁有文件同一(或重疊)區(qū)域上的讀(共享)鎖。而且只要任一進(jìn)程擁有一把讀(共享)鎖,那么就沒有進(jìn)程可以再獲得該區(qū)域上的寫(獨(dú)占)鎖。為了獲得一把共享鎖,文件必須以“讀”或“讀/寫”方式打開。

簡單點(diǎn)來說就是,當(dāng)一個(gè)進(jìn)程在讀文件中的數(shù)據(jù)時(shí),文件中的數(shù)據(jù)不能被改變或改寫,這是為了防止數(shù)據(jù)被改變而使讀數(shù)據(jù)的程序讀取到錯(cuò)亂的數(shù)據(jù),而文件中的同一個(gè)區(qū)域能被多個(gè)進(jìn)程同時(shí)讀取,這是容易理解的,因?yàn)樽x不會(huì)破壞數(shù)據(jù),或者說讀操作不會(huì)改變文件的數(shù)據(jù)。

F_WRLCK:

從它的名字,我們就可以知道,它是一個(gè)寫鎖,也叫獨(dú)占鎖。只有一個(gè)進(jìn)程可以在文件中的任一特定區(qū)域擁有一把寫(獨(dú)占)鎖。一旦一個(gè)進(jìn)程擁有了這樣一把鎖,任何其他進(jìn)程都無法在該區(qū)域上獲得任何類型的鎖。為了獲得一把寫(獨(dú)占)鎖,文件也必須以“讀”或“讀/寫”方式打開。

簡單點(diǎn)來說,就是一個(gè)文件同一區(qū)域(或重疊)區(qū)域進(jìn)在同一時(shí)間,只能有一個(gè)進(jìn)程能對其進(jìn)行寫操作,并且在寫操作進(jìn)行期間,其他的進(jìn)程不能對該區(qū)域進(jìn)行讀取數(shù)據(jù)。這個(gè)要求是顯然易見的,因?yàn)槿绻麅蓚€(gè)進(jìn)程同時(shí)對一個(gè)文件進(jìn)行寫操作,就會(huì)使文件的內(nèi)容錯(cuò)亂起來,而由于寫時(shí)會(huì)改變文件中的數(shù)據(jù),所以它也不允許其他進(jìn)程對文件的數(shù)據(jù)進(jìn)行讀取和刪除文件等操作。

F_UNLCK:

從它的名字就可以知道,它用于把一個(gè)鎖定的區(qū)域解鎖。

4、不同的command的意義

在前面說到fcntl函數(shù)的command參數(shù)時(shí),說了三個(gè)命令選項(xiàng),這里將對它們進(jìn)行詳細(xì)的解說。

F_GETLK命令,它用于獲取fildes(fcntl的第一個(gè)參數(shù))打開的文件的鎖信息,它不會(huì)嘗試去鎖定文件,調(diào)用進(jìn)程可以把自己想創(chuàng)建的鎖類型信息傳遞給fcntl,函數(shù)調(diào)用就會(huì)返回將會(huì)阻止獲取鎖的任何信息,即它可以測試你想創(chuàng)建的鎖是否能成功被創(chuàng)建。fcntl調(diào)用成功時(shí),返回非-1,如果鎖請求可以成功執(zhí)行,flock結(jié)構(gòu)將保持不變,如果鎖請求被阻止,fcntl會(huì)用相關(guān)的信息覆蓋flock結(jié)構(gòu)。失敗時(shí)返回-1。

所以,如果調(diào)用成功,調(diào)用程序則可以通過檢查flock結(jié)構(gòu)的內(nèi)容來判斷其是否被修改過,來檢查鎖請求能否被成功執(zhí)行,而又因?yàn)閘_pid的值會(huì)被設(shè)置成擁有鎖的進(jìn)程的標(biāo)識(shí)符,所以大多數(shù)情況下,可以通過檢查這個(gè)字段是否發(fā)生變化來判斷flock結(jié)構(gòu)是否被修改過。

使用F_GETLK的fcntl函數(shù)調(diào)用后會(huì)立即返回。

舉個(gè)例子來說,例如,有一個(gè)flock結(jié)構(gòu)的變量,flock_st,flock_st.l_pid = -1,文件的第10~29個(gè)字節(jié)已經(jīng)存在一個(gè)讀鎖,文件的第40~49個(gè)字節(jié)中已經(jīng)存在一個(gè)寫鎖,則調(diào)用fcntl時(shí),如果用F_GETLK命令,來測試在第10~29個(gè)字節(jié)中是否可以創(chuàng)建一個(gè)讀鎖,因?yàn)檫@個(gè)鎖可以被創(chuàng)建,所以,fcntl返回非-1,同時(shí),flock結(jié)構(gòu)的內(nèi)容也不會(huì)改變,flock_st.l_pid = -1。而如果我們測試第40~49個(gè)字節(jié)中是否可以創(chuàng)建一個(gè)寫鎖時(shí),由于這個(gè)區(qū)域已經(jīng)存在一個(gè)寫鎖,測試失敗,但是fcntl還是會(huì)返回非-1,只是flock結(jié)構(gòu)會(huì)被這個(gè)區(qū)域相關(guān)的鎖的信息覆蓋了,flock_st.l_pid為擁有這個(gè)寫鎖的進(jìn)程的進(jìn)程標(biāo)識(shí)符。

F_SETLK命令,這個(gè)命令試圖對fildes指向的文件的某個(gè)區(qū)域加鎖或解鎖,它的功能根據(jù)flock結(jié)構(gòu)的l_type的值而定。而對于這個(gè)命令來說,flock結(jié)構(gòu)的l_pid字段是沒有意義的。如果加鎖成功,返回非-1,如果失敗,則返回-1。使用F_SETLK的fcntl函數(shù)調(diào)用后會(huì)立即返回。

F_SETLKW命令,這個(gè)命令與前面的F_SETLK,命令作用相同,但不同的是,它在無法獲取鎖時(shí),即測試不能加鎖時(shí),會(huì)一直等待直到可以被加鎖為止。

5、例子

看了這么多的說明,可能你已經(jīng)很亂了,就用下面的例子來整清你的思想吧。

源文件名為filelock2.c,用于創(chuàng)建數(shù)據(jù)文件,并將文件區(qū)域加鎖,代碼如下:

#include unistd.h #include stdlib.h #include stdio.h #include fcntl.h int main() { const char *test_file = "test_lock.txt"; int file_desc = -1; int byte_count = 0; char *byte_to_write = "A"; struct flock region_1; struct flock region_2; int res = 0; //打開一個(gè)文件描述符 file_desc = open(test_file, O_RDWR|O_CREAT, 0666); if(!file_desc) { fprintf(stderr, "Unable to open %s for read/write ", test_file); exit(EXIT_FAILURE); } //給文件添加100個(gè)‘A’字符的數(shù)據(jù) for(byte_count = 0; byte_count 100; ++byte_count) { write(file_desc, byte_to_write, 1); } //在文件的第10~29字節(jié)設(shè)置讀鎖(共享鎖) region_1.l_type = F_RDLCK; region_1.l_whence = SEEK_SET; region_1.l_start = 10; region_1.l_len = 20; //在文件的40~49字節(jié)設(shè)置寫鎖(獨(dú)占鎖) region_2.l_type = F_WRLCK; region_2.l_whence = SEEK_SET; region_2.l_start = 40; region_2.l_len = 10; printf("Process %d locking file ", getpid()); //鎖定文件 res = fcntl(file_desc, F_SETLK, ?ion_1); if(res == -1) { fprintf(stderr, "Failed to lock region 1 "); } res = fcntl(file_desc, F_SETLK, ?ion_2); if(res == -1) { fprintf(stderr, "Failed to lock region 2 "); } //讓程序休眠一分鐘,用于測試 sleep(60); printf("Process %d closing file ", getpid()); close(file_desc); exit(EXIT_SUCCESS); }

下面的源文件filelock3.c用于測試上一個(gè)文件設(shè)置的鎖,測試可否對兩個(gè)區(qū)域都加上一個(gè)讀鎖,代碼如下:

#include unistd.h #include stdlib.h #include stdio.h #include fcntl.h int main() { const char *test_file = "test_lock.txt"; int file_desc = -1; int byte_count = 0; char *byte_to_write = "A"; struct flock region_1; struct flock region_2; int res = 0; //打開數(shù)據(jù)文件 file_desc = open(test_file, O_RDWR|O_CREAT, 0666); if(!file_desc) { fprintf(stderr, "Unable to open %s for read/write ", test_file); exit(EXIT_FAILURE); } //設(shè)置區(qū)域1的鎖類型 struct flock region_test1; region_test1.l_type = F_RDLCK; region_test1.l_whence = SEEK_SET; region_test1.l_start = 10; region_test1.l_len = 20; region_test1.l_pid = -1; //設(shè)置區(qū)域2的鎖類型 struct flock region_test2; region_test2.l_type = F_RDLCK; region_test2.l_whence = SEEK_SET; region_test2.l_start = 40; region_test2.l_len = 10; region_test2.l_pid = -1; //

三、解空鎖問題

如果我要給在本進(jìn)程中沒有加鎖的區(qū)域解鎖會(huì)發(fā)生什么事情呢?而如果這個(gè)區(qū)域中其他的進(jìn)程有對其進(jìn)行加鎖又會(huì)發(fā)生什么情況呢?

如果一個(gè)進(jìn)程實(shí)際并未對一個(gè)區(qū)域進(jìn)行鎖定,而調(diào)用解鎖操作也會(huì)成功,但是它并不能解其他的進(jìn)程加在同一區(qū)域上的鎖。也可以說解鎖請求最終的結(jié)果取決于這個(gè)進(jìn)程在文件中設(shè)置的任何鎖,沒有加鎖,但對其進(jìn)行解鎖得到的還是沒有加鎖的狀態(tài)。

linux如何遠(yuǎn)程解鎖桌面

方法如下:通過xshell或putty直接調(diào)用程序窗口(通過ssh命令行連接)。

linux用戶登錄三次被鎖了,這設(shè)置在哪配置的.

鎖用戶的設(shè)定

/etc/pam.d/下包含各種認(rèn)證程序或服務(wù)的配置文件。編輯這些可限制認(rèn)證失敗次數(shù),當(dāng)失敗次數(shù)超過指定值時(shí)用戶會(huì)被鎖住。

在此,以run

level為3的時(shí)候,多次登錄登錄失敗即鎖用戶為例:

在/etc/pam.d/login文件中追加如下兩行:

auth

required

/lib/security/pam_tally.so

onerr=fail

no_magic_root

account

required

/lib/security/pam_tally.so

deny=3

no_magic_root

reset

deny=3

設(shè)置登錄失敗3次就將用戶鎖住,該值可任意設(shè)定。

如下為全文見設(shè)定例:

auth

required

pam_securetty.so

auth

required

pam_stack.so

service=system-auth

auth

required

pam_nologin.so

auth

required

pam_tally.so

onerr=fail

no_magic_root

account

required

pam_stack.so

service=system-auth

account

required

pam_tally.so

deny=3

no_magic_root

reset

password

required

pam_stack.so

service=system-auth

session

required

pam_stack.so

service=system-auth

session

optional

pam_console.so

這樣當(dāng)用戶在run

level=3的情況下登錄時(shí),/var/log/faillog會(huì)自動(dòng)生成,裏面記錄用戶登錄失敗次數(shù)等信息。

可用"faillog

-u

用戶名"命令來查看。

當(dāng)用戶登錄成功時(shí),以前的登錄失敗信息會(huì)重置。

2)用戶的解鎖

用戶因多次登錄失敗而被鎖的情況下,可用faillog命令來解鎖。具體如下:

faillog

-u

用戶名

-r

此命令實(shí)行后,faillog里記錄的失敗信息即被重置,用戶又可用了。

關(guān)於faillog的其他命令。。參見man

failog。

二:手動(dòng)鎖定用戶禁止使用

可以用usermod命令來鎖定用戶密碼,使密碼無效,該用戶名將不能使用。

如:

usermod

-L

用戶名

解鎖命令:usermod

-U

用戶名

......

要想強(qiáng)制用戶下次登錄更改密碼就使用chage

-d

username

強(qiáng)制把上次更改密碼的日期歸零.

定義用戶密碼變更天數(shù)在/etc/shadow

這個(gè)文件中定義

對新建的用戶在/etc/login.defs這個(gè)文件中定義

3-13 Linux中用戶創(chuàng)建密碼 --- passwd

passwd 用戶名:添加 / 修改用戶密碼。(所有人都可以通過該命令修改自己的密碼,root 可以修改所有人密碼)。

-l:鎖住該賬號,在/etc/shadow 中存放密碼的位置加上 !號。(僅 root 用戶可以設(shè)置)。

-u:解鎖。(僅 root 用戶可以設(shè)置)。

-S:顯示賬號的密碼參數(shù)。(僅 root 用戶可以設(shè)置)

-d:清空密碼(僅 root 用戶可以設(shè)置)。

-n:輸入天數(shù),設(shè)置多久可以不修改密碼。(僅 root 用戶可以設(shè)置)

-x:輸入天數(shù),設(shè)置多久內(nèi)必須修改密碼。(僅 root 用戶可以設(shè)置)

-w:輸入天數(shù),設(shè)置密碼過期前警告天數(shù)。(僅 root 用戶可以設(shè)置)

-i:輸入天數(shù),設(shè)置密碼失效天數(shù)。(僅 root 用戶可以設(shè)置)

1、passwd 用戶名:添加 / 修改用戶密碼。

root 用戶為 user9 用戶創(chuàng)建初始密碼:123。此時(shí)會(huì)有 BAD PASSWORD 密碼過于簡單的提示。由于 root 的權(quán)限最大,它可以無視密碼設(shè)置規(guī)則。

Xshell 新建一個(gè)賬戶 user9,登錄賬戶 user9,密碼123進(jìn)入系統(tǒng)。

user9 用戶登錄系統(tǒng)后,修改密碼。

普通用戶為自己修改密碼,只需登錄系統(tǒng)后輸入 passwd 命令就可以進(jìn)行密碼修改。首先,輸入原密碼。然后,輸入一次新密碼,再重新輸入一次新密碼。系統(tǒng)檢驗(yàn)兩次新密碼一致就會(huì)修改成功。此處新密碼:torres999。小寫字母+數(shù)字的 9 位密碼。

需要注意的是,普通用戶修改密碼不能像 root ,root可以隨意設(shè)置密碼,就算密碼過于簡單也可以設(shè)置成功。普通用戶設(shè)置密碼,要遵循密碼規(guī)范。但是普通用戶的密碼往往收到一定的規(guī)則限制,導(dǎo)致修改密碼時(shí)經(jīng)常會(huì)遇到以下報(bào)錯(cuò):

無效的密碼:密碼字典檢查失敗 - 這太簡單化了。純數(shù)字輸入密碼,例如:01234567、12345678、87654321、76543210。往往會(huì)給出過于簡單的提示。

無效的密碼: 密碼少于 8 個(gè)字符。輸入的密碼位數(shù)不足8位,提示不符合密碼長度的要求。

無效的密碼: 密碼包含用戶名在某些地方。如:用戶名是 user9,輸入的密碼包含 user 字符,會(huì)被提示密碼含有用戶名的提示。?

無效的密碼: 與舊密碼過于相似。如:曾經(jīng)使用 apple999 的密碼。重新設(shè)置密碼輸入,apple888、applehello、appleteam,含有apple單詞的新密碼會(huì)被檢測與舊密碼過于相似。

所以,普通用戶修改密碼要遵從密碼規(guī)則。建議通過大小寫、特殊字符 和 數(shù)字組成大于8位的密碼組合。

-l:鎖住該賬號,在/etc/shadow 中存放密碼的位置加上 !號。

-u:解鎖。

例:

1、首先,用 root 用戶為 user9 普通用戶設(shè)置 123 的密碼。?

2、Xshell 新建一個(gè)連接 user9 ,輸入用戶名 user9 和密碼 123 可以登錄。

3、root 用 passwd -l? 鎖住了 user9 。

查看 /etc/shadow 文件,可以看到 user9 用戶密碼欄前面加上了 !感嘆號,意思就是上鎖的意思。

4、重新再登錄 user9 用戶,在輸入密碼 123 后,系統(tǒng)提示 ‘服務(wù)器拒絕了密碼’,不能登錄。

5、root 用戶用 passwd -u? 解鎖 user9 。

6、解鎖后的 user9 能夠登錄系統(tǒng)。

查看 /etc/shadow 文件,可以看到 user9 用戶密碼欄前面沒有了 !感嘆號,意思就是密碼狀態(tài)正常,可以登錄。

tips:鎖住用戶 和 解鎖用戶,只有 root 有權(quán)限操作,普通用戶沒有權(quán)限做此操作。

-S:顯示賬號的密碼參數(shù)。

例:

1、紅色 user9:用戶名。

2、黃色 PS:密碼設(shè)置。(LK = 密碼鎖定,NP = 無密碼)。

3、藍(lán)色 2021-05-17:上次修改密碼的時(shí)間。

4、綠色 0:密碼修改間隔的時(shí)間(0 隨時(shí)修改)。

5、白色 99999:密碼有效期。

6、紅色 7:臨近密碼過期前7天開始向用戶發(fā)出警告。

7、黃色 -1:密碼失效設(shè)置(-1 不失效)。

8、藍(lán)色?Password set, SHA512 crypt:已使用密碼。

passwd -l 鎖定密碼的用戶 passwd -S 可以通過兩個(gè)參數(shù)查看到情況 。

1、黃色 LK:密碼鎖定。

2、藍(lán)色?Password locked:提示用戶密碼已被鎖。

passwd -d 清空密碼。模仿用戶沒有密碼的情況。通過 passwd -S 兩個(gè)參數(shù)查看到情況 。(清空密碼后,需要 root 為普通用戶重設(shè)密碼才能正式登陸系統(tǒng)。)

1、黃色 NP:無密碼,密碼為空。

2、藍(lán)色?Empty password:提示需要設(shè)置密碼。

-n:輸入天數(shù),設(shè)置多久不能修改密碼。

例:

1、紅色下劃線:首先 passwd -S 查看 user9 用戶的密碼信息。此時(shí)可修改密碼參數(shù)是 0 ,即隨時(shí)可以修改密碼。

2、黃色下劃線:passwd -n 10 設(shè)置 user9 用戶10天內(nèi)不能修改密碼。設(shè)置完成后 passwd -S 可修改密碼參數(shù)改為了 10。

3、藍(lán)色下劃線:登錄 user9 賬戶。user9 修改 passwd 修改密碼。系統(tǒng)提示 You must wait longer to change your password(你必須等待更長時(shí)間才能更改密碼)。此時(shí),user9 如需立即修改密碼,必須通過 root 重新設(shè)置可修改密碼參數(shù)為 0 。

-x:輸入天數(shù),設(shè)置多久內(nèi)必須修改密碼。

例:

1、紅色下劃線:首先 passwd -S 查看 user9 用戶的密碼信息。此時(shí)密碼可用最大參數(shù)是 99999。

2、黃色下劃線:passwd -x 10 設(shè)置 user9 密碼可用最大參數(shù)為 10。設(shè)置完成后 passwd -S?密碼可用最大參數(shù)改為了 10。即 10 天后強(qiáng)制修改密碼。

-w:輸入天數(shù),設(shè)置密碼過期前警告天數(shù)。

例:

1、紅色下劃線:首先 passwd -S 查看 user9 用戶的密碼信息。此時(shí)密碼過期前警告天數(shù)是 7。

2、黃色下劃線:passwd -w 2 設(shè)置 user9 密碼過期前警告天數(shù)為 2。設(shè)置完成后 passwd -S?密碼過期前警告天數(shù)改為了 2。即 密碼過期前 2 天系統(tǒng)會(huì)發(fā)出警告,提示用戶需要修改密碼。

-i:輸入天數(shù),設(shè)置密碼失效天數(shù)。如果一個(gè)密碼已過期至失效的天數(shù),那么此帳號將不可用。

例:

1、紅色下劃線:首先 passwd -S 查看 user9 用戶的密碼信息。此時(shí)密碼失效天數(shù)是?-1(密碼不失效)。

2、黃色下劃線:passwd -i 2 設(shè)置 user9?密碼失效天數(shù)為 2。設(shè)置完成后 passwd -S?密碼失效天數(shù)改為了 2。即 密碼過期后 2 天此帳號將不可用。

網(wǎng)站名稱:linux解鎖命令 linux解密
分享地址:http://jinyejixie.com/article30/ddogeso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站排名面包屑導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、App設(shè)計(jì)、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
洛阳市| 上高县| 正定县| 福贡县| 绥棱县| 固镇县| 江川县| 德昌县| 郑州市| 滁州市| 南宫市| 中山市| 丰县| 东辽县| 宜兰市| 瓮安县| 桐城市| 绿春县| 宁陵县| 广西| 濉溪县| 弥勒县| 余江县| 凤冈县| 营口市| 太湖县| 云霄县| 甘洛县| 庄浪县| 惠水县| 揭西县| 忻城县| 荣昌县| 射洪县| 项城市| 祁门县| 沛县| 安达市| 东乡族自治县| 郓城县| 柏乡县|