GNU/Linux >> Linux の 問題 >  >> Linux

アクセス許可を保存および復元するスクリプトを作成することはできますか?

実際に ACL を使用しない場合でも、ACL ツールを使用するのが最も簡単な方法です。 getfacl -R . >saved-permissions を呼び出すだけです ディレクトリツリーと setfacl --restore=saved-permissions のパーミッションをバックアップする それらを復元します。

それ以外の場合、権限をバックアップする方法は find -printf です . (GNU find が必要ですが、それは Linux にあるものです。)

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

null 文字で区切られたレコードを含むファイルを取得します。各レコードには、1 つのファイルの数値権限、ユーザー名、グループ名、およびファイル名が含まれています。復元するには、レコードをループして chmod を呼び出します と chown . -depth find へのオプション 一部のディレクトリを書き込み不可にしたい場合に使用します (最初にその内容を処理する必要があります)。

Daniel Alder によって提供されたスニペットから派生したこの bash スニペットを使用して、アクセス許可を復元できます。

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

次の awk スクリプトを使用して、find を有効にすることができます。 シェル コードに出力して、アクセス許可を復元します。

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

最初に ACL パッケージをインストールします:

sudo apt-get install acl

再帰的に保存 ファイルへのアクセス許可と所有権:

getfacl -R yourDirectory > permissions.acl

復元 (現在のパスに相対):

setfacl --restore=permissions.acl

Linux
  1. 独自のIPアドレスを取得し、シェルスクリプトの変数に保存する方法は?

  2. ターミナルタブを保存して復元しますか?

  3. Pleskでバックアップを作成および復元する方法

  1. 新しいユーザーを作成し、MySQLで権限を付与します

  2. シェルスクリプトを使用して再帰的にフォルダーを作成することは可能ですか?

  3. 混合シェルと python スクリプトは可能ですか?

  1. (ターミナルベースの)Vimでメニューを作成して使用することは可能ですか?

  2. cPanelでバックアップを作成して復元する方法

  3. 再起動時に端末を保存して復元する