文章目录

  • 从文件的角度,看用户/组的权限.
    • linux对文件的描述
  • 从用户/组的角度,看文件的权限.
    • 实际用户ID/有效用户ID/保存的设置用户ID(saved set-user-ID)
    • 实例对应:

阅<unix高级环境编程>过程中,
高频出现:实际用户ID/有效用户ID/保存的设置用户ID(saved set-user-ID),看着很乱,摘不清楚.

因为Linux是多用户多任务系统,
所以一个文件可能同时被许多人使用,
自然的,我们一定要设好每个文件的权限.

从文件的角度,看用户/组的权限.

linux对文件的描述

常规文件,可以按下表进行理解.(/dev目录下的文件除外)

文件属性(占10个字符空间) 文件数 拥有者 所属的group 文件大小 建档日期 文件名
drwx------ 2 Guest users 1024 Nov 21 21:05 Mail
-rwx–x--x 1 root root 89080 Nov 7 22:41 tar*
-rwxr-xr-x 1 root bin 5013 Aug 15 9:32 uname*
lrwxrwxrwx 1 root root 4 Nov 24 19:30 zcat->gzip
-rwxr-xr-x 1 root bin 308364 Nov 29 7:43 zsh*
-rwsr-x— 1 root bin 9853 Aug 15 5:46 su*

这些显示内容的意义:  
第一个栏位,表示文件的属性。Linux的文件基本上分为三个属性:可读(r),可写(w),可执行(x)。但是这里有十个格子可以添(具体程序实现时,实际上是十个bit位)。
第一个小格是特殊表示格,表示目录或连结文件等等。

  • -:普通文件(f)
  • d:目录文件
  • b:块设备文件(block)
  • c:字符设备文件(character)
  • l:符号链接文件(symbolic link file)
  • p:命令管道文件(pipe)
  • s:套接字文件(socket)
    详细可参考,fstat()函数手册.

其余剩下的格子就以每3格为一个单位。因为Linux是多用户多任务系统,所以一个文件可能同时被许多人使用,所以我们一定要设好每个文件的权限,
其文件的权限位置排列顺序是(以-rwxr-xr-x为例):
rwx(Owner)r-x(Group)r-x(Other)  
这个例子表示的权限是:使用者自己可读,可写,可执行;同一组的用户可读,不可写,可执行;其它用户可读,不可写,可执行。
另外,有一些程序属性的执行部分不是x,而是s,这表示执行这个程序的使用者,临时可以有和拥有者一样权力的身份来执行该程序。一般出现在系统管理之类的指令或程序,让使用者执行时,拥有root身份。 
第二个栏位,表示文件个数。如果是文件的话,那这个数目自然是1了,如果是目录的话,那它的数目就是该目录中的文件个数了。  
第三个栏位,表示该文件或目录的拥有者。 
第四个栏位,表示所属的组(group)。每一个使用者都可以拥有一个以上的组,不过大部分的使用者应该都只属于一个组,只有当系统管理员希望给予某使用者特殊权限时,才可能会给他另一个组.
第五栏位,表示文件大小。文件大小用byte来表示,而空目录一般都是1024byte,你当然可以用其它参数使文件显示的单位不同,如使用ls –k就是用kb莱显示一个文件的大小单位,不过一般我们还是以byte为主。  
第六个栏位,表示创建日期。以“月,日,时间”的格式表示,如Aug 15 5:46表示8月15日早上5:46分。  
第七个栏位,表示文件名。我们可以用ls –a显示隐藏的文件名。

从用户/组的角度,看文件的权限.

实际用户ID/有效用户ID/保存的设置用户ID(saved set-user-ID)

实际用户ID:
标识我们实际上是谁,是当前登录的用户ID.

有效用户ID:
决定的是文件的访问权.
通常有效用户ID就是实际用户ID.

设置-用户-ID,
是一个特殊标志,当该标志设置时,执行该文件时的有效用户ID就是文件的所有者ID.
比如,当一个文件的所有者是root.当你以另一个用户登录时,
如果没有设置-用户-ID,执行该文件时的有效ID和实际ID就是登录用户的ID,
但如果设置了设置-用户-ID,实际用户ID是登录用户ID,而有效用户ID是root用户的ID.

实例对应:

登录某个账户,以某个账户的身份,操作各种文件,要么能操作,要么不能操作,
不能操作的原因,基本上是权限不足.

如上图,当前登录的账户guo(实际用户ID),包含一个.viminfo文件,该文件被root账户创建,属于root组.
拥有者(root)具备读写权限,组用户以及其他用户不具备任何操作权限.
此时,账户guo,无法对该文件进行任何操作(如下图,权限不足),

权限不足的判据:当前的有效用户ID(guo),不具备访问该文件的权限
如果一定要对该文件进行操作,可以暂时提升账户guo的权限,

sudo+动作,动作过程中,暂时性的修改了有效用户ID为root,从而具备了cp动作的权限.动作执行完毕后,恢复有效用户ID为guo.

