Το Στέκι των Πληροφορικών

Γενικά => Τεχνική υποστήριξη => Linux => Μήνυμα ξεκίνησε από: za√‘ag στις 07 Μάρ 2018, 08:40:18 μμ

Τίτλος: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: za√‘ag στις 07 Μάρ 2018, 08:40:18 μμ
Θέλω να αντιγράψω τα αρχεία/φάκελοι όλων των χρηστών (και του teacher) από την 12.04 στην 16.04 που έβαλα σε άλλον δίσκο. Εννοείται ότι θέλω μαζί με την αντιγραφή να έχουν και τα σωστά δικαιώματα ανάλογα με το όνομα χρήστη
Να πω επίσης ότι τα ονόματα χρηστών στην 16.04 είναι ίδια με την 12.04 απλά υπάρχουν και άλλοι χρήστες που δεν υπάρχουν στην 12.04

Γίνεται με κάποιο script ;;
Αν έχετε απορίες - διευκρινήσεις ρωτήστε ...
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: richard στις 11 Μάρ 2018, 01:37:43 μμ
Και εγώ θα ήθελα ένα σκρπτ. Η δουλειά “με το χέρι” είναι περίπλοκο και εύκολο γίνουν λάθοι.

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

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

Αν για οποιονδήποτε λόγο τελικά βγουν λάθος, δείτε αυτό: http://alkisg.mysch.gr/steki/index.php?topic=5959.msg68430#msg68430
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: za√‘ag στις 12 Μάρ 2018, 09:37:15 πμ
Τα sch-scripts έχουν επιλογή "Εισαγωγή χρηστών από passwd", με την οποία φροντίζουν να ταιριάζουν τα uid/gid των νέων χρηστών με την παλιά εγκατάσταση, και έτσι με απλή αντιγραφή του /home τα δικαιώματα είναι σωστά.

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

Όταν λες απλή αντιγραφή του /home ... πώς ακριβώς το εννοείς; ;)
Εννοείται ότι δεν θέλω τον teacher
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: alkisg στις 12 Μάρ 2018, 09:57:38 πμ
Αντιγραφή μπορεί να γίνει είτε από κονσόλα, π.χ.
sudo cp -a /source/home/user1 /source/home/user2 /home/
ή
sudo mv /source/home/user1 /source/home/user2 /home/

