在 UNIX/Linux 狀態(tài)下,用戶的密碼如果輸入錯了只能夠再重新輸入一遍。無法刪除掉你輸錯的字符,因為 UNIX/Linux 系統(tǒng)的刪除鍵不像 WINDOWS 那么好使。因為你當輸入刪除鍵時,它往往表示的是刪除鍵的 ASCII 碼(十進制為 8,即:CTRL+H),所以不是特別方便。
創(chuàng)新互聯(lián)專注于網(wǎng)站建設(shè),為客戶提供網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計開發(fā)服務(wù),多年建網(wǎng)站服務(wù)經(jīng)驗,各類網(wǎng)站都可以開發(fā),品牌網(wǎng)站建設(shè),公司官網(wǎng),公司展示網(wǎng)站,網(wǎng)站設(shè)計,建網(wǎng)站費用,建網(wǎng)站多少錢,價格優(yōu)惠,收費合理。
你是不是直接的在終端里面輸入了su
-
user?
如果是的話,問題就出在那個user上面。user在這里是登錄到系統(tǒng)中的具體的用戶的名稱。在實際使用中,是要依據(jù)具體情況來輸入的。不是照辦照抄的。
如果登錄的用戶叫u1,那應該是su
-
u1,如果登錄的是user1,那應該是su
-
user1。不能照抄。除非你哪里那個用于日常應用操作的普通用戶的名稱就是user。
還有,我看到你在user后面還有
passwd。那也是錯誤。不過這個也怪不得你,因為你沒有在命令行下操作的經(jīng)驗。在電腦的語法格式中,以一對尖括號,或者說是以小于號和大于號所包裹的部分表示命令中必須輸入的部分,沒有它這條命令無法執(zhí)行。
說明這個passwd是su
-
user這條指令中必須輸入的部分。passwd實際上是pass
word的縮寫,就是密碼。
你應該這樣:
su
-
user回車
輸入密碼
這個密碼是什么。不一定。不同的發(fā)行版會有不同設(shè)置。有些版本的linux,密碼指的是具有超級管理權(quán)限的root的密碼。有的指的是當前登入系統(tǒng)的普通用戶的密碼。你自己去試一下就知道了。
passwd命令說明
passwd命令用于設(shè)置用戶的認證信息,包括用戶密碼、密碼過期時間等。系統(tǒng)管理者則能用它管理系統(tǒng)用戶的密碼。只有管理者可以指定用戶名稱,一般用戶只能變更自己的密碼。
語法 passwd(選項)(參數(shù))
選項
-d:刪除密碼,僅有系統(tǒng)管理者才能使用;
-f:強制執(zhí)行;
-k:設(shè)置只有在密碼過期失效后,方能更新;
-l:鎖住密碼;
-s:列出密碼的相關(guān)信息,僅有系統(tǒng)管理者才能使用;
-u:解開已上鎖的帳號
參數(shù)
用戶名:需要設(shè)置密碼的用戶名。
與用戶、組賬戶信息相關(guān)的文件
存放用戶信息: /etc/passwd
? ? ? ? ? ? ? ? ? /etc/shadow
存放組信息: ??/etc/group
? ? ? ? ? ? ? ? ? /etc/gshadow
passwd 修改密碼的方法
非系統(tǒng)管理員用戶執(zhí)行passwd只能修改自己的密碼。若新建用戶要為新用戶創(chuàng)建密碼則用如下命令:
passwd用戶名
注意要以root用戶的權(quán)限來創(chuàng)建。
1. ? 系統(tǒng)管理員創(chuàng)建test用戶并修改 test 用戶密碼
2.??? 切換test用戶并修改 test 用戶密碼
非系統(tǒng)管理員用戶只能使用passwd直接修改密碼,且密碼格式必須要符合規(guī)則,否則不能通過。
3.??? 鎖定test用戶不能修改密碼
4.??? 清除test用戶密碼
一、使用工具:python、linux
二、方法步驟:有三種方法
1、 最簡單的方法,但是不安全
raw_input() :
pwd = raw_input('password: ')
print pwd
# password: aaa
# aaa
2、很安全,但是看不到輸入的位數(shù),會讓人覺得有點不習慣,不知道的還以為沒有在輸入
getpass.getpass() :
import getpass
pwd = getpass.getpass('password: ')
print pwd
# password:
# aaaa
3、
msvcrt.getch() :
代碼如下:
import msvcrt, sys
def pwd_input():
chars = []
while True:
newChar = msvcrt.getch()
if newChar in '\r\n':
# 如果是換行,則輸入結(jié)束
print ''
break
elif newChar == '\b':
# 如果是退格,則刪除末尾一位
if chars:
del chars[-1]
sys.stdout.write('\b')
# 刪除一個星號,但是不知道為什么不能執(zhí)行...
else:
chars.append(newChar)
sys.stdout.write('*')
# 顯示為星號
print ''.join(chars)
pwd = pwd_input()
print pwd
# ******
# aaaaaa
三、注意事項:第三種方法解決了第二種方法不能顯示輸入位數(shù)的問題,但是如果按退格鍵(backspace)的話,雖然實際的是退格了,
但控制臺卻沒有顯示相應的退格,比如,當前輸入是:abcd,顯示為:****,然后現(xiàn)在打一個退格鍵,實際
輸入為:abc,而顯示仍為:****。不知道為什么 sys.stdout.write('\b') 這行沒有執(zhí)行,估計是和使用msvcrt.getch()有關(guān)系。感興趣的朋友可以進一步研究一下。