• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    你可能不知道的一些linux文件权限管理方法

    为什么需要权限管理?

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

    2.Linux是一个多用户系统,对于每一个用户来说,个人隐私的保护是十分重要的

    目录的 rwx 权限

    当前用户:vagrant:vagrant

    创建 testdir 目录,进入 testdir 目录内。创建文件 test。

    $ mkdir testdir
    $ cd testdir
    $ touch test

    修改 testdir 权限为 000,尝试执行 ls testdir

    $ chmod 000 testdir
    $ ls testdir/
    ls: cannot open directory testdir/: Permission denied

    修改 testdir 权限为 400,尝试执行 ls testdir

    $ chmod 400 testdir
    ls -l testdir/
    ls: cannot access testdir/test: Permission denied
    total 0
    -????????? ? ? ? ? ? test

    结果:能够读取目录下文件列表,但是看不到具体文件信息(权限、大小、用户组、时间等),尽管当前用户是 /testdir/test 的拥有者且具有 rwx 权限。

    拥有目录的 r 权限可以读取目录下的文件列表。

    继续,尝试进入 testdir 目录。

    $ cd testdir/
    -bash: cd: testdir/: Permission denied

    看来 r 权限并不能让我们具有进入目录。

    我们增加一个 x 权限试试。

    ~$ chmod 500 testdir/
    ~$ cd testdir/
    ~/testdir$ ls -l
    total 0
    -rw-rw-r-- 1 vagrant vagrant 0 Nov 19 08:16 test

    成功进入。

    拥有目录的 x 权限能够让我们进入到目录下。在此工作目录下,我们可以查看文件列表及文件的属性信息。

    尝试删除 test 文件或者新建文件 test1。

    ~/testdir$ rm test
    rm: cannot remove ‘test': Permission denied
    ~/testdir$ touch test1
    touch: cannot touch ‘test1': Permission denied

    拥有目录的 r x 权限并不能允许我们改变目录的内容。目录里的文件列表可以看做是目录的内容。

    拥有目录的 w 权限可以对目录的内容进行增删。

    ~/testdir$ chmod 700 .
    ~/testdir$ rm test
    ~/testdir$ touch test1
    ~/testdir$ ls -l
    total 0
    -rw-rw-r-- 1 vagrant vagrant 0 Nov 19 08:30 test1

    umask

    在上面的例子里,我们创建的新文件的权限是 664(-rw-rw-r--),为什么默认权限会是 664,我如果想改变新文件的默认权限怎么办?

    控制台输入 umask:

    $ umask
    0002

    umask 是权限的补码。文件的默认权限是 666 - umask。

    如果我们创建的文件不想让其他用户有 r 权限,则修改补码为 0006 即可。

    ~/testdir$ umask 0006
    ~/testdir$ touch test2
    ~/testdir$ ls -l | grep test2
    -rw-rw---- 1 vagrant vagrant 0 Nov 19 08:38 test2

    为什么文件的默认权限不是 777 - umask 呢?因为新建的文件默认不具有可执行权限,所以只考虑 rw 权限的话,这波操作自然是 666 了。

    目录默认具有 x 权限,当 umask 是 0002 时,创建的目录的默认权限应该是 777 - 0002 = 775:

    ~/testdir$ mkdir dir1
    ~/testdir$ ls -l | grep dir1
    drwxrwxr-x 2 vagrant vagrant 4096 Nov 19 08:39 dir1

    特殊权限

    SUID

    一般来说文件权限是 rwx。我们查看一下 passwd(修改密码命令)的权限:

    ~/testdir$ ls -l /usr/bin/passwd
    -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 目录:

    $ ls -l / | grep tmp
    drwxrwxrwt 4 root root 4096 Nov 19 09:09 tmp
    $ sudo -s
    # touch test
    root@vagrant-ubuntu-trusty-64:/tmp# exit
    exit
    vagrant@vagrant-ubuntu-trusty-64:/tmp$ rm test
    rm: remove write-protected regular empty file ‘test'? y
    rm: cannot remove ‘test': Operation not permitted

    如何设置以上三种权限

    如果在普通的权限设置的“三个数字”前再加一个数字,那前面这个数字就代表这几个权限了:

    比如:

    # chmod 777 /tmp
    # ls -l / | grep tmp
    drwxrwxrwx 4 root root 4096 Nov 19 09:17 tmp
    # chmod 1777 /tmp
    # ls -l / | grep tmp
    drwxrwxrwt 4 root root 4096 Nov 19 09:17 tmp
    End。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

    上一篇:centos7下rsync+crontab定期同步备份
    下一篇:使用 chkconfig 和 systemctl 命令启用或禁用 Linux 服务的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    你可能不知道的一些linux文件权限管理方法 你,可能,不知道,的,一些,