/etc/profile.d/
マルチユーザーシステムでは、1行でシステム全体のumaskを027に設定したとします。しばらくして。再起動後、次のようにメニューから既存のデスクトップファイルシステムの範囲を非表示にしたいと思います。
# just in case the folder doesn't exist, create it:
sudo install -o root -g root -m 755 -p -d '/usr/local/share/applications/'
# copy the existing desktop file and preserve all attributes (which are permissions 644 for the old & new file):
sudo cp -vi --preserve=all '/usr/share/applications/application.desktop' '/usr/local/share/applications/'
# add or change the existing key to true:
sudo desktop-file-edit --set-key=NoDisplay --set-value=true '/usr/local/share/applications/application.desktop'
それは一種の効果があります。しかし、予期しないこと:このデスクトップファイルを開くとまだalacarte
アクティブですが、メニューには表示されません!理由を
詳しく見てみると、権限が644ではなく640なので、ファイルは引き続き表示されますが、通常のユーザーは読めないため、メニューには表示されません。/usr/local/share/applications/
application.desktop
(したがって、NoDisplay=true
この場合正しく設定することは重要ではありません)。
マニュアルページに記載されているオプションを追加しようとしましたが、-m 644
特にdesktop-file-install
。
- 意図的なことでしょうか?では、なぜそうなのでしょうか?
- 追加を使用する代わりに簡単な回避策がありますか
chmod
? - ファイルを編集して権限を変更するのはなぜですか? ! ?
答え1
ファイルを編集して権限を変更するのはなぜですか? ! ?
ファイルを編集する方法はいくつかあります。
- データを読み、更新を適用し、その上に新しいデータを書き、誰もが途中でプラグを抜かないことを願っています。
- データを読み込み、更新を適用し、既存のデータをバックアップファイルに書き込み、既存のファイルの上に新しいデータを書き込み、すべてがうまくいったらバックアップを削除します。
- データを読み、更新を適用し、古いファイルを横に移動し、その場所に新しいファイルを作成し、そこに新しいデータを書き、すべてがうまくいけば元のファイルを削除します。
desktop-file-edit
3番目の方法を使用してください。この方法には、古いファイルを新しいファイルに置き換えることが含まれます。プログラムは、古いファイルのすべてのメタデータ(ファイルの所有権や権限など)を新しいファイルに手動で再適用する必要があります。プログラムはこれを実行しないため、更新されたファイルには「デフォルト」継承された所有権と権限があります。
追加を使用する代わりに簡単な回避策がありますか
chmod
?
プレフィックスaに変更しますumask 022
。