web-dev-qa-db-ja.com

Linuxでファイルのデフォルトの権限を取得する方法

new.txtという権限を持つ-rw-r--r--というファイルがあるが、誰かがchmod 777 new.txtを使用すると、権限が変更されます。次に、以前の権限がわからない場合に、new.txtの元の権限を取得する方法。

4
Abhishek

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

使用するバックアップソリューションによっては、実際のファイルを復元する必要がない場合もあります。ファイルのアクセス許可が含まれているバックアップの内容のディレクトリリストだけで十分な場合があります。

バックアップがない場合は、頭脳の力を使用して、アクセス許可がどうあるべきかを推測する必要があります。 atypeによる のように、ユーザーのumask設定により、ユーザーが作成するファイルまたはディレクトリのデフォルトの権限が決まります。

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

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

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

2
telcoM

デフォルトの権限はumaskによって定義されます。新しく作成されたファイルのデフォルトのパーミッションを見つけたい場合は、それを見るだけです。インストールのアクセス許可を検索するファイルがパッケージの一部である場合は、通常、そのファイルを調べて調べることができます。

0
atype

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

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)が削除になることを意味します。

umask設定で許可されていても、ほとんどのエディターは実行可能ビットが設定されたファイル(バイナリー値001)を作成しないことに注意してください。通常のファイル(実行権限のないファイル)とスクリプト(実行権限のあるファイル)を区別するのは、ユーザーとしてのあなた次第です。

chmod +x new.txt                    # Add execute permission
0
roaima