通俗理解:实际用户ID/有效用户ID/保存的设置用户ID(saved set-user-ID)相关推荐

  1. [转载]unix环境高级编程备忘:理解保存的设置用户ID,设置用户ID位,有效用户ID,实际用户ID...

    转载自http://www.cnblogs.com/stemon/p/5287631.html 一.基本概念 实际用户ID(RUID):用于标识一个系统中用户是谁,一般是在登录之后,就被唯一的确定,就 ...

  2. 设置用户ID位是什么意思

    最近在理解保存设置用户ID时,遇到一些问题,但是发现网上都没能把这个问题说清楚,通过自己的思考和查找资料,终于明白了,现在分享在这里共大家交流学习,如果有不正确的地方,欢迎指正 基本概念: 实际用户I ...

  3. linux 用户shell 无效,浅谈Linux环境下,为什么设置用户ID位对shell脚本无效

    前言: 博主在前不久的一个项目中,项目组的组员需要删除由daemon守护进程创建的缓存文件.但是删除这些缓存文件需要超级用户权限.博主用root用户创建了一个设置用户id的shell脚本来实现此功能. ...

  4. linux中如何设置组id,linux 下设置用户ID 和 设置组ID 学习笔记

    因为某种原因 感觉心里一直有想把Unix有关文件权限编程这部份弄懂的想法,  所以第三遍看Unix高级编程第四章, 以前都是一眼带过, 根本没看吃透, 再次看感觉懂了蛮多的, 写下了以后复习用! 一: ...

  5. Linux常用命令(中)、时间日期类、date 显示当前时间、ntpdate命令、cal 查看日历、useradd 添加新用户、passwd 设置用户密码、id 查看用户是否存在

    文章目录 1.3 时间日期类 1.3.1 date 显示当前时间 1.3.2 date 显示非当前时间 1.3.3 date 设置系统时间 1.3.4ntpdate命令 ntpdate常用服务器 国内 ...

  6. linuxl下创建mysql用户和组_实验四 Linux下用户和组的管理

    Linux命令行界面下的用户和组的管理 groupadd创建用户组: # groupadd [-g gid [-o]] [-r] [-f] group 参数: -g gid: group's ID 值 ...

  7. 苹果id密码忘记了怎么重新设置?请收好这份攻略!

    案例:怎么重新设置apple ID密码? [9敏!想下载美颜相机,结果忘记苹果id密码了,有什么方法重新设置吗?] 在日常使用中,我们有时候会遇到忘记苹果ID密码的问题,这时候需要重新设置苹果ID密码 ...

  8. 群晖NAS:共享文件夹、用户、群组建立及权限设置

    群晖NAS:共享文件夹.用户.群组建立及权限设置 前提条件和目的 设置共享文件夹 设置homes权限 设置用户群组test权限 最终效果 前提条件和目的 1.前提条件:NAS版本:DSM-DS3615 ...

  9. 3.【练习题】构造方法与重载 定义一个网络用户类,要处理的信息有用户ID、用户密码、email地址。拓展:判断密码长度

    package day09;/*3.[练习题]构造方法与重载 定义一个网络用户类,要处理的信息有用户ID.用户密码.email地址. 在建立类的实例时,把以上三个信息都作为构造函数的参数输入, 其中用 ...

  10. APUE学习之三个特殊位 设置用户ID(set-user-ID),设置组ID(set-group-ID),sticky...

    设置用户ID(set-user-ID),设置组ID(set-group-ID),sticky set-user-ID: SUID 当文件的该位有设置时,表示当该文件被执行时,程序具有文件所有者的权限而 ...

最新文章

  1. Delphi 之Copyrect的使用
  2. vim打开多窗口、多文件之间的切换
  3. Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)
  4. UA MATH566 统计理论8 用Pivot构造置信区间
  5. SAP与Ariba在数据分析领域的互补共赢
  6. 计算矢量面积_航天器轨道参数计算推导
  7. 课堂作业:返回一个二维整数组中最大子数组的和
  8. maven项目,如何导入本地jar包
  9. c++读取ini的Section节名
  10. mysql generic安装_MySQL 5.7 linux generic 版本安装
  11. 借助Haproxy_exporter实现对MarathonLb的流量和负载实例业务的可用状态监控-续
  12. keil5怎么放大字体_keil5如何设置字体大小-keil设置字体大小的方法
  13. 移动播放器html,支持移动平台的Html5播放器
  14. 如何将本地项目上传到码云
  15. Gradle 2.0 用户指南翻译——第二十三章. Java 插件
  16. 为Linux内核text段计算SHA1摘要以检测篡改
  17. 经济数学模型matlab,经济数学模型
  18. VIL100数据集处理
  19. Matter协议特性解析(二) 分身(Multiple Fabiric)和权限控制
  20. list和数组间的相互转换(Java)

热门文章

  1. omnet++tictoc14案例解析
  2. oracle loap函数用法
  3. java开发一年后学习计划
  4. 数据可视化大屏的4大优势盘点,超实用!
  5. 前端模板template
  6. CAD绘制带角度的矩形阵列
  7. JavaScript实现类似百度的智能搜索框
  8. win10 计算机描述,怎么设置win10以安全描述符定义语言(SDDL)语法表示的计算机访问权限...
  9. YouTube双字幕显示
  10. 关于绝对路径与相对路径(详细)