文件权限详述

普通文件:

root用户:

  • 无论此文件是否给予root用户权限,root用户都可以对此文件进行读操作;
  • 如果没有给予root用户“写”权限,root用户可以强制对文件进行编辑,不过强制编辑会覆盖原来的内容;
  • 不给予root用户执行权限,root用户就不能在执行此文件了。

普通用户:

  • 无论是否是此普通文件的拥有者,若是只有此文件的读权限,就只能读此文件,强行编辑此文件,会覆盖其原来的内容
  • 若是普通用户只拥有此文件的“写”、“执行”权限,啥也干不了

目录文件:

r:读目录中的文件属性信息
w:可以在目录中添加或删除文件数据信息
x:是否可以进入到目录中

root用户:

  • root用户对目录信息有绝对权限,无论属主是否是自己。

普通用户:

  • 对于目录来说,写权限和读权限,都需要有执行权限配合
  • 如果想对目录进行操作,必须对目录赋予执行的权限

权限计算:
在Linux中新创建文件和目录权限一致:

  • 目录文件都是:755
  • 普通文件都是:644

这是因为umask值决定的,默认umask值设定在/etc/profile文件中,可通过修改配置文件/etc/profile 永久修改umask的值。一般默认umask值为:022

计算方式:

  • 目录文件(默认最大权限777):777-022=755
  • 普通文件(默认最大权限666):
    若umask值都是偶数 666-022=644
    若umask值有奇数 666-033+11=644 (相应位置上是奇数,就要在相应位置上加1)

特殊权限位:
系统中实际有12个权限位,上面说的是9个普通的权限位,下面说说特殊权限位。

  1. setuid 权限位 (SUID)
    权限设置方法:chmod u+s 文件 (或chmod 4755 文件)
    作用:可以让此二进制文件的使用者临时拥有此二进制文件属主的权限
    在这里插入图片描述

  2. setgid权限位 (SGID)
    权限设置方法:chmod g+s 文件 (或chmod 2755 文件)
    作用
    01:让执行者临时拥有属组的权限(对拥有执行权限的二进制文件进行设置)
    02:在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)
    在这里插入图片描述

  3. sticky bit :粘滞位 (SBIT)
    权限设置方法:chmod o+t 目录信息 (或chmod 1755 目录信息)
    作用:可以将不同用户的文件放置在共享目录中,实现不同用户数据可以互相查看,但是不可以删除其中的文件(只有该目录的所有者可以删除其中的文件)
    在这里插入图片描述

隐藏权限:
Linux系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉。

  1. chattr命令
    设置方式:chattr +参数 文件
    解锁方式:chattr -参数 文件
    参数:
    i:无法对文件进行修改;若对目录设置了此参数,则仅能修改其中的子文件内容而不能新建或删除文件
    a:仅允许追加内容,无法覆盖/删除内容
    在这里插入图片描述

  2. lsattr 命令
    使用方式:lsattr 文件
    作用:用来查看某个文件是否被加锁头了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的示例代码,用于在 datagrid 中显示一个包含多个文件的字段: ```csharp // 定义一个包含文件路径的实体类 public class FileItem { public string FileName { get; set; } public string FilePath { get; set; } } // 定义一个包含多个文件的实体类 public class MultiFileItem { public int Id { get; set; } public List<FileItem> Files { get; set; } } // 在 datagrid 中显示多个文件的列 var col = new DataGridViewTextBoxColumn(); col.HeaderText = "Files"; col.Name = "Files"; col.ReadOnly = true; col.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; datagrid.Columns.Add(col); // 将多个文件数据绑定到 datagrid 中 var data = new List<MultiFileItem>(); // 假设数据已经在 data 中 datagrid.DataSource = data; // 在 datagrid 的行加载时,将多个文件数据显示在 Files 列中 datagrid.RowPrePaint += (sender, e) => { if (e.RowIndex >= 0 && e.RowIndex < datagrid.Rows.Count) { var item = datagrid.Rows[e.RowIndex].DataBoundItem as MultiFileItem; if (item != null) { var files = item.Files.Select(f => $"{f.FileName} ({f.FilePath})"); datagrid.Rows[e.RowIndex].Cells["Files"].Value = string.Join(", ", files); } } }; ``` 在以上示例中,我们首先定义了一个包含文件路径的实体类和一个包含多个文件的实体类。然后,我们在 datagrid 中添加了一个“Files”列,并将多个文件数据绑定到 datagrid 中。最后,在 datagrid 的行加载时,我们将多个文件数据显示在“Files”列中。需要注意的是,以上示例代码只是一个简单的示例,实际情况下可能需要对代码进行更多的调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值