Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04

Ξεκίνησε από za√‘ag, 07 Μαρ 2018, 08:40:18 ΜΜ

« προηγούμενο - επόμενο »

za√‘ag

Θέλω να αντιγράψω τα αρχεία/φάκελοι όλων των χρηστών (και του teacher) από την 12.04 στην 16.04 που έβαλα σε άλλον δίσκο. Εννοείται ότι θέλω μαζί με την αντιγραφή να έχουν και τα σωστά δικαιώματα ανάλογα με το όνομα χρήστη
Να πω επίσης ότι τα ονόματα χρηστών στην 16.04 είναι ίδια με την 12.04 απλά υπάρχουν και άλλοι χρήστες που δεν υπάρχουν στην 12.04

Γίνεται με κάποιο script ;;
Αν έχετε απορίες - διευκρινήσεις ρωτήστε ...
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

richard

Και εγώ θα ήθελα ένα σκρπτ. Η δουλειά "με το χέρι" είναι περίπλοκο και εύκολο γίνουν λάθοι.

Έχω να κάνω και εγώ σε μερικά εργαστήρια. Σκέφτηκα τα βήματα ως εξής:

1) Να γίνει την εγκατάσταση 16.04 με ltsp αλλά χωρίς να προσθέσω άλλες χρήστες ακόμα.

2) Να αντιγράψω όλο το /home με rsync -a –progress η να το έχω σε χωριστό διαμέρισμα (partition) η δίσκο.

3) Να αντιγράψω μόνο τις γραμμές τα /etc/shadow και /etc/passwd και /etc/group από το 12.04 στο 16.04 που αναφέρουν τις επιπλέων χρήστες (τα παιδιά.)

4) Εάν όλο δουλεύουν στο 16.04 τότε και μόνο θα προσθέσω και άλλες χρήστες και προγράμματα.

Richard

alkisg

Τα sch-scripts έχουν επιλογή "Εισαγωγή χρηστών από passwd", με την οποία φροντίζουν να ταιριάζουν τα uid/gid των νέων χρηστών με την παλιά εγκατάσταση, και έτσι με απλή αντιγραφή του /home τα δικαιώματα είναι σωστά.

Αν για οποιονδήποτε λόγο τελικά βγουν λάθος, δείτε αυτό: https://alkisg.mysch.gr/steki/index.php?topic=5959.msg68430#msg68430

za√‘ag

Παράθεση από: alkisg στις 12 Μαρ 2018, 09:11:47 ΠΜ
Τα sch-scripts έχουν επιλογή "Εισαγωγή χρηστών από passwd", με την οποία φροντίζουν να ταιριάζουν τα uid/gid των νέων χρηστών με την παλιά εγκατάσταση, και έτσι με απλή αντιγραφή του /home τα δικαιώματα είναι σωστά.

Αν για οποιονδήποτε λόγο τελικά βγουν λάθος, δείτε αυτό: https://alkisg.mysch.gr/steki/index.php?topic=5959.msg68430#msg68430

Όταν λες απλή αντιγραφή του /home ... πώς ακριβώς το εννοείς; ;)
Εννοείται ότι δεν θέλω τον teacher
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

alkisg

Αντιγραφή μπορεί να γίνει είτε από κονσόλα, π.χ.
sudo cp -a /source/home/user1 /source/home/user2 /home/
ή
sudo mv /source/home/user1 /source/home/user2 /home/

είτε γραφικά αν τρέξεις π.χ. sudo caja και κάνεις αντιγραφή/επικόλληση.

za√‘ag

