首页 新闻 会员 周边 捐助

Linux如何保护软链接不被修改?

0
悬赏园豆:30 [待解决问题]

对于我的CentOS系统,我希望某个特定的软链接不会在进行某个软件包升级的时候被修改,就是说,软件可以升级不成功,但是软链接决不能被修改。

realzhangsan的主页 realzhangsan | 菜鸟二级 | 园豆:264
提问于:2023-07-27 14:07
< >
分享
所有回答(4)
0

在Linux中,软链接(symbolic link)是对目标文件的引用,它本身只是一个指向目标文件的指针。如果你希望保护一个特定的软链接不被修改,可以考虑以下两种方法:

  1. 设置软链接的权限:通过设置软链接的权限,可以确保只有特定用户或组具有修改软链接的权限。可以使用 chmod 命令设置软链接的权限,例如:
chmod 555 symlink_name

这将限制只有所有者具有读和执行权限,而其他用户则没有任何权限。

  1. 把软链接放置在受保护的位置:将软链接放置在系统中某个只有特定用户或组具有写权限的目录下,从而限制了谁能够修改该软链接。你可以创建一个具有限制访问权限的目录,并将软链接放置在其中,例如:
sudo mkdir /protected_directory
sudo chown user:group /protected_directory
sudo chmod 700 /protected_directory

ln -s /path/to/target /protected_directory/symlink_name

这样,只有拥有 /protected_directory 目录的权限的用户才能修改软链接。

需要注意的是,当你进行软件包升级时,软件包管理器可能会重建软链接以确保正确性。因此,以上方法只能提供一定程度的保护,但不能完全确保软链接不被修改。最好在进行任何操作前备份重要的软链接以防止意外修改或损坏。

lanedm | 园豆:2396 (老鸟四级) | 2023-07-27 14:48

根据我的尝试,修改使用者权限对于软链接似乎没有用

支持(0) 反对(0) realzhangsan | 园豆:264 (菜鸟二级) | 2023-07-27 15:02

@realzhangsan: 试试使用文件系统的访问控制列表(ACL)来限制对软链接的修改权限。

  1. 确保你的文件系统支持ACL。你可以使用 mount 命令查看文件系统的挂载选项中是否包含 acl 选项。例如,使用以下命令检查根文件系统的挂载选项:

    mount | grep " / "
    

    如果输出中包含 acl 选项,则表示你的文件系统支持ACL。

  2. 设置软链接的权限。使用 chmod 命令设置软链接的权限,确保只有特定的用户或用户组有读写权限,其他用户没有写权限。例如,使用以下命令设置软链接的权限:

    chmod 644 /path/to/symlink
    
  3. 添加ACL规则。使用 setfacl 命令添加ACL规则,限制对软链接的修改权限。例如,使用以下命令添加ACL规则:

    setfacl -m u:username:--- /path/to/symlink
    

    username 替换为你希望保护软链接的用户的用户名。这将限制该用户对软链接的修改权限,只允许读取软链接的内容,而不允许修改它。

  4. 验证ACL规则。使用 getfacl 命令验证ACL规则是否正确设置。例如,使用以下命令获取软链接的ACL规则:

    getfacl /path/to/symlink
    

    确保 ACL 规则中只允许特定的用户或用户组对软链接进行读取操作。

支持(0) 反对(0) lanedm | 园豆:2396 (老鸟四级) | 2023-07-27 15:05
0

可以使用 chattr 命令来给软链接添加不可修改(immutable)属性

NotoChen | 园豆:401 (菜鸟二级) | 2023-07-27 16:03
0

要确保特定软链接不会在进行软件包升级时被修改,你可以使用文件锁来保护该软链接。文件锁可以防止其他进程在锁定文件时对其进行修改。在Linux中,你可以使用flock命令来实现文件锁。

以下是在CentOS系统上如何保护软链接不被修改的步骤:

创建软链接:首先,确保你已经创建了软链接,并且它指向你希望的目标文件。

锁定软链接:在软链接所在的目录中,使用flock命令来锁定该软链接文件。这将确保在锁定期间其他进程无法修改该软链接。

下面是示例代码:

bash
Copy code

假设软链接文件为 link_to_protect,指向 target_file

在软链接所在的目录中使用 flock 命令锁定软链接文件

flock link_to_protect ln -sf --no-dereference target_file link_to_protect
上述命令中使用了flock来锁定link_to_protect文件,并在锁定期间使用ln命令来更新软链接的目标文件,如果软件包升级需要修改软链接,则在锁定期间会失败,从而保护了软链接的内容。

需要注意的是,这种方法需要手动执行锁定操作,并确保在软件包升级过程中不会对该软链接进行修改。如果你使用的是自动化的软件包管理工具(如yum或dnf),需要特别小心,以免自动化过程覆盖了锁定的软链接。在这种情况下,你可能需要编写自定义脚本来处理软件包升级并保护软链接。

请谨慎使用文件锁功能,确保了解其影响和潜在的风险。错误使用文件锁可能导致系统问题,建议在测试环境中进行验证。

Technologyforgood | 园豆:7541 (大侠五级) | 2023-07-27 21:08
0

软链接是一种指向文件或目录的符号链接。如果您希望某个特定的软链接在软件包升级时不会被修改,可以采取以下步骤:

确定要保护的软链接的文件路径和链接目标。
将该软链接文件设置为只读权限。这可以通过以下命令完成:
bash
chmod 444 /path/to/symlink
这将使软链接文件具有不可写权限,从而防止其被修改。 3. 在进行软件包升级时,您需要确保在升级过程中不会影响到该软链接所指向的文件或目录。这可以通过确保升级过程不会更改该文件或目录的路径来完成。

如果您在进行软件包升级时遇到了问题,可以查看相关的日志或错误消息,以确定是否对软链接进行了更改。如果软链接被修改,您需要恢复其原始状态,以确保系统的正确性和稳定性。

Lyndon_W | 园豆:156 (初学一级) | 2023-07-28 17:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册