本文遵循CC 4.0 BY-SA版权协议

注意:本文为学习笔记版,只记录个人觉得重要的部分,内容较为片面。

Linux 下文件及文件夹的权限可以表示为rwx这三个字符,r代表read,w代表write,x代表excute。

其中,rwx分别可以用数字来表示,即4,2,1。  4代表r,2代表w,1代表x。

下图引自:https://blog.csdn.net/lv8549510/article/details/85406215

其中,对于文件和文件夹来说“rwx”的意义有区别:

对于文件:

r   代表是否可以读取文件内容;

w  代表可以修改文件内容,包括添加文件内容,删除文件内容,清空文件内容(不能删除文件,删除文件的权限要看文件所属的文件夹的权限,参看下文内容)

x   代表是否可以执行该文件。(这个权限只对可执行文件有限,如果不是可执行文件即使有x权限也并不会执行成功,这里的可执行文件包括二进制文件也包括脚本文件和shell文件)

对于文件夹:

r   代表读取到文件夹下文件名称(不代表能够读取到文件夹下文件的其他信息,如:大小,创建日期,文件权限等信息,关于文件的信息需要有进入到文件夹下的权限,即“x”权限)

w  代表对文件夹下的文件进行创建、重命名、删除等,该权限不包括对文件内容的修改。有文件夹的w权限,但是没有文件夹下文件的rwx权限,我们虽然不能修改文件夹下文件的内容但是我们可以删除该文件。

x   代表是否能够进入到文件夹下的权限。

有文件夹的r权限可以读取到文件夹下有哪些文件,但是不能读取到文件夹下文件的其他信息(如:大小,创建日期,文件权限等信息)。

有文件夹的rx权限,可以读取到文件夹下有哪些文件及其其他信息(如:大小,创建日期,文件权限等信息)

只有文件夹的x权限,此时虽然没有文件夹的rw权限但是如果知道文件夹下文件名同时该文件可读我们也是可以读取该文件夹下的文件内容的,但是只有文件夹的r权限而没有x权限虽然能读到文件夹下文件的名但是无法读取文件夹下文件内容:

下段引自:https://blog.csdn.net/guozan523/article/details/4517790

对于一个目录,如果设置了“read”标志,您可以列出目录的内容;“write”表示您可以在目录中创建文件,“execute”表示您可以进入该目录并访问内部的任何子目录。没有“execute”标志,目录内的文件系统对象是不可访问的。没有“read”标志,目录内的文件系统对象是不可查看的,但是只要有人知道磁盘上对象的完整路径,就仍然可以访问目录内的对象。

======================================

说明下:在没有设置特殊权限时,对于可执行文件来说不论其文件的所属用户和用户组是什么,在运行时top中所显示的用户和用户组都是调用者的。

特殊权限

其实文件和文件夹权限除了 rwx  以外还有  suid  ,   guid,   sticky    三个权限。如果用数字表示,其中suid是4、sgid是2、stricky粘滞位是1。一个文件或文件夹的权限一般可以用四个数字来表示0777是不考虑特殊权限时最高权限,考虑特殊权限的话则是7777。如果用字母表示不考虑特殊权限则是rwx,rwx,rwx,如果考虑特殊权限可以写为rwsrwsrwt,其中一个s表示suid,第二个s表示guid,t表示sticky,当然如果考虑特殊权限的话也可以写为rwSrwSrwT。

s与S  的区别在于若是用户u 或用户组g 没有执行权限(x)  则其附加权限为  S , 若是有x(执行权限) 则为 s 。

t与T  的区别在于若是其他组o 没有执行权限(x)  则其附加权限为  T , 若是有x(执行权限) 则为 t 。