Με κονσόλα καλύτερα (γι' αυτό και σε ρώτησα)

Με κανένα κόλπο λόγω παρόμοιων ονομάτων στα ονόματα χρηστών πχ a1a (a1b κλπ) -01 (έως 12)  (όπως το script που τα φτιάξαμε από το sch-script) μπορούμε να κάνουμε γιατί είναι πολλοί οι χρήστες;


ΥΓ Και κάτι ακόμα .... είναι καλύτερα η δουλειά αυτή να γίνει μέσα απο το 12.04 ή από το 16.04 ???

Σε ευχαριστώ !!!!
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

alkisg

Δεν παίζει ρόλο από πού θα το κάνεις (12.04/16.04), αρκεί φυσικά να μην έχουν κάνει login οι συγκεκριμένοι μαθητές τη στιγμή της αντιγραφής.

Ο πιο απλός τρόπος για να μην μπλέκεις με scripts είναι

Κώδικας: Bash
cd /source/home
echo *
# Η εντολή echo μόλις εμφάνισε όλους τους χρήστες.
# Με το ποντίκι κάνε αντιγραφή-επικόλληση μόνο των ονομάτων που θες, στην παρακάτω εντολή:
sudo cp -a a1a01 a1a02 ... c03b12 /home/

za√‘ag

#7
Τα ονόματα χρηστών στον νέο server είναι ίδια με του παλιού. Μετά από αντιγραφή φακέλων χρηστών από τον 12.04 στον 16.04 (στον νέο server) έκανα το εξής script το οποίο δούλεψε σωστά. Σας το κοινοποιώ όμως ΜΕ ΜΕΓΑΛΗ ΕΠΙΦΥΛΑΞΗ (ας το ελέγξουν όσοι το κατέχουν)

Αυτό που κάνει είναι να δώσει τα σωστά δικαιώματα σύμφωνα με το όνομα του κάθε χρήστη και της ομάδας που ανήκει.

Το script τρέχει στον νέο server

Στην εντολή

group=$(echo $dir| cut -d '-' -f 1,7

δεν έχω καταλάβει το -f 1,7 αλλά το είδα ότι κάνει το σωστό και το έβαλα ... ας το εξηγήσει κάποιος ....


Κώδικας: bash
#!/bin/bash  
# Τα ονόματα των χρηστών είναι της μορφής a1a-01...μέχρι 12 a1b-01... κλπ

cd /home/
    for dir in *; do
         echo "User folder:",$dir
         group=$(echo $dir| cut -d '-' -f 1,7 )  
         echo "User group: ",$group
         sudo chown -hR $dir:$group /home/$dir
    done

exit
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

alkisg

Βαγγέλη αυτό που βρήκες έχει bugs, η εντολή cut κοιτάει το όνομα του φακέλου για να παράγει το group, το οποίο όχι μόνο δεν έχει νόημα αλλά μπορεί να προκαλέσει και προβλήματα.

Χρησιμοποίησε αυτό που παρέθεσα παραπάνω: https://alkisg.mysch.gr/steki/index.php?topic=5959.msg68430#msg68430

za√‘ag

Το δοκίμασα χτες αυτό που παράθεσες αλλά δεν έπαιζε για καποιο λόγο (δεν εμφάνισε τίποτα, ούτε άλλαξε τα δικαιώματα και τις ιδιοκτησίες)
Σήμερα που κάνανε όλοι login δεν υπήρξε κανένα πρόβλημα.
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

alkisg

Μήπως το έκανες ολόκληρο αντιγραφή/επικόλληση;
Γιατί τότε όλες οι εντολές μετά την sudo -i, δεν εκτελέστηκαν καθόλου, αυτές πρέπει να επικολληθούν ξεχωριστά, μετά την sudo...

Τώρα ποιο είναι το αποτέλεσμα της παρακάτω εντολής στον server σου;
Κώδικας: Bash
ls -lha /home


Γιατί αν κατάλαβα καλά, έδωσες δικαιώματα σε όλους τους μαθητές ενός τμήματος να γράφουν στον φάκελο οποιουδήποτε άλλου μαθητή του ίδιου τμήματος...

za√‘ag

«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

alkisg

Για παράδειγμα, η γραμμή:
drwxr-xr-x  14 a1-01   a1      4,0K Μάρ   6 11:37 a1-01

έχει λάθος group, έπρεπε να είναι:
drwxr-xr-x  14 a1-01   a1-01   4,0K Μάρ   6 11:37 a1-01

Δηλαδή τώρα μπορεί ο a1-02 να πάει στο "/home/a1-01/Έγγραφα" του άλλου μαθητή και να γράψει/σβήσει ό,τι θέλει...

za√‘ag

Μισό ....

Χρήστης a1 δεν υπάρχει ... a1-01 υπάρχει

To a1 είναι ομάδα
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

alkisg

Ναι αυτό λέω, έχεις δώσει σε όλα τα μέλη της ομάδα a1 δικαίωμα να γράφουν στους φακέλους όλων των μελών της. Δηλαδή ο a1-01 μπορεί να γράψει στον a1-02 και στον a1-03 και αντίθετα.

Ο χρήστης a1-01 έχει ως βασικό group το a1-01 και ως δευτερεύον group το a1. Και ο φάκελός του πρέπει να έχει group owner το βασικό του, το a1-01, όχι το δευτερεύον του.