誤って削除しないように、フォルダとそのファイルを読み取り専用にしようとしています。
私は走った
chmod -R 444 myfolder/
ただし、フォルダを右クリックして[プロパティ]> [権限]に移動すると、それでも読み取りと書き込みが表示されます。ファイルを修正してテストもしてみたところ、修正が成功しました。
また、ファイルマネージャのGUIで権限を読み取り専用に変更しようとすると、すぐに読み取りおよび書き込み権限に切り替えられます。
私の考えでは、4は読み取り専用アクセスを意味するということです。そうですか?
編集する:
私の問題は、ドライブをマウントする方法に関連していると思います。これはfstabエントリです。
UUID=6F7C5E910607D747 /media/storage1 ntfs-3g uid=1000,gid=1000,umask=0022,auto,rw 0 0
答え1
ノート
この投稿は、OPがLinuxシステムでのWindowsファイルシステム(NTFS)の使用に関する追加情報を提供する前に公開されました。私の考えでは、彼はローカルのLinuxファイルシステムを使用しているようです。
所有者の読み取り、書き込み、実行可能フラグ、およびグループの読み取り、実行可能フラグを設定する必要があります。私のディレクトリ。このフォルダに入るには実行可能フラグが必要です。これがない場合は、cd myfolder
このグループまたは他のグループに属するユーザーとして行動しようとすると、「許可を拒否」というメッセージが表示されます。
chmod 755 myfolder
グループと他の人にアクセスを許可するか、
chmod 750 myfolder
グループにのみアクセスを許可し、他の人を除外します。
所有権を次に設定根とグループユーザー:
sudo chown root:users myfolder
これで、ルートだけがmyfolderに新しいファイルを作成できるようになりました。sudo touch mytest
新しいファイルには所有権root
とグループがありますroot
。
新しいファイルを強制的にグループをインポートするユーザー、SGIDビットをmyfolderに設定する必要があります。
これは2つの方法で行うことができ、結果は同じです。
sudo chmod +s myfolder
(sgidビットを追加)または
sudo chmod 2755 myfolder
(同じ+ユーザー、グループ、その他)
すると、ls -l
次のように表示されます。
drwsr-sr-x myfolder # last x optional depending on your others setting
sudo touch mytest2
今の場合、mytest2はmyfolder
644権限を持つroot
グループに属しています。users
既存のファイルは次の場所にあります。私のファイル次のように処理されます。
cd myfolder
sudo chown root:users *
sudo chmod 644 *
1 = execute
2 = write
4 = read
リード+ライト=4+2=6
PS:rootはすべてのユーザーまたはユーザーグループに置き換えることができます。
修正する @Rastapopoulosのリクエストに応じた追加の説明
myfolderが次のものであるとします。トム
これにより、chmod -R 444 myfolder/
フォルダをユーザー(tom)、グループ、その他、およびその中のすべてのファイルに対して読み取り専用にするため、トム(ルートを除く)も含め、誰もフォルダに入れることができません。実行可能なロゴ。
トムをするときはまだフォルダに入ることができませんchmod 644 myfolder
。正しい方法は、tomに読み取り、書き込み、および実行可能フラグを設定し、group / otherに読み取り実行可能フラグを設定することです。
(executable flag = 1)
つまり。chmod 755 myfolder
(ファイルではなくマイフォルダの権限のみ設定)
次のファイルの権限のみを変更してください。私のファイルしかし、myfolderの権限の代わりに、次のことを行います。
chmod 444 myfolder/*
ただし、所有者/ Tomでファイルを編集/書き込みしたい場合もあるため、そうすることをお勧めします。
chmod 644 myfolder/* (or 640)
答え2
この質問では、更新項目が/etc/fstab
非常に重要です。
UUID=6F7C5E910607D747 /media/storage1 ntfs-3g uid=1000,gid=1000,umask=0022,auto,rw 0 0
つまり、NTFSファイルシステムであり、オプションはデフォルトで実際のNTFS ACLに関係なく、そのuid
ディスクに対するすべてのLinux表示権限をハードコードします。デフォルトでは、これらのマウントオプションはユーザーにファイルシステムとそのファイルへのフルアクセスを許可します。一般コマンドは、マウントオプションによって割り当てられた権限を変更できません。gid
umask
一部のワンタイム操作では、実際のNTFSファイルとディレクトリ権限を代わりに使用できます。
まず、UUIDに対応するデバイス名を探します。
sudo blkid | grep 6F7C5E910607D747 | cut -d : -f 1
その後、ファイルシステムをアンマウントして実行すると、ファイルシステムntfsusermap /dev/<device w/the NTFS filesystem you unmounted>
の一部のファイルが一覧表示され、ファイルを所有するWindowsユーザー/グループに最適なユーザーまたはグループを識別するように求められます。十分なユーザー/グループが識別されると、コマンドはUserMapping
現在のディレクトリにファイルを生成します。 (例を実行してください:http://jp-andre.pagesperso-orange.fr/ntfsusermap.html)
NTFSファイルシステムを再マウントし、まったく同じ名前のディレクトリを作成し、そのディレクトリにファイルを配置します/media/storage1/.NTFS-3G
。UserMapping
NTFSファイルシステムを再マウント解除し、uid
オプションgid
を削除しますumask
。
3番目にNTFSファイルシステムをマウントすると、実際のNTFS ACLがファイル権限に反映されます。これで、一般的なLinuxコマンドを使用してファイルとディレクトリの権限を変更でき、Windowsでファイルシステムを使用するときに変更が適用されます。
答え3
このchattr +i <file>
コマンドを使用してファイルを変更できないようにすることができます。私はこれをテストしていませんが、デフォルトのファイルシステムがntfsのときに動作すると確信しています。
chattr -i <file>
その後、不変フラグを削除する必要があります。
更新:コメントで指摘したように、これはext *ファイルシステムでのみ機能します。