• 售前

  • 售后

热门帖子
入门百科

你大概不知道的一些linux文件权限管理方法

[复制链接]
白刃玄衣及 显示全部楼层 发表于 2021-10-25 20:00:59 |阅读模式 打印 上一主题 下一主题
为什么必要权限管理?

1.计算机资源有限,我们必要合理的分配计算机资源。

2.Linux是一个多用户系统,对于每一个用户来说,个人隐私的保护是十分紧张的
目次的 rwx 权限

当前用户:
  1. vagrant:vagrant
复制代码

创建 testdir 目次,进入 testdir 目次内。创建文件 test。
  1. $ mkdir testdir
  2. $ cd testdir
  3. $ touch test
复制代码
修改 testdir 权限为 000,尝试执行 ls testdir
  1. $ chmod 000 testdir
  2. $ ls testdir/
  3. ls: cannot open directory testdir/: Permission denied
复制代码
修改 testdir 权限为 400,尝试执行 ls testdir
  1. $ chmod 400 testdir
  2. ls -l testdir/
  3. ls: cannot access testdir/test: Permission denied
  4. total 0
  5. -????????? ? ? ? ? ? test
复制代码
效果:能够读取目次下文件列表,但是看不到详细文件信息(权限、巨细、用户组、时间等),只管当前用户是 /testdir/test 的拥有者且具有 rwx 权限。

拥有目次的 r 权限可以读取目次下的文件列表。
继承,尝试进入 testdir 目次。
  1. $ cd testdir/
  2. -bash: cd: testdir/: Permission denied
复制代码
看来 r 权限并不能让我们具有进入目次。

我们增长一个 x 权限试试。
  1. ~$ chmod 500 testdir/
  2. ~$ cd testdir/
  3. ~/testdir$ ls -l
  4. total 0
  5. -rw-rw-r-- 1 vagrant vagrant 0 Nov 19 08:16 test
复制代码
乐成进入。

拥有目次的 x 权限能够让我们进入到目次下。在此工作目次下,我们可以检察文件列表及文件的属性信息。
尝试删除 test 文件大概新建文件 test1。
  1. ~/testdir$ rm test
  2. rm: cannot remove ‘test': Permission denied
  3. ~/testdir$ touch test1
  4. touch: cannot touch ‘test1': Permission denied
复制代码
拥有目次的 r x 权限并不能允许我们改变目次的内容。目次里的文件列表可以看做是目次的内容。

拥有目次的 w 权限可以对目次的内容举行增删。
  1. ~/testdir$ chmod 700 .
  2. ~/testdir$ rm test
  3. ~/testdir$ touch test1
  4. ~/testdir$ ls -l
  5. total 0
  6. -rw-rw-r-- 1 vagrant vagrant 0 Nov 19 08:30 test1
复制代码
umask

在上面的例子里,我们创建的新文件的权限是 664(-rw-rw-r--),为什么默认权限会是 664,我如果想改变新文件的默认权限怎么办?
控制台输入 umask:
  1. $ umask
  2. 0002
复制代码
umask 是权限的补码。文件的默认权限是 666 - umask。

如果我们创建的文件不想让其他用户有 r 权限,则修改补码为 0006 即可。
  1. ~/testdir$ umask 0006
  2. ~/testdir$ touch test2
  3. ~/testdir$ ls -l | grep test2
  4. -rw-rw---- 1 vagrant vagrant 0 Nov 19 08:38 test2
复制代码
为什么文件的默认权限不是 777 - umask 呢?因为新建的文件默认不具有可执行权限,以是只思量 rw 权限的话,这波操纵自然是 666 了。
目次默认具有 x 权限,当 umask 是 0002 时,创建的目次的默认权限应该是 777 - 0002 = 775:
  1. ~/testdir$ mkdir dir1
  2. ~/testdir$ ls -l | grep dir1
  3. drwxrwxr-x 2 vagrant vagrant 4096 Nov 19 08:39 dir1
复制代码
特殊权限

SUID

一样平常来说文件权限是 rwx。我们检察一下 passwd(修改暗码下令)的权限:
  1. ~/testdir$ ls -l /usr/bin/passwd
  2. -rwsr-xr-x 1 root root 47032 May 16 2017 /usr/bin/passwd
复制代码
细心点你会发现它的用户权限的 x 位竟然是 s。这个权限叫 SUID,仅对二进制程序有用。

当用户具有该文件的执行权限时,执行该文件会短暂的获取该文件所有者权限的支持。
比如:所有用户的暗码存在 /etc/shadow 这个文件里,且该文件的权限默认是 -r-------- root root,仅root 用户具有强制写入权限,那为什么普通用户还能修改本身的暗码呢?就是因为 passwd 下令具有 SUID 权限,用户执行该下令时会得到文件所有者 root 的权限支持,从而修改本身的暗码。
SGID

当 group 的 x 位置酿成 s 时,阐明该文件具有 SGID 权限。

SGID 权限对二进制程序有用。雷同 SUID,用户在具有文件的 x 权限时,执行该文件,会获取该文件所属用户组的权限支持。
除了二进制程序外,SGID也可以设置在目次上。
若用户对该目次具有 SGID 权限:

用户在此目次下的有用用户组将会酿成该目次的用户组。

如果用户具有该目次的 w 权限,则用户在此目次下创建的文件的用户组与此目次的用户组雷同。

该权限对于项目开辟很紧张。
SBIT

该权限现在只对目次有用:

当用户对此目次具有 w,x 权限,用户在该目次下创建文件夹或目次后,仅本身和 root 才有权限删除该文件。
Others 的 x 权限位若为 t,则阐明文件夹具有 SBIT 权限。

比如 /tmp 目次:
  1. $ ls -l / | grep tmp
  2. drwxrwxrwt 4 root root 4096 Nov 19 09:09 tmp
  3. $ sudo -s
  4. # touch test
  5. root@vagrant-ubuntu-trusty-64:/tmp# exit
  6. exit
  7. vagrant@vagrant-ubuntu-trusty-64:/tmp$ rm test
  8. rm: remove write-protected regular empty file ‘test'? y
  9. rm: cannot remove ‘test': Operation not permitted
复制代码
如何设置以上三种权限

如果在普通的权限设置的“三个数字”前再加一个数字,那前面这个数字就代表这几个权限了:
      
  • 4 为 SUID  
  • 2 为 SGID  
  • 1 为 SBIT
比如:
  1. # chmod 777 /tmp
  2. # ls -l / | grep tmp
  3. drwxrwxrwx 4 root root 4096 Nov 19 09:17 tmp
  4. # chmod 1777 /tmp
  5. # ls -l / | grep tmp
  6. drwxrwxrwt 4 root root 4096 Nov 19 09:17 tmp
  7. End。
复制代码
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习大概工作具有肯定的参考学习代价,如果有疑问大家可以留言交流,谢谢大家对草根技术分享的支持。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作