linux给用户赋指定目录及以下 只读权限

创建用户: adduser name

创建密码: passwd name(回车后出现修改密码的提示)

若您希望为某个特定目录及其包含的所有文件和子目录设置只读权限,可以遵循以下步骤。请注意,这些操作将影响目录内的所有内容,因此请务必谨慎执行,并确保您拥有足够的权限来更改这些设置。

第一种:使用 chmod 和 chown(基础权限设置)

虽然 chmod 和 chown 命令对于设置基本权限非常有用,但它们并不直接支持递归地设置所有文件和子目录的权限。不过,您可以使用 find 命令结合 chmod 来实现这一点。

  1. 更改目录的所有者和组(可选)
    使用 chown 命令可以更改目录及其内容的所有者和组。如果您需要这样做,可以使用 -R 选项递归地应用更改。

    bash复制代码

    sudo chown -R user:group /path/to/directory
  2. 递归地设置目录和文件的权限
    使用 find 命令结合 -exec 选项来递归地更改目录及其内容的权限。以下命令将目录及其所有文件和子目录的权限设置为只读(对于所有用户):

    bash复制代码

    sudo find /path/to/directory -type d -exec chmod 555 {} \;
    sudo find /path/to/directory -type f -exec chmod 444 {} \;

    这里,555 表示目录的读、执行权限(对于所有者、组和其他用户),而 444 表示文件的读权限(对于所有者、组和其他用户)。然而,这种方法的一个潜在问题是,它可能会覆盖通过 ACL 设置的更细粒度的权限。

第二种:使用 ACL(访问控制列表)

对于更精细的权限控制,建议使用 ACL。ACL 允许您为单个用户或组设置特定的权限,而不影响其他用户或组的权限。

  1. 递归地设置 ACL
    使用 setfacl 命令的 -R 选项递归地设置 ACL。以下命令将为指定用户设置只读权限:

    bash复制代码

    sudo setfacl -Rm u:username:r /path/to/directory

    然而,需要注意的是,仅设置读权限可能不足以防止用户通过其他方式(如删除文件然后重新创建)来修改目录内容。为了确保真正的只读环境,您可能还需要考虑其他安全措施,如挂载选项或文件系统特性。

  2. 验证 ACL
    使用 getfacl 命令验证 ACL 设置是否成功。

    bash复制代码

    getfacl /path/to/directory

    您应该能够看到类似以下的输出,显示指定用户的只读权限:

    复制代码

    # file: path/to/directory
    # owner: user
    # group: group
    user::rwx
    user:username:r--
    group::r-x
    mask::r-x
    other::r-x

    请注意,mask 值表示 ACL 中有效权限的最大值,它限制了除所有者和组之外的用户(包括通过 ACL 设置的用户)可以拥有的最大权限。在这种情况下,mask 被设置为 r-x,以确保所有通过 ACL 设置的权限都不会超过这个值。

注意事项

  • 备份数据:在执行任何批量权限更改之前,请务必备份您的数据。
  • 测试更改:在一个不重要的目录或测试环境中先测试您的更改,以确保它们按预期工作。
  • 了解权限:深入了解 Linux 文件系统权限和 ACL 的工作原理,以便更好地管理您的系统。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值