είτε γραφικά αν τρέξεις π.χ. sudo caja και κάνεις αντιγραφή/επικόλληση.
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: za√‘ag στις 12 Μάρ 2018, 10:52:51 πμ
Με κονσόλα καλύτερα (γι' αυτό και σε ρώτησα)

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


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

Σε ευχαριστώ !!!!
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: alkisg στις 12 Μάρ 2018, 11:03:21 πμ
Δεν παίζει ρόλο από πού θα το κάνεις (12.04/16.04), αρκεί φυσικά να μην έχουν κάνει login οι συγκεκριμένοι μαθητές τη στιγμή της αντιγραφής.

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

Κώδικας: Bash
  1. cd /source/home
  2. echo *
  3. # Η εντολή echo μόλις εμφάνισε όλους τους χρήστες.
  4. # Με το ποντίκι κάνε αντιγραφή-επικόλληση μόνο των ονομάτων που θες, στην παρακάτω εντολή:
  5. sudo cp -a a1a01 a1a02 ... c03b12 /home/
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: za√‘ag στις 13 Μάρ 2018, 10:24:27 πμ
Τα ονόματα χρηστών στον νέο server είναι ίδια με του παλιού. Μετά από αντιγραφή φακέλων χρηστών από τον 12.04 στον 16.04 (στον νέο server) έκανα το εξής script το οποίο δούλεψε σωστά. Σας το κοινοποιώ όμως ΜΕ ΜΕΓΑΛΗ ΕΠΙΦΥΛΑΞΗ (ας το ελέγξουν όσοι το κατέχουν)

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

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

Στην εντολή

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

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


Κώδικας: Bash
  1. #!/bin/bash  
  2. # Τα ονόματα των χρηστών είναι της μορφής a1a-01...μέχρι 12 a1b-01... κλπ
  3.  
  4. cd /home/
  5.     for dir in *; do
  6.          echo "User folder:",$dir
  7.          group=$(echo $dir| cut -d '-' -f 1,7 )  
  8.          echo "User group: ",$group
  9.          sudo chown -hR $dir:$group /home/$dir
  10.     done
  11.  
  12. exit
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: alkisg στις 13 Μάρ 2018, 10:42:47 πμ
Βαγγέλη αυτό που βρήκες έχει bugs, η εντολή cut κοιτάει το όνομα του φακέλου για να παράγει το group, το οποίο όχι μόνο δεν έχει νόημα αλλά μπορεί να προκαλέσει και προβλήματα.

Χρησιμοποίησε αυτό που παρέθεσα παραπάνω: http://alkisg.mysch.gr/steki/index.php?topic=5959.msg68430#msg68430
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: za√‘ag στις 13 Μάρ 2018, 11:49:28 πμ
Το δοκίμασα χτες αυτό που παράθεσες αλλά δεν έπαιζε για καποιο λόγο (δεν εμφάνισε τίποτα, ούτε άλλαξε τα δικαιώματα και τις ιδιοκτησίες)
Σήμερα που κάνανε όλοι login δεν υπήρξε κανένα πρόβλημα.
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: alkisg στις 13 Μάρ 2018, 12:00:15 μμ
Μήπως το έκανες ολόκληρο αντιγραφή/επικόλληση;
Γιατί τότε όλες οι εντολές μετά την sudo -i, δεν εκτελέστηκαν καθόλου, αυτές πρέπει να επικολληθούν ξεχωριστά, μετά την sudo...

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

Γιατί αν κατάλαβα καλά, έδωσες δικαιώματα σε όλους τους μαθητές ενός τμήματος να γράφουν στον φάκελο οποιουδήποτε άλλου μαθητή του ίδιου τμήματος...
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: za√‘ag στις 13 Μάρ 2018, 12:06:39 μμ
Το επισύναψα ....
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: alkisg στις 13 Μάρ 2018, 12:11:07 μμ
Για παράδειγμα, η γραμμή:
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/Έγγραφα" του άλλου μαθητή και να γράψει/σβήσει ό,τι θέλει...
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: za√‘ag στις 13 Μάρ 2018, 12:18:37 μμ
Μισό ....

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

To a1 είναι ομάδα
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: alkisg στις 13 Μάρ 2018, 12:26:28 μμ
Ναι αυτό λέω, έχεις δώσει σε όλα τα μέλη της ομάδα a1 δικαίωμα να γράφουν στους φακέλους όλων των μελών της. Δηλαδή ο a1-01 μπορεί να γράψει στον a1-02 και στον a1-03 και αντίθετα.

Ο χρήστης a1-01 έχει ως βασικό group το a1-01 και ως δευτερεύον group το a1. Και ο φάκελός του πρέπει να έχει group owner το βασικό του, το a1-01, όχι το δευτερεύον του.
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: za√‘ag στις 13 Μάρ 2018, 12:33:34 μμ
Πάντως σε γραφικό περιβάλλον (κάνω μάθημα με το b3b αυτή την ώρα) δεν αφήνει πχ τον χρήστη b3b-12 να ανοίξει τον /home/b3b-11 (δεν εχει δικαιώματα)

Εν πάσει περιπτώσει να κάνω κάτι να το διορθώσω;
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: za√‘ag στις 13 Μάρ 2018, 12:49:20 μμ
Αν βάλω στο script αυτό:

 sudo chown -hR $dir:$dir /home/$dir

αντί αυτού που είχα ...

 sudo chown -hR $dir:$group /home/$dir

και το ξανατρέξω θα τα κάνει χειρότερα;
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: alkisg στις 13 Μάρ 2018, 04:08:22 μμ
Το ίδιο το /home/username δεν είναι εγγράψιμο (rwxr-x), οι υποφακέλοι του είναι (rwxrwx), π.χ. τα Έγγραφα, η Επιφάνεια εργασίας κλπ.
Αν δεν θες να τρέξεις το σκριπτ που παρέθεσα κάνοντας αντιγραφή επικόλληση μετά την sudo, τότε ναι κάνε αυτό που είπες στην τελευταία απάντηση.
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: za√‘ag στις 13 Μάρ 2018, 05:02:52 μμ
Όμως αυτό που όπως είπες έκανα λάθος δεν θα αλλάξει ... σωστά;

Αν τρέξω το script που προτείνεις θα διορθωθεί το λάθος που προκάλεσα;
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: alkisg στις 13 Μάρ 2018, 06:10:13 μμ
Θα διορθωθεί, αφού με την αλλαγή που έγραψες τελευταία, θα κάνεις chown -R a1-01:a1-01 που είναι το σωστό.
Ναι και στη δεύτερη ερώτηση.
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: za√‘ag στις 13 Μάρ 2018, 06:33:02 μμ
Για πολλοστή φορά σε ευχαριστώ πολύ Άλκη !!

Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: za√‘ag στις 15 Μάρ 2018, 09:03:48 πμ
Το έκανα σήμερα που είχα μάθημα στο σχολείο ...

δηλαδή έτρεξα το:

Κώδικας: Bash
  1. #!/bin/bash  
  2. # Τα ονόματα των χρηστών είναι της μορφής a1a-01...μέχρι 12 a1b-01... κλπ
  3.  
  4.  
  5. cd /home/
  6.     for dir in *; do
  7.          echo "User folder:"$dir
  8.          group=$(echo $dir| cut -d '-' -f 1,7 )
  9.          echo "User group: "$group
  10.          sudo chown -hR $dir:$dir /home/$dir
  11.     done
  12.  
  13. exit
  14.  
και η εντολή ls -lha /home έφτιαξε το lista2.txt (συνημμένο)

ΥΓ ....
1) Έφτιαξα από ένα χρηστη έναν κοινόχρηστο φάκελο με ένα κοινόχρηστο αρχείο ... τα δικαιώματα του αρχείου όπως φαίνονται στον χρήστη είναι στην εικόνα koinoxristo arxeio.png
2) Έβαλα τα παιδιά να αντιγράψουν φάκελο από έναν κοινόχρηστο φάκελο στον προσωπικο τους φάκελο και είδα ότι δεν με αφήνει να δω τα περιεχόμενά του (δεν έχω δικαίωμα)
Τίτλος: Απ: Αντιγραφή αρχείων/δικαιωμάτων χρηστών από 12.04 σε 16.04
Αποστολή από: za√‘ag στις 15 Μάρ 2018, 10:08:59 πμ
Έτρεξα το αρχικό μου script και διόρθωσε το σφάλμα με τον φάκελο που δη,μιούργησαν πριν τα παιδιά .... δηλ μπορώ να τον βλέπω