מדריך זה תרגם ושדרג את המדריך הנמצא ב:
http://www.usalug.org/phpBB2/viewtopic.php?t=109
כדי לראות בשורת הפקודה את הבעלויות וההרשאות, יש לרשום את הפקודה ls -l
חשוב להסביר, שלכל קובץ וספריה יש משתמש שהוא הבעלים ויש קבוצה של משתמשים שלהם הקובץ/ספריה שייכים. הפקודה chown, מאפשרת להחליף את הבעלות על קבצים ומחיצות. כך, הפקודה אשר תשנה את הבעלות על הקובץ filename, ותיתן את הבעלות למשתמש dotan היא:chown dotan filename
אם היינו רוצים להחליף גם את הבעלות של הקבוצה ל users, אז במקום dotan היינו רושמים dotan:users. עכשיו, אם רוצים לשנות את הבעלות באופן גורף לכל הקבצים בספריה files, כך שהבעלות תהיה של המשתמש dotan ושל הקבוצה users, היינו משתמשים בפקודה הבאה:
chown dotan:user files/ -R *
ועכשיו, להרשאות עצמן. ההרשאות מופרדות זו מזו, כך שלמשתמש שהקובץ רשום בבעלותו יש הרשאות נפרדות, גם לקבוצה של המשתמש, וגם לכל שאר המשתמשים.
הפקודה המשמשת לשינוי ההרשאות בתוך שורת הפקודה, היא chmod.
r = Readable
w = writable
x = executable
- = no permission
משתמש | קבוצת המשתמש | אחרים | הפקודה שיש לרשום |
rwx | rwx | rwx | chmod 777 filename |
rwx | rwx | r-x | chmod 775 filename |
rwx | r-x | r-x | chmod 755 filename |
rw- | rw- | r-- | chmod 664 filename |
rw- | r-- | r-- | chmod 644 filename |
כדי לא להצטרך לזכור את המספרים, ובשביל לשנות רק תכונה אחת, ניתן להשתמש באותיות. הפקודה הבאה, למשל, תוסיף (+) הרשאות של קריאה (r) לכל הקבוצות (a). כדי להסיר הרשאות, משתמשים בסימן החיסור (-):
chmod a+r filename
u = User
g = Group
o = Everyone Else(others)
a = all the people in the world
ויש עוד דרך להסתכל על זה. להלן ההרשאות ומשמעותן, רק יש לזכור, שהמשמעות של 0 היא שאין הרשאות לכלום:
400 = read by owner
040 = read by group
004 = read by anybody (other)
200 = write by owner
020 = write by group
002 = write by anybody
100 = execute by owner
010 = execute by group
001 = execute by anybody
ולמעשה, קובץ אשר עושים לו chmod של 7 לאחת התכונות, המשמעות היא שמוסיפים את כל שלושת התכונות, וזאת כי: r=4 w=2 x=1 (4+2+1)=7
כך, קובץ שההרשאות שלו הן rwx rwx rwx יקבל את המספר 777.
--
דותן מזור, מדריך למערכת ההרשאות במערכות גנו/לינוקס, שינוי ההרשאות והתאמה. הסבר.
www.dotanmazor.com
הקובץ rc.firewall הוא קובץ שאמור לעלות עם השירותים הבסיסיים של המחשב, אחרי שעולים שירותי הרשת. הקובץ לא קיים בהפצת לינוקס, אלא יוצרים אותו אם הדבר נחוץ.
הסיבה לשם rc.firewall היא כי זה השם שבו נהוג להשתמש. כל שם אחר גם הוא בסדר.
הפעולות שקובץ זה מבצע הן:
1. יצירת חומת אש מתקדמת, כוללת הסוואת המחשב לחלוטין מהרשת החיצונית.
2. הפיכת המחשב לראוטר. דבר זה שימושי אם יש מספר כרטיסי רשת על המחשב, ורוצים להשתמש במחשב בתור היציאה למספר מחשבים.
הגיבוי הבא, הוא גיבוי מקומי באמצעות תוכנת rsync שמותקנת על כל מערכות היוניקס/לינוקס. גם אם היא איננה מותקנת, הרי שניתן להתקין אותה בקלות רבה. ישנם ברחבי הרשת מדריכים רבים על גיבוי דרך הרשת המקומית, דרך האינטרנט, במגוון פרוטוקולים, ואני מניח שניתן להתאים את קובץ הגיבוי כך שיעבוד גם בדרכים האחרות. להסבר מעולה על דרך העבודה של rsync ועל היכולות השונות שלו.
אחד הדברים היפים בגיבוי הזה, ואולי הדבר היפה ביותר בו, הוא העובדה שהגיבויים המתגלגלים מתבצעים באמצעות יצירת קישורים קשיחים (Hard Links) בין הגיבויים. המשמעות היא, שאם קובץ מסויים לא השתנה מאז הגיבוי האחרון, אז הגיבויים ישתמשו באותו עותק פיזי של הקובץ, וכך הוא תופס מקום רק פעם אחת. למעשה, מדובר רק בהוספת עוד רשומה ל- inode של הקובץ במערכת הקבצים. חשוב לציין בהקשר זה, שבמידה ואמצעי הגיבוי (בדרך כלל הדיסק הקשיח) ייפגם בנקודה מסויימת המאכלסת קובץ משותף שכזה, זה יגרום לפגיעה בקובץ בכל הגיבויים שמשתמשים בו. מצד שני, ברגע שיש בעיה פיזית באמצעי הגיבוי, אז הנתונים של הקובץ משתנים, והגיבוי הבא כבר לא ישתמש בו. לשיקולכם.
הקובץ הבא, יוצר גיבוי של תוכן הספריות שקבועות בשורה SOURCES אל הספריה שקבועה בשורה TARGET. מטרת המספר שבשורה ROTATIONS היא להגדיר את מספר העותקים שאנחנו מבקשים לשמור מהגיבוי. בנוסף, בשורה EXCLUDE_FILE מוגדר קובץ, אשר בו תופיע רשימה של ספריות שאותן אין לגבות.
למשל, אם נרצה לגבות את מחיצת הבית של משתמש בשם rani ואת ספריית ההגדרות של המחשב, אבל בלי לגבות את מחיצת האשפה של rani, ושלא יהיו יותר מ- 2 עותקים של גיבויים אלו יהיו המשתנים:
SOURCES="/home/rani /etc"
TARGET="/home/backups"
ROTATIONS=2
EXCLUDE_FILE="/home/backups/exclude.txt"
כאשר התוכן של הקובץ ששמו exclude.txt יהיה:
/home/rani/.Trash
חשוב לציין, שהקוד המקורי מגיע מכתובת זו, והדבר היחיד ששיניתי זה להחליף בשורה הראשונה את sh אל bash, וזאת בגלל שהפקודה let אינה נמצאת במעטפת sh. ניתן לראות טבלה של השוואה בין פקודות מעטפת, בקישור זה.
#!/bin/bash
# Author: Brice Burgess -
# multi_backup.sh -- backup to a local drive using rsync.
# Uses hard-link rotation to keep multiple backups.
# Directories to backup. Seperate with a space. Exclude trailing slash!
SOURCES="/home/wendy /home/daisy /var/mail"
# Directory to backup to. This is where your backup(s) will be stored. No spaces in names!
# :: NOTICE :: -> Make sure this directory is empty or contains ONLY backups created by
# this script and NOTHING else. Exclude trailing slash!
TARGET="/mnt/usb-harddrive/backup"
# Set the number of backups to keep (greater than 1). Ensure you have adaquate space.
ROTATIONS=3
# Your EXCLUDE_FILE tells rsync what NOT to backup. Leave it unchanged if you want
# to backup all files in your SOURCES. If performing a FULL SYSTEM BACKUP, ie.
# Your SOURCES is set to "/", you will need to make use of EXCLUDE_FILE.
# The file should contain directories and filenames, one per line.
# A good example would be:
# /proc
# /tmp
# *.SOME_KIND_OF_FILE
EXCLUDE_FILE="/path/to/your/exclude_file.txt"
# Comment out the following line to disable verbose output
VERBOSE="-v"
#######################################
########DO_NOT_EDIT_BELOW_THIS_POINT#########
#######################################
# Set name (date) of backup.
BACKUP_DATE="`date +%F_%H-%M`"
if [ ! -x $TARGET ]; then
echo "Backup target does not exist or you don't have permission!"
echo "Exiting..."
exit 2
fi
if [ ! $ROTATIONS -gt 1 ]; then
echo "You must set ROTATIONS to a number greater than 1!"
echo "Exiting..."
exit 2
fi
#### BEGIN ROTATION SECTION ####
BACKUP_NUMBER=1
# incrementor used to determine current number of backups
# list all backups in reverse (newest first) order, set name of oldest backup to $backup
# if the retention number has been reached.
for backup in `ls -dXr $TARGET/*/`; do
if [ $BACKUP_NUMBER -eq 1 ]; then
NEWEST_BACKUP="$backup"
fi
if [ $BACKUP_NUMBER -eq $ROTATIONS ]; then
OLDEST_BACKUP="$backup"
break
fi
let "BACKUP_NUMBER=$BACKUP_NUMBER+1"
done
# Check if $OLDEST_BACKUP has been found. If so, rotate. If not, create new directory for this backup.
if [ $OLDEST_BACKUP ]; then
# Set oldest backup to current one
mv $OLDEST_BACKUP $TARGET/$BACKUP_DATE
else
mkdir $TARGET/$BACKUP_DATE
fi
# Update current backup using hard links from the most recent backup
if [ $NEWEST_BACKUP ]; then
cp -al $NEWEST_BACKUP. $TARGET/$BACKUP_DATE
fi
#### END ROTATION SECTION ####
# Check to see if rotation section created backup destination directory
if [ ! -d $TARGET/$BACKUP_DATE ]; then
echo "Backup destination not available. Make sure you have write permission in TARGET!"
echo "Exiting..."
exit 2
fi
echo "Verifying Sources..."
for source in $SOURCES; do
echo "Checking $source..."
if [ ! -x $source ]; then
echo "Error with $source!"
echo "Directory either does not exist, or you do not have proper permissions."
exit 2
fi
done
if [ -f $EXCLUDE_FILE ]; then
EXCLUDE="--exclude-from=$EXCLUDE_FILE"
fi
echo "Sources verified. Running rsync..."
for source in $SOURCES; do
# Create directories in $TARGET to mimick source directory hiearchy
if [ ! -d $TARGET/$BACKUP_DATE/$source ]; then
mkdir -p $TARGET/$BACKUP_DATE/$source
fi
rsync $VERBOSE --exclude=$TARGET/ $EXCLUDE -a --delete $source/ $TARGET/$BACKUP_DATE/$source/
done
exit 0
דותן מזור, קובץ ליצירת גיבוי מקומי באמצעות פקודת rsync, במערכות גנו/לינוקס.
www.dotanmazor.com