设为首页 收藏本站
查看: 431|回复: 0

[经验分享] Linux权限详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-15 08:15:15 | 显示全部楼层 |阅读模式
一、Linux文件属性结构格式(以root用户家目录为例)   
  [iyunv@localhost~]# ls -l       # 显示文件名与相关属性命令
  total 120
  drwxr-xr-x  2 root root 4096 Dec 10 07:57 07:57:04
  drwxr-xr-x  2 root root 4096 Dec 10 07:57 10
  drwxr-xr-x  2 root root 4096 Dec 10 07:57 2015
  -rw-------. 1 rootroot  2454 Dec  6 22:43 anaconda-ks.cfg
  drwxr-xr-x  2 root root 4096 Dec 10 07:57 CST
  drwxr-xr-x  2 root root 4096 Dec 10 07:57 Dec
  drwxr-xr-x  2 root root 4096 Dec  6 22:50 Desktop
  drwxr-xr-x  2 root root 4096 Dec  6 22:50 Documents
  drwxr-xr-x  2 root root 4096 Dec  6 22:50 Downloads
  -rw-r--r--. 1 rootroot 45098 Dec  6 22:43 install.log
  -rw-r--r--. 1 rootroot  9963 Dec  6 22:39 install.log.syslog
  drwxr-xr-x  2 root root 4096 Dec  6 22:50 Music
  drwxr-xr-x  2 root root 4096 Dec  6 22:50 Pictures
  drwxr-xr-x  2 root root 4096 Dec  6 22:50 Public
  drwxr-xr-x  2 root root 4096 Dec  6 22:50 Templates
  drwxr-xr-x  2 root root 4096 Dec  6 22:50 Videos
        【显示格式】:
            总量:
            类型和权限  连接数  所有者   用户组   文件大小  修改日期   文件名
   1.total:所列出内容的磁盘占用空间总和值(kbytes为单位)
表示该目录的大小,不完全解释:该目录下所有文件及目录列表第五字段的和
     注意:不一定等于相加,此数字为占用blocksize的整数倍,和占用block个数有关
   2.类型和权限(permission):十位分四段表示
wKiom1Zu6xXjI7XJAAD2erMsi7I430.jpg
(1)文件类型:
   -:常规文件;即f,file;
    d:directory,目录文件;
   b: blockdevice,块设备文件,支持以“block”为单位进行随机访问,如硬盘、软盘...
    c:characterdevice,字符设备文件,支持以“character”为单位进行线性访问
串行端口接收设备,一次性读取,如键盘、鼠标...,用主、次设备号表示
        major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序
        minor number:次设备号,用于标识同一类型中的不同的设备;
   l:symboliclink,符号链接文件;类似于Windows下的快捷方式
   p: pipe,命名管道;解决多个程序访问一个文件所造成的错误,FIFO(first-in-first-out)
    s: socket,套接字文件;通常被用在网络上的数据连接,
(2)权限组合机制:(8bites 二进制)
      第二道十个字符:每三个为一组,均为'rwx'三个参数组合
      rwxrwxrwx每个位置固定不定,若无则为空,用'-'符号表示
r:readable, 读;w:writable, 写;x:excutable,执行
r=4    w-2   x=1 -=0
wKiom1Zu6xbQeZg9AABIhIkBtpM361.jpg
      【文件目录所属】
               文件拥有者:文件本身所归属用户
               文件所属用户组:和文件拥有者通用户组
               其他人:其他非本用户组的人员
   3.连接数:硬连接数量,表示有多少个文件名连接到此节点(i-node)
(1)硬链接:通过不同的名称(路径)指向同一个inode的连接方式
      inode号相同,大于一个
   1) 仅能股对文件创建,不能对目录创建
   2)所创建的硬链接,不能够跨文件系统,但时能够在不同的目录下
   3)创建时增加文件被连接次数,即为此处ls -l 第二字段数字
   4)cp会付支出新的inode和block,硬链接的inode不同,但时block相同
