如何创建网络共享的桌面快捷方式,并防止它被删除(可能被非 root 用户删除?)
答案1
有几种方法可以做到这一点;要么通过锁定别名文件,要么使用访问控制列表:
选项1,锁定文件(注意:只有所有者才允许解锁):
# Create alias however you want to, then... sudo chown root /Users/ensnare/Desktop/AliasFile sudo chflags uchg /Users/ensnare/Desktop/AliasFile
选项2,访问控制列表:
# Create alias however you want to, then... sudo chown root /Users/ensnare/Desktop/AliasFile sudo chmod 644 /Users/ensnare/Desktop/AliasFile sudo chmod +a "group:everyone deny delete" /Users/ensnare/Desktop/AliasFile
请注意@lungj 的声明,删除由父目录的权限操作系统控制大多确实,但是这两个选项都会覆盖该选项并阻止移动、重命名或删除文件。
答案2
不确定这是否是适合您情况的答案(也不确定 macOS 是否有特殊机制来实现您想要的功能),但删除文件的权限实际上来自目录本身。因此,如果您想防止文件被删除,则需要删除相关用户对该目录的写访问权限。这意味着您可以将整个目录设为只读,~/Desktop
并允许用户在桌面上的子目录中创建文件,或者您可以在桌面上创建一个只读的目录并将快捷方式放在那里,希望没有人会删除它。
# Shortcuts directly on desktop. Now, users have to delete the Desktop directory to remove the shortcuts.
mkdir ~/Desktop/read-write # Create directory where users can add/remove data.
### Add your links to the Desktop.
sudo chown root ~/Desktop # Don't own everything inside, just the directory itself.
chmod -r ~/Desktop # Prevent users from adding/removing files on the desktop.
# Shortcuts in a directory on the desktop. Users have to delete this directory to remove your shortcuts, but can add/remove stuff on the desktop freely.
mkdir ~/Desktop/link_directory # Create directory for your links.
### Add your links to the directory.
sudo chown root ~/Desktop/link_directory
chmod -r ~/Desktop/link_directory # Prevent users from adding/removing files in the link directory.
您可能还想取消链接的写入权限,以防止用户的恶意操作。第一种方法可能更安全一些,如果将根主目录也设为只读,因为普通用户无法替换桌面上的链接。