/etc/profile.d/
다중 사용자 시스템에서 단일 라인을 통해 시스템 전체의 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
.