(2)软连接:类似Widows下快捷方式,存储为其他路径directory
   1)大小为路径的字符个数
   2)可用于目录,不会增加文件被连接次数
   3)可以跨文件系统
   4)所创建的软连接的权限为777,但时实际访问权限与被链接文件自身权限相关
   4.所有者:该文件或者目录的所属的账号
   5.所属组:该文件或者目录的所属的账号所在的基本组
   6.容量大小:默认单位为B
常规类型文件大小:
目录类型文件大小:目录自身的大小,为占用几个block的大小
连接类型文件大小:连接文件名称字符个数所占大小
   7.修改日期:该文件的创建日期或者最近的更改日期
显示完整的时间格式:ls -l  --full-time
Linux上的三种时间戳:
   access time:访问时间,查看该文件后所记录下来的时间
   modify time:内容数据时间,文件内容数据发生改变,一些log文件增加
   change time:状态时间,如权限数显更改发生改变,status time
   8.文件名:文件名称
如果文件名之前多了一个".",则表示隐藏文件



二、文件目录权限访问控制
  1.Linux进程对文件访问权限应用模型
        进程安全上下文:
进程的属主与文件的属主是否相同;如果相同,则应用属主权限;
否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限;
否则,就只能应用other的权限;
   2.权限对文件和目录不同的含义
       (1)对于文件的含义
r:可获取文件的数据;可以使用类似于cat命令查看文件内容
w: 可修改文件的数据;可以编或者删除此文件
x:可将此文件运行为进程;可以在命令提示符下当做命令提交给内核运行
       (2)对于目录的含义
r:可使用ls命令获取其下的所有文件列表;
w:可修改此目录下的文件列表;即创建或删除文件;
x:可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;



三、权限管理命令
   1.chmod:更改文件目录权限
用户类型:u:属主   g:属组   o:其它    a: 所有
      (1)chmod [OPTION]...  MODE[,MODE]... FILE…
  1)赋权表示法:直接操作一类用户的所有权限位rwx.
用等号表示:[u|g|o|a]=rwx中的一位或者多位
  2)授权表示法:直接操作一类用户的一个权限位r,w,x
用加减号表示:[u|g|o|a][+|-]rwx
      (2)chmod [OPTION]...  OCTAL-MODE FILE…
直接使用三位数字的方式给文件目录增加权限,分别表示所有者、所属组、其他人的权限
数字的表示方法同上:8bites 二进制表示权限的组合机制
r=4   w-2   x=1  -=0三位相加
      (3)chmod[OPTION]...  --reference=RFILE FILE…   参照某个文件的权限来进行授权操作
  -R,--recursive:递归修改
      注意:普通用户仅能修改属主为自己的那些文件的权限;root可以更改所有用户
   2.chown:更改文件目录的所有者,也可以更改所属组
      (1)chown [OPTION]...[OWNER][:[GROUP]] FILE…
1)仅更改用户的所有者
2)所有者:所属组,可以同时更改
    所有者.所属组,也可以上述操作,但小心文件名中有.系统识别错误
      (2)chown[OPTION]... --reference=RFILE FILE… 参照某个文件的权限来进行授权操作
   -R:递归修改
   3.chgrp:更改文件目录的所属组
(1)chgrp [OPTION]... GROUPFILE… 更改所属组
(2)chgrp [OPTION]... --reference=RFILE FILE…
          参照某个文件的权限来进行授权操作        
   4.install:复制和设置属性权限 copy files and set attributes
       (1)单源复制:
      install[OPTION]... [-T] SOURCE DEST
       (2)多源复制:
       install [OPTION]... SOURCE... DIRECTORY
                  install[OPTION]... -t DIRECTORY SOURCE…
       (3)创建目录:
       install [OPTION]... -d DIRECTORY...
        (4)OPTIONS:
              -m,--mode=MODE:设定目标文件权限,默认为755;
               -o, --owner=OWNER:设定目标文件属主;
               -g,--group=GROUP:设定目标文件属组;
   5.umask:文件的权限反向掩码,遮罩码
       (1)umask:查看当前umask
wKioL1Zu6xyyVEgtAAAiw5qI6K0560.jpg
系统默认为:0022表示特殊权限、所有者权限、所有组权限、其他人权限
更改默认设置位置:/etc/login.defs
wKiom1Zu6xaxZE_2AABM3wIRhTU900.jpg
       (2)对文件目录的umask操作
