linux文件权限与归属

常见的文件类型

  1. 在Linux系统中,文件类型常见的有以下几种:
    ​
    1. 普通文件(Regular File):普通文件是指存储数据的文件,如文本文件、二进制文件、图像文件等。
    ​
    2. 目录文件(Directory File):目录文件是指存储其他文件或目录的文件,它作为文件系统的目录结构的一部分。
    ​
    3. 符号链接文件(Symbolic Link File):符号链接文件是指一个指向其他文件或目录的文件,类似于Windows系统中的快捷方式。
    ​
    4. 设备文件(Device File):设备文件是指与计算机硬件设备相对应的文件,它允许应用程序通过文件系统来访问设备资源。设备文件分为字符设备文件和块设备文件两种类型。
    ​
    5. 套接字文件(Socket File):套接字文件是指允许应用程序之间通信的文件,它们可用于在同一台计算机上或网络上的不同计算机之间进行进程间通信。
    ​
    6. 管道文件(FIFO or Named Pipe File):管道文件也被称为命名管道文件,它是一种可以在进程间传递数据的特殊类型的文件,位于文件系统中。

在命令行中,可以使用file命令来查看一个文件类型,例如:file /path/to/file

常见的文件类型:普通文件-,目录文件d,链接文件l,管道文件p,块设备文件b,字符设备文件c

Linux文件系统中每个文件和目录都有所谓的权限和归属。文件权限分为读(r)、写(w)和执行(x)三种权限。归属包括文件或目录所有者,所属群组以及其他用户。

文件权限和归属可以通过命令ls -l查看,输出中会显示文件的详细信息,如下所示:

-rw-r--r-- 1 user user 12345 May 20 10:30 example.txt

上面的example.txt文件的权限为-rw-r--r--,所属用户为user,所属组也为user

读权限(r)使得用户可以读取文件中的内容。写权限(w)允许用户编辑文件并保存更改。执行权限(x)允许用户执行文件作为脚本或程序。

归属指定了文件的所有者和所属组。在Linux中,每个用户都属于至少一个组。文件权限的组部分指定该组的访问权限。其他用户部分指定了其他所有用户的访问权限。

文件权限和归属可以使用命令chmodchown进行更改。例如,命令chmod u+x example.txt将给当前用户添加执行权限。命令chown user:group example.txt将把文件所有者更改为user,并把所属组更改为group

文件目录
rcatls
wvimtouch
x./scriptcd

文件最大权限 7777 -rwsrwsrwt-

SUID

临时拥有属主的权限

suid(Set User ID)是一种特殊权限标记,用于在执行程序时提供该程序的所有者的权限。如果将SUID标记设置在一个可执行文件上,那么该文件将始终使用文件所有者的权限运行,而不是当前用户的权限。

通常情况下,只有系统管理员才会使用SUID标记。因为使用SUID标记的程序可能会执行需要root权限的操作,如果不小心编写可能会导致系统安全问题。

对于SUID标记的文件,使用ls -l命令可以看到文件权限中的“s”字母,它替换了文件的执行权限。例如,一个具有SUID标记的可执行文件会显示为-rwsr-xr-x,其中文件所有者的执行权限由“x”更改为“s”。

要设置一个文件的SUID标记,可以使用chmod u+s命令。示例如下:

chmod u+s /path/to/file

取消SUID标记可以使用chmod u-s命令。示例如下:

chmod u-s /path/to/file

请注意,SUID标记也可以应用在目录上,这会使得在该目录下创建的所有文件都具有目录所有者的权限。但是,在实践中,这种设置很少使用。

SGID

临时拥有属组的权限

sgid(Set Group ID)是一种特殊权限标记,用于在执行程序时提供一个与文件所有者不同的组的权限。通过设置sgid标记,可以确保在同一组中的用户之间共享文件,并且它们可以相互执行,即使其中一些用户不是文件所有者。

对于sgid标记的文件,使用ls -l命令可以看到文件权限中的“s”字母,它替换了文件所属组的执行权限。例如,一个具有sgid标记的可执行文件会显示为-rwxr-sr-x,其中文件所属组的执行权限由“x”更改为“s”。

要设置一个文件的sgid标记,可以使用chmod g+s命令。示例如下:

chmod g+s /path/to/file

取消sgid标记可以使用chmod g-s命令。示例如下:

chmod g-s /path/to/file

需要注意的是,在大多数情况下,sgid标记只对目录有用。当在一个目录上设置sgid标记时,新创建的文件将会继承该目录的组所有权,并且将允许组中的其他成员访问该文件。

特殊权限

SUID 4

  • 可以对二进制程序进行设置的一种特殊权限,能够让二进制文件的执行者临时具有属主的权限

  • 设置suid权限chmod u+s 文件

  • 取消suid权限chmod u-s 文件

  1. rw---x--- 该目录中没有可执行权限

  2. rwS--x--- 该目录中有可执行权限

 

SGID 2

  • 一般应用在目录上,当一个目录拥有sgid权限时,任何用户在该目录下创建的文件的属组都会继承该目录的属组

  • 设置sgid权限chmod g+s 文件

  • 设置sgid权限chmod g-s 文件

  1. rws--S--- 该目录中没有可执行权限

  2. rws--S--- 该目录中有可执行权限

 

SBIT 1

  • 粘滞位 防止文件被篡改,目录下的文件只有属主本身可以删除

  • 设置sbit权限chmod o+t 文件

  • 设置sbit权限chmod o-t 文件

  1. rws--x--t 该目录中没有可执行文件

  2. rws--x--T 该目录中有可执行文件

  3. rwxr-xr-t=rwx "+" r-x "+" SBIT =1755

  4. rwsrwSr-- 6764

 

setfacl 隐藏权限

在Linux系统中,可以使用chmod命令来设置文件或目录的访问控制权限。文件或目录的权限包括三种类型:读、写、执行,即r、w和x。通常情况下,权限设置为公有权限,表示文件或目录的权限是公开的,所有用户都可以使用和操作。但是,有时候需要将文件或目录的权限设置为隐藏权限,只允许特定用户或特定用户组访问和操作。

在Linux中,可以使用setfacl命令来为文件或目录设置ACL(访问控制列表)以实现隐藏权限。ACL是一种更高级别的权限控制,可以精确地控制文件或目录的访问和操作权限。使用setfacl命令可以为文件或目录中指定的用户或用户组设置ACL,并指定哪些权限可以赋予给它们。

例如,假设我们要为目录/home/user1/mydir设置隐藏权限,只允许用户user2访问和操作该目录。可以使用以下命令来完成此操作:

setfacl -m user:user2:rwx /home/user1/mydir

上面的命令将针对目录/home/user1/mydir设置ACL,并授予用户user2读、写、执行权限。这意味着只有用户user2才能访问和操作该目录。

要删除ACL并将目录恢复为默认公有权限,可以使用以下命令:

setfacl -b /home/user1/mydir

这将删除目录/home/user1/mydir的ACL,并将其恢复为默认权限配置。

需要注意的是,setfacl命令需要使用root权限才能执行,因为ACL可能包含系统关键文件和目录的访问控制策略。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故事讲予风听

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值