GNU/Linux >> Belajar Linux >  >> Linux

Apakah mungkin membuat skrip untuk menyimpan dan memulihkan izin?

Cara termudah adalah dengan menggunakan alat ACL, bahkan jika Anda tidak benar-benar menggunakan ACL. Cukup panggil getfacl -R . >saved-permissions untuk mencadangkan izin pohon direktori dan setfacl --restore=saved-permissions untuk memulihkannya.

Jika tidak, cara untuk mencadangkan izin adalah dengan find -printf . (GNU diperlukan, tetapi itulah yang Anda miliki di Linux.)

find -depth -printf '%m:%u:%g:%p\0' >saved-permissions

Anda mendapatkan file berisi catatan yang dipisahkan oleh karakter nol; setiap catatan berisi izin numerik, nama pengguna, nama grup, dan nama file untuk satu file. Untuk memulihkan, ulangi catatan dan panggil chmod dan chown . -depth opsi untuk find jika Anda ingin membuat beberapa direktori tidak dapat ditulis (Anda harus menangani isinya terlebih dahulu).

Anda dapat memulihkan izin dengan cuplikan bash ini yang berasal dari cuplikan yang dikontribusikan oleh Daniel Alder:

while IFS=: read -r -d '' mod user group file; do
  chown -- "$user:$group" "$file"
  chmod "$mod" "$file"
done <saved-permissions

Anda dapat menggunakan skrip awk berikut untuk mengaktifkan find output ke dalam beberapa kode shell untuk memulihkan izin.

find -depth -printf '%m:%u:%g:%p\0' |
awk -v RS='\0' -F: '
BEGIN {
    print "#!/bin/sh";
    print "set -e";
    q = "\047";
}
{
    gsub(q, q q "\\" q);
    f = $0;
    sub(/^[^:]*:[^:]*:[^:]*:/, "", f);
    print "chown --", q $2 ":" $3 q, q f q;
    print "chmod", $1, q f q;
}' > restore-permissions.sh

Instal paket ACL terlebih dahulu:

sudo apt-get install acl

Menyimpan secara rekursif izin dan kepemilikan untuk mengajukan:

getfacl -R yourDirectory > permissions.acl

Pulihkan (relatif terhadap jalur saat ini):

setfacl --restore=permissions.acl

Linux
  1. Bagaimana Cara Mendapatkan Alamat Ip Sendiri Dan Menyimpannya Ke Variabel Dalam Script Shell?

  2. Apakah Mungkin Membuat Dan Menggunakan Menu Di Vim (berbasis terminal)?

  3. Simpan Dan Pulihkan Tab Terminal Anda?

  1. Buat pengguna baru dan berikan izin di MySQL

  2. Campuran skrip shell dan python mungkin?

  3. Simpan dan pulihkan terminal saat reboot

  1. Cara Membuat Dan Mengembalikan Cadangan Di cPanel

  2. Cara membuat dan memulihkan cadangan di Plesk

  3. Apakah mungkin membuat folder secara rekursif menggunakan skrip Shell?