Linuxでファイルの基本権限を取得する方法

Linuxでファイルの基本権限を取得する方法

new.txt権限を持つファイルがありますが、-rw-r--r--誰かが使用するとchmod 777 new.txt権限が変更されます。したがって、new.txtの以前の権限がわからない場合は、元の権限をどのように再取得できますか?

答え1

システムは以前のファイル権限履歴を保持しません。バックアップにファイルとそのファイルの元の権限が含まれている場合は、バックアップの内容を一覧表示して元の権限情報を取得できます。

使用するバックアップソリューションによっては、物理ファイルを復元する必要さえない場合があります。ファイル権限を含むバックアップコンテンツのディレクトリのリストだけで十分です。

バックアップがない場合は、脳を使用してどの権限を使用できるかを推論する必要があります。 〜のようにサブタイプ理論、ユーザーumask設定は、ユーザーが作成したすべてのファイルまたはディレクトリに対するデフォルトの権限を決定します。

ほとんどの一般ファイルでは、権限の「開始セット」は666であり、このumask値は特定の権限をマスクするために使用されます。したがって、ユーザーumask値が022であることがわかっている場合、新しいファイルに対する実際のデフォルト権限は666 - 022 = 644または-rw-r--r--

注:許可番号は8進数であり、実際の操作ではブール演算子(666 AND(NOT 022)= 644)を使用します。

ディレクトリと実行可能ファイルの場合、権限の「開始セット」は666ではなく777です。したがって、ユーザーの権限がumask022の場合、新しいディレクトリに対する実際のデフォルト権限は777 - 022 = 755またはdrwxr-xr-x

答え2

ファイルの「元の権限を復元」できません。しかし、あなたができることはそれらをデフォルトに設定することです

touch /tmp/file.$$                  # Create a temporary file with "default" perms
chmod --ref=/tmp/file.$$ new.txt    # "Reset" the file new.txt
rm -f /tmp/file.$$                  # It's always good to tidy up

umaskデフォルト設定はシェル値によって制御されます。私のシステムの現在の設定は次のとおりです。

umask
0022

これは書き込み権限を意味します(値02、バイナリ010)。グループそして他の人はい削除済みファイルまたはディレクトリを作成するとき。

また、設定でこれを許可しても、ほとんどのエディタは実行可能ビットセット(バイナリ値001)を持つファイルを生成しませんumask。ユーザーは通常のファイル(実行権限なし)とスクリプトファイル(実行権限あり)を区別できます。

chmod +x new.txt                    # Add execute permission

答え3

デフォルトの権限はによって定義されますumask。新しく作成されたファイルに対するデフォルトの権限を確認するには、これを表示できます。インストール権限を探すファイルがパッケージの一部である場合は、通常、そのファイルを表示して把握できます。

関連情報