# /etc/passwd、/etc/shadow 上課講義 ## `/etc/passwd` -  - 不用 sudo 就可以查看 - 每行代表一個帳號 - 有些帳號是為了系統正常運作而存在的,不可以亂刪 - 例如:nobody - 欄位架構 - 使用者名稱 - 密碼 - 使用者 id (uid) - 在 Linux 中,是透過 uid 來辨別使用者 - 使用者名稱只是參考用的 XD - 使用者所在的群組 id (gid) - `cat /etc/group` 可以查看結果是不是對得起來 - 使用者的資訊 - 在 `adduser` 指令中輸入的資訊都會存在這個欄位 - 用 `,` 隔開 -  - 登入後的起始目錄 (家目錄) - 登入後 shell 的路徑 -  ## `/etc/shadow` -  - 要用 sudo 才可以查看 - 欄位架構 - 使用者名稱 - 加密後的密碼 - 上一次密碼變更的天數 - 從 1970 年 1 月 1 日算起的天數 - [Unix Time](https://en.wikipedia.org/wiki/Unix_time) - 密碼最短使用期限 - 兩次變更密碼最短需要間隔多久,單位為天 - 如果此欄位為 0 則表示隨時可更改密碼 - 密碼最長使用期限 - 密碼最多可以使用多久,單位為天 - 如果此欄位是空的則代表關閉此功能 :::info **如果 `密碼最短使用期限` 大於 `密碼最長使用期限`** - 使用者就不能改密碼 - 例如 - `密碼最短使用期限` 設定 100 天 - `密碼最長使用期限` 設定 10 天 - 密碼 `123` 最長可以使用 10 天,但我需要等 100 天才可以改密碼 ::: - 密碼過期前發出警告的期限 - 密碼過期前多久,系統會對使用者發出警告,單位為天 - 如果此欄位是 0 則代表關閉此功能 - 密碼過期後的放寬天數 - 當密碼過期後,使用者還有多久的時間可以登入更改密碼,單位為天 - 如果此欄位是空的則代表關閉此功能 - 帳號過期時間 - 此帳號過期的時間點 - 從 1970 年 1 月 1 日算起的天數 - 如果此欄位是空的則代表關閉此功能 ## 密碼的欄位 - `x`:`/etc/passwd` 中的密碼都顯示為 `x` - 對應到存在 `/etc/shadow` 的密碼 - `!`:此帳號被鎖定,不能用密碼登入 - 用於使用者 - `*`:此帳號被鎖定,不能用密碼登入 - 用於服務 - ` `:沒有密碼 - 如果此時 `passwd` 會直接進入設定密碼的環節 - 有些讀取 `/etc/shadow` 的檔案,可能會因為此欄位是空的,就不提供服務 --- ## 實作 :::danger **注意事項** 要清楚自己下什麼指令,並做好改壞要重裝的決心 ::: - 玩之前先建立一個 user - `sudo adduser <使用者名稱>` - `cat /etc/passwd` - `sudo cat /etc/shadow` ### `/etc/shadow` - 密碼欄位 - 刪掉一個字 - 變成 `*`、`!` - 變成 ` ` ### `/etc/passwd` - 密碼欄位 - 變成 `*`、`!` - 變成 ` ` - uid - 變成 ` ` - 變成別人的 id - 可以到其他使用者的家目錄底下 `touch` 檔案 - `ls -al` 查看 owner - 起始目錄 - 改成不存在的路徑 - 改成 `/etc` - `pwd` 查看當前路徑 - shell 路徑 - 改成不存在的路徑 - 改成 `/bin/false` - 使用者無法登入 - 不會提供任何提示,然後狠狠地把你甩到一邊去 - 改成 `/usr/sbin/nologin` - 使用者無法登入 - 會給你提示,`This account is currently not available.` - 然後狠狠地把你甩到一邊去 - 改成 `/usr/game/sl` - `sudo apt install sl`
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.