**passwd** הוא כלי במערכות יוניקס ומערכות הפעלה דמויות יוניקס המשמש לשינוי סיסמת משתמש.
הסיסמה הנקלטת מהמשתמש מועברת בפונקציית גיבוב, כאשר רק הפלט של הפונקציה נשמר מטעמי אבטחת מידע. כאשר משתמש מבקש להתאמת, מועברת הסיסמה הנקלטת בתהליך דומה, תוך השוואה למידע השמור במערכת.

הפקודה passwd משמשת לשינוי סיסמאות מקומיות, אך מאפשרת גם לשנות סיסמה במערכות אימות מבוזרות, כגון NIS, קרברוס, ו-LDAP.

היסטוריה
--------

בעבר היה הכרחי להשתמש בפקודות שונות על מנת לשנות סיסמאות בשיטות אימות שונות. לדוגמה, הפקודה לשינוי סיסמה במערכות NIS הייתה `yppasswd`. דרך זו גרמה למשתמש להיות מודע לשיטת האימות, והביאה לבזבוז קוד. כיום, ברוב המערכות קיימת פקודת passwd אחידה, וביצוע השינוי והחלפת הסיסמה מטופל בצורה שקופה למשתמש באמצעות מודולי אימות הניתנים לחיבור (PAM).

פונקציית הגיבוב המשמשת לשמירת הסיסמאות מוכתבת על ידי התצורה של מודול `pam_unix.so`. כברירת מחדל נעשה שימוש בפוקנציה MD5, אך כיום המודול מכיל גם פונקציות גיבוב הנחשבות חזקות יותר, כגון Blowfish, SHA256 וSHA512.

קבצים
-----

### /etc/passwd

הקובץ `**/etc/passwd**` הוא מסד נתונים טקסטואלי המכיל מידע על משתמשים הרשאים להתחבר למערכת או ששייכים אליהם תהליכים. ברוב מערכות ההפעלה הקובץ משמש דרך אחת מני רבות לאחסון מידע על המשתמשים במערכת, המוגדרת ב-Name Service Switch. במערכות יוניקס מודרניות המידע הרגיש על הסיסמאות נשמר בקובץ או מסד נתונים נפרד.

שם הקובץ לקוח משימושו המקורי, כקובץ המשמש לאימות סיסמאות. לרוב, לקובץ הרשאות מערכת קבצים המאפשרות לכל משתמש לקרוא אותו, אך רק למשתמש-על לשנותו.

הקובץ `/etc/passwd` מכיל רשומה אחת בכל שורה, אשר מייצגת משתמש יחיד. כל רשומה מכילה שבעה שדות המופרדים בנקודתיים. רשומה טיפוסית יכולה להראות כך:

```
jsmith:x:1001:1000:Joe Smith:/home/jsmith:/bin/sh
```

באופן כללי, השדות, בסדר משמאל לימין, הם כדלקמן:

1. שם משתמש
2. מידע המשמש לאימות הסיסמה; ברוב מערכות ההפעלה המודרניות השדה מכיל `x` בלבד, והמידע נשמר בקובץ נפרד. כאשר השדה מכיל `*`, זוהי דרך נפוצה לבטל התחברות למשתמש זה.
3. מזהה משתמש (מספרי)
4. מזהה קבוצה ראשית (מספרי)
5. תיאור
6. מיקום תיקיית בית
7. מעטפת ברירת המחדל

### /etc/shadow

הקובץ `/etc/shadow` נועד להגביר את רמת האבטחה על ידי הפרדת המידע הרגיש על הסיסמאות לקובץ נפרד, אשר רק משתמש-על יכול לקרוא. השימוש בקובץ זה החל בתחילת שנות ה-90. השדות ברשומה בקובץ זה הם כדלקמן:

1. שם משתמש
2. המידע על הסיסמה בפורמט CRYPT, אשר מכיל את מספר פונקציית ההאש, salt, ותוצאת הפונקציה. `!` או `*` מייצגים משתמש נעול. שדה ריק מייצג התחברות ללא סיסמה.
3. זמן שינוי הסיסמה האחרון (בזמן יוניקס)
4. מספר הימים עד שיהיה ניתן לשנות שנית את הסיסמה
5. מספר הימים עד שחובה יהיה לשנות את סיסמה
6. מספר הימים עד להתראה על שינוי סיסמה קרב
7. מספר הימים עד שהמשתמש יחדל לפעול כאשר נדרשת החלפת סיסמה
8. זמן תפוגת המשתמש (בזמן יוניקס)

קישורים חיצוניים
----------------

* `passwd(1)` באתר FreeBSD
* `passwd(1)` בתיעוד מערכת ההפעלה לינוקס

הערות שוליים
------------

1. ↑  42.4. Pluggable Authentication Modules, בתיעוד מערכת ההפעלה CentOS 5.
2. ↑  14.2. Support for SHA-256 and SHA-512 passwords, בתיעוד מערכת ההפעלה פדורה 9.
3. ↑  passwd(5) - password file, בתיעוד מערכת ההפעלה לינוקס.
4. ↑  Understanding /etc/passwd File Format
5. ↑  shadow(5) - shadowed password file, בתיעוד מערכת ההפעלה לינוקס.

| פקודות בסביבת Unix ובמערכות הפעלה דמויות יוניקס |
| --- |
| מערכת קבצים | 
bzip • cat • cd • chmod • chown • chgrp • cksum • cmp • cp • dd • du • df • file • fsck • gzip • ln • ls • mkdir • mount • mv • pwd • rm • rmdir • tar • tee •  tree • touch • umask • zip
 |
| תהליכים | 
at • chroot • cron • htop • kill • killall • nice • pgrep • pkill • ps • pstree • time • top
 |
| סביבת משתמש | 
dig • env • exit • finger • passwd • su • sudo • uptime • talk • uname • w • wall • who • whoami
 |
| עיבוד טקסט | 
awk • basename • cut • diff • ed • ex • head • less • more • paste • sed • sort • strings • tail • tr • uniq • vi • vim • wc • xargs
 |
| מעטפת | 
alias • echo • expr • printf • sleep • test • wait
 |
| רשת | 
ifconfig • inetd • ip • netcat • netstat • nload • nmap • nslookup • ping • rlogin • route • ssh • traceroute
 |
| חיפוש | 
find • grep • locate
 |
| שונות | 
man • bc • cal • date • parted • seq
 |