1) 文件:666-umask ,文件默认不能拥有执行权限
     如果减得的结果中有执行权限,则需要将其加1
  2) 目录:777-umask



四、特殊权限
   1.SUID:运行某程序时,相应进程的属主是程序文件本身的属主
chmod  u+s  FILE  增加SUID权限
chmod  u+s  FILE  删除SUID权限
如果FILE本身就有可执行权限,则SUID显示为a,否则为S
   2.SGID:运行程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属属组
chmod  g+s  FILE   
chmod  g-s  FILE
   3.sticky:在一个公共目录,每个用户都可以创建文件,删除文件,但不能删除别人的
注意:该权限仅能针对目录Directory
chmod  o+t DIR   
chmod  o-t   DIR
   4.SUID、SGID仅能对文件操作,sticky仅能对目录操作
SUID=w  SGID=2  sticky=1



五、关于权限问题的一些问题思考与验证
思考:用户对目录有写权限,但对目录下的文件没有写权限时,能否修改此文件内容?  能否删除此文件?能否用vim修改
   1.当属主和属组相同时:都是gentoo,用gento操作
1)切换到普通用户gentoo,在/tmp下建立测试目录test和测试文件test.txt
[iyunv@localhost ~]# su - gentoo
[gentoo@localhost ~]$ cd /tmp
[gentoo@localhost tmp]$ mkdir test
[gentoo@localhost tmp]$ touch test/test.txt
2)更改权限,确保前提目录test有写权限,文件test.txt没有写权限
[gentoo@localhost tmp]$ ll | grep test
drwxrwxr-x  2 gentoo gentoo 4096 Dec 12 10:19 test
[gentoo@localhost tmp]$ cd test
[gentoo@localhost test]$ chmod 500 test.txt
[gentoo@localhost test]$ ll
total0
-r-x------1 gentoo gentoo 0 Dec 12 10:19 test.txt
3)用echo写入命令写入
[gentoo@localhost test]$ echo 'hello' > test.txt
-bash: test.txt: Permission denied  
4)尝试用vim写入操作
[gentoo@localhost test]$ vim test.txt
--INSERT -- W10: Warning: Changing a readonly file
     退出强制保存
E45: 'readonly' option is set (add ! to override)
结果可以写入,文件属主、属组、权限都没改变
   2.当属主和属组不同时:文件属主是gentoo,属组是slckware,用gentoo用户操作
1)同上操作在/tmp/test下建立测试文件test1,更改权限和属组为slackware
wKioL1Zu6x6QjEr5AADU-uid_Vg086.jpg
2) 用echo写入命令写入
[gentoo@localhost test]$ echo 'hello' >  test1
-bash:test1: Permission denied
3)尝试用vim写入操作
[gentoo@localhost test]$ vim test.txt
-- INSERT -- W10: Warning: Changing a readonly file 4
     强制退出并保存
E45: 'readonly' option is set (add ! to override)
结果可以写入,文件属主、属组、权限都没改变
     3.当属主和属组不同时:文件属主是gentoo,属组是slckware,用slckware用户操作
[iyunv@localhost test]# chmod g+r test1   
[iyunv@localhost test]# su - slackware
[slackware@localhost ~]$ cd /tmp/test
[slackware@localhost test]$ ll
total4
-r-xr-----1 gentoo slackware 7 Dec 12 11:11 test1
[slackware@localhost test]$ vim test1
[slackware@localhost test]$ ll
total4
-r-xr-----1 slackware slackware 21 Dec 12 11:17 test1
  结论:
1.情况一和情况二所得结论相同:都不能echo写入修改文件内容,但是结果可以写入,而文件属主、属组、权限均未发生改变
2.情况三,不同的用户在没有写权限的情况下对其组内的其他用户文件进行操作,echo不能写入
但时vim可以强制写入,但此时文件已经不是原来文件,覆盖写入,属主发生变化。
slackware作为普通用户,没有chown权限,可能为vim的内存空间重新写入覆盖文件
此时,文件权限没变,属主发生变化




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-151246-1-1.html 上篇帖子: Linux用户和组命令总结 下篇帖子: ssm存储管理器和磁盘配额 Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表