(下面内容引自CSDN博主「白小黑..」的原创文章,遵循CC 4.0 BY-SA版权协议:https://blog.csdn.net/weixin_42711549/article/details/81156370

1.suid 冒险位

(1)作用

只针对与二进制可执行文件

本权限仅在执行该程序的过程中有效

执行者将具有该程序所有者的权限

(2) 设定方式

chmod u+s file /dir 或 chmod 4xxx file/dir

例子:

在没设定冒险位之前先 执行 watch  并查看其进程的所有者为 root

查看进程权限:

ps ax -o comm,user,group|grep watch

修改/bin/watch 的所有者,设定冒险位,执行watch ,查看其进程的所有者改为 student

sudo chown  student  /usr/bin/watch

sudo  u+s  /usr/bin/watch

查询此时/bin/watch文件权限:

root@rootroot:/tmp# ll /usr/bin/watch
-rwxr-xr-x 1 student root 22952 Aug 9 2019 /usr/bin/watch*

再次执行watch应用:

查看进程权限:

ps ax -o comm,user,group|grep watch

结果:

watch   student    root

个人添加的例子:

suid的设置不仅可以针对二进制可执行文件,也可以针对脚本文件,主要区别是针对二进制执行文件的话设置了suid后只要保证调用的用户具有x权限即可,但是如果是脚本文件设置suid后不仅调用用户需要有x权限也得有r权限。毕竟脚本文件不是直接执行的而是需要读取内容给解释器的,所以需要调用用户有r权限。

如:x.c 文件

#include<stdio.h>
int main(){
printf("hello world \n");
return 0;}

gcc x.c

赋予二进制文件 x 权限后即可执行:

对于脚本文件在设置suid后调用用户必须有rx权限,只有x权限是不行的,如:

需要注意的是suid虽然可以给文件夹进行设置但是没有任何其他特殊作用。

2.sgid 强制位

(1)作用

对文件:只针对二进制可执行文件,当文件上有sgid时任何执行此文件产成的进程都属于文件的组

对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组

(2)设定方式

chmod g+s file /dir 或 chnod 2xxx file/dir

3.sticky     粘制位

(1)作用

只针对目录生效,当一个目录上有sticky权限时,在这个目录中的文件只能被文件的所有者删除

(2)设定方式

chmod o+t  dir 或  chmod 1xxx dir

在设置了 sticky位的文件夹下面的文件或文件夹都只能被所属用户删除,即使这些文件夹和文件的权限为777,但是由于其父目录设置了sticky位也只能被所属用户删除,其他用户无法删除。

需要注意的是一个文件夹设置了sticky权限只会影响该目录下的文件及这一层的文件夹,如果带有sticky的文件夹下的文件夹不具备sticky,那么sticky的文件夹下的文件夹不会对其下的文件或文件夹有sticky限制,或者说sticky不具备传递性。

==================================

引自:https://www.cnblogs.com/wangtao-blog/p/11156297.html

目录如果启用了目录的“sgid”标志,在目录内创建的任何文件系统对象将继承目录的组。当您需要创建一个属于同一组的一组人使用的目录树时,这种特殊的功能很管用。只需要这样做:

# mkdir /home/groupspace
  
# chgrp mygroup /home/groupspace
  
# chmod g+s /home/groupspace

一般来说,只要对一个目录有写访问权,任何人都可以重命名或删除该目录中的文件。对于个别用户使用的目录,这种行为是很合理的。但是,对于很多用户使用的目录来说,尤其是 /tmp 和 /var/tmp,这种行为可能会产生麻烦。因为任何人都可以写这些目录,任何人都可以删除或重命名任何其他人的文件 — 即使是不属于他们的!显然,当任何其他用户在任何时候都可以输入“rm -rf /tmp/*”并损坏每个人的文件时,很难把 /tmp 用于任何有意义的文件。所幸,Linux 有叫做“粘滞位”(sticky bit)的东西。当给 /tmp 设置了粘滞位(用 chmod +t),唯一能够删除或重命名 /tmp 中文件的是该目录的所有者(通常是 root 用户)、文件的所有者或 root 用户。

s与S  的区别在于若是用户或用户组没有执行权限(x)  则其附加权限为  S 。 若是有x(执行权限) 则为 s 。

我们的附加权限也可以用数字表示,当我们写三个数字的时候默认是属主属组和其他用户的权限;但是当我们写四个数字的时候,后三个默认还是属主属组和其他用户的权限,但是第一个数字就代表附加权限,其中suid是4、sgid是2、粘滞位是1

==================================

以下内容引自:

版权声明:本文为CSDN博主「绿夜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lv8549510/article/details/85406215

三种特殊权限suid、sgid、sticky(sticky权限工作环境中相对常用)

1.  suid

作用:给一个用户继承二进制程序所有者拥有的权限

suid权限位 位于所有者的执行权限位上,如果一个文件具有suid权限,则所有者执行位为s,文件表现为红色背景

 例:ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd 给file文件增加suid权限 chmod u+s file chmod 4755 file suid数字法表示为4

注: suid只适合作用在二进制程序上

2.  sgid

作用1:给一个用户继承二进制程序所有组拥有的权限

sgid权限位 位于所有组的执行权限位,如果一个文件具有suid权限,则所有组的执行位为s,文件表现为黄色背景

例:ll `which cat`
-rwxr-sr-x. 1 root root 48568 Mar 23 2017 /bin/cat 给file文件增加sgid权限 chmod g+s file chmod 2755 file sgid数字法表示为2

作用2:作用在目录上时,使一个目录下的新建的文件继承目录的所属组

3.  sticky

作用:作用于目录上,此目录的文件只能被所有者删除

sticky权限位 位于其他的执行权限位上,如果一个文件具有sticky权限,则其他的执行位为t,目录表现为绿色背景

如:ll -d /tmp
drwxrwxrwt. 17 root root 4096 Apr 4 10:02 /tmp 给dir目录添加sticky权限 chmod o+t dir chmod 1777 dir sticky数字法表示为1

==================================

参考:

https://blog.csdn.net/guozan523/article/details/4517790

https://blog.csdn.net/weixin_42711549/article/details/81156370

Linux下文件及文件夹权限(学习笔记版)的更多相关文章

  1. Linux下sed,awk,grep,cut,find学习笔记

    awk awk是一种程序语言,对文档资料的处理具有很强的功能.awk擅长从格式化报文或从一个大的文本文件中抽取数据. awk的命令格式为: awk [-F filed-separator] “comm ...

  2. Linux下批量修改文件及文件夹所有者及权限

    Linux下批量修改文件及文件夹所有者及权限需要使用到两个命令,chmod以及chown 例:对/opt/Oracle/目录下的所有文件与子目录执行相同的权限变更: chmod -R 700 /opt ...

  3. 【Linux学习】Linux下用户组、文件权限详解

    原文地址:http://www.cnblogs.com/123-/p/4189072.html Linux下用户组.文件权限详解 用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在li ...

  4. linux下SVN忽略文件/文件夹的方法

    linux下SVN忽略文件/文件夹的方法 假设想忽略文件temp 1. cd到temp所在的目录下: 2. svn propedit svn:ignore . 注意:请别漏掉最后的点(.表示当前目录) ...

  5. albert1017 Linux下压缩某个文件夹(文件夹打包)

    albert1017 Linux下压缩某个文件夹(文件夹打包) tar -zcvf /home/xahot.tar.gz /xahottar -zcvf 打包后生成的文件名全路径 要打包的目录例子:把 ...

  6. 【转】【Linux】Linux下统计当前文件夹下的文件个数、目录个数

    [转][Linux]Linux下统计当前文件夹下的文件个数.目录个数 统计当前文件夹下文件的个数,包括子文件夹里的 ls -lR|grep "^-"|wc -l 统计文件夹下目录的 ...

  7. VMware,win7与linux centos6.4文件互传,linux下挂载windows共享文件夹,vmware tools安装方法

    本方法是以win7,VMware9.0.1 ,centos6.4为基础实验的. 对于linux的初级使用阶段,都会Windows中使用linux虚拟机VMWare或者其它的.在Windows与linu ...

  8. Linux下重命名文件或文件夹(mv命令与rename命令)

    在Linux下重命名文件或目录,可以使用mv命令或rename命令 mv ———————————— mv命令既可以重命名,又可以移动文件或文件夹. 例子:将目录A重命名为B mv A B 例子:将/a ...

  9. (转)Mysql数据库之Binlog日志使用总结Linux下用户组、文件权限详解

    Linux下用户组.文件权限详解 原文:http://blog.csdn.net/sdulibh/article/details/51566772 用户组 在linux中的每个用户必须属于一个组,不能 ...

  10. Linux 下复制整个文件夹的命令

    在 Linux 下复制整个文件夹,包括它的子文件夹及其隐藏文件的方法是: cp -r /etc/skel /home/user 或者 mkdir /home/<new_user> cp - ...

随机推荐

  1. ansible-role角色

    官网文档 https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html 为什么要用role 之前你部署的n ...

  2. CloseableHttpClient设置超时时间demo 未设置默认是2分钟

    # CloseableHttpClient设置超时时间demo 未设置默认是2分钟 import org.apache.http.HttpHeaders; import org.apache.http ...

  3. kettle从入门到精通 第七十课 ETL之kettle kettle数据校验,脏数据清洗轻松拿捏

    场景:输入在指定的错误(错误应涵盖数据类型不匹配的情况)行数内,trans不报错,但通过错误处理步骤捕捉,并记入文件,整个数据管线正常完成直至处理完最后一个输入行. 解决方案:使用步骤[数据检验]进行 ...

  4. gitlab自动定时备份文件,备份失败发送邮件

    一.需求 为预防gitlab出现故障,每天定时备份,备份完成后把之前的备份文件删除,备份成功或失败的时候自动发送邮件提醒,这里的gitlab为docker部署. 二.备份命令准备 1)备份命令 创建一 ...

  5. Vue聊天框自动滚动底部

    原理:通过监听数据更新,将滚动的最大高度赋值给滚动条的最大高度,并等待页面更新完成后再将页面滚动到底部. 容器代码 watch监听 scrollTop: 距离最顶部高度 scrollHeight:滚动 ...

  6. C++面向对象多级菜单向Arduino的移植

    前段时间写了一篇文章<C++面向对象语言自制多级菜单>,文中指出了可以将HeleMenu库进行移植,现已完成技术思路,特此记录. 一.特性 基本与上一篇文章指出的一致,只是将菜单显示和响应 ...

  7. DPO: Direct Preference Optimization 直接偏好优化(学习笔记)

    学习参考:链接1   一.为什么要提出DPO 在之前,我们已经了解到基于人类反馈的强化学习RLHF分为三个阶段:全监督微调(SFT).奖励模型(RM).强化学习(PPO).但是RLHF面临缺陷:RLH ...

  8. .Net Framework使用Autofac实现依赖注入

    .Net Framework使用Autofac实现依赖注入 前言 最近也是找了快2周的工作了,收到的面试邀请也就几个,然后有个面试题目是用asp.net mvc + Entityframework 做 ...

  9. 统信 UOS 重置Root账号密码 获取 Root 权限

    统信服务器默认无法用root 账号登入系统,用普通管理员登入后在切换至root账户下即可,初次使用系统时 切换至root账户前需要做很多配置 1.同信切换root账户首先要激活下系统,可以选择试用期激 ...

  10. Power BI实用技巧:轻松打造专业级甘特图

    Power BI实用技巧:轻松打造专业级甘特图 大家好,今天我们要一起探索Power BI中一个既实用又强大的功能--制作甘特图.甘特图以其直观展示项目时间线和任务进度的特点,在项目管理中扮演着重要角 ...