码迷,mamicode.com
首页 > 系统相关 > 详细

Linux文件权限、用户、用户组

时间:2015-02-08 23:22:19      阅读:406      评论:0      收藏:0      [点我收藏+]

标签:linux

linuxsocketgo存储c

单个文件名或目录名长度不超过255字符;

文件或目录的绝对路径长度不超过4096字符;


一、文件所有者与用户组



一个文件有很多属性,包括文件类型、文件权限、文件隐藏权限、文件所有者、用户组、文件大小、创建日期、修改日期、访问日期等,比如下面是/etc/inittab文件的属性:

技术分享

技术分享


1.文件类型


(1)d:目录;find / -type d 查询;

(2)-:一般文件;find / -type f 查询;

(3)l:链接文件;find / -type l 查询;

(4)b:块设备,即存储设备,比如/dev/sda;find / -type b 查询;

(5)c:字符设备,即串行端口设备,如键盘,比如/dev/zero;find / -type c 查询;

(6)s:socket,比如/var/run/acpid.socket;find / -type s 查询;

(7)p:pipe文件,比如我们可以通过mknod mypipe p 创建pipe文件find / -type p 查询;


2.文件所有者与用户组


首先说明一点:文件所有者与用户组本身没有什么关系,比如用户组可以是root,但是文件所有者为xiazdong;

案例分析:

(1)一个文件的文件所有者为xiazdong,用户组为root,当前登录用户为xiazdong,如果想要让文件的所有者变成root,能成功吗?不能;

(2)一个文件的文件所有者为xiazdong,用户组为root,当前登录用户为root,如果想要让文件的所有者变成root,能成功吗?能;

总结一点:改文件的所有者、用户组应该是root的职责;


再说明一点:一个用户总会归属于一个或多个用户组,一个用户组里可以有多个用户,比如root用户归属于root用户组,但是我们也可以创建一个用户xzdong,及归属于group1用户组,又归属于group2用户组;


3.文件的mtime、atime、ctime


mtime:文件内容修改时间;

atime:文件访问时间;

ctime:文件权限、所有者被修改的时间;


ls --time=atime/ctime



命令


chgrp、chown命令用来设置文件的所有者、用户组;

(1)chgrp xiazdong test.txt:将test.txt的文件用户组设置为xiazdong;

(2)chgrp xiazdong dir:将dir的文件用户组设置为xiazdong;

(3)chown xiazdong test.txt:将test.txt的文件所有者设置为xiazdong;

(4)chown xiazdong:root test.txt:将test.txt的文件所有者设置为xiazdong,用户组设置为root;



二、文件权限



文件权限规定了文件所有者对文件/目录的权限、文件所属用户组的成员对文件/目录的权限、其他人对于文件/目录的权限;

(1)r:可读权限;

(2)w:可写权限;

(3)x:可执行权限;


对于目录和文件来说,这些权限代表的意义是不同的。

对于文件来说:

(1)r:可以读取文件的内容;

(2)w:可以写入文件内容,但是不能删除文件,如果要赋予删除文件的权限,则需要指定目录权限;

(3)x:执行文件,不是每个文件都需要这个权限的,比如txt文件不需要;


对于目录来说:

(1)r:可以读取目录下的目录结构,即能够执行ls查看目录下的文件名;

(2)w:能够改变目录的结构,即添加、删除目录下的文件、对文件重命名;

(3)x:能够进入目录,即cd到该目录;

但是请注意:如果目录只有r,但没有x权限,则只能ls出文件名,而不能显示文件属性,如下图所示:


技术分享

技术分享


注:如果dir目录下存在test.txt文件,如果xiazdong用户没有dir的写权限,则就算对test.txt有rwx权限,也不能删除test.txt;


最要注意的是:不管文件权限设置成什么样了(此处只讨论一般的权限,特殊权限不算),root都能够对文件或目录rwx;


案例:-rwxr--r-- 表示(1)文件所有者能够对该文件可读、可写、可执行;(2)所属用户组能够对该文件可读;(3)其他人能够对该文件可读;


命令


chmod命令可以设置文件的权限;

注意:我们可以通过数字或符号设置权限;

如果是数字,则4代表r,2代表w,1代表x,如果是5代表r-x,6代表rw-,7代表rwx;

如果是符号,则a代表全部人,u代表owner,g代表group,o代表others,r就是r,w就是w,x就是x,什么都不写表示一个权限都没有;

(1)chmod 755 test.txt:赋予test.txt rwxr-xr-x

(2)chmod u=rwx,go=r test.txt:赋予test.txt  rwxr--r--

(3)chmod a=r test.txt:赋予test.txt  r--r--r--

(4)chmod a+x test.txt:给test.txt全部的人添加x权限;

(5)chmod a-x test.txt:给test.txt全部的人删除x权限;

(6)chmod u=rwx,go= test.txt:赋予test.txt  rwx------


以下的部分均为ext文件系统专属特性



三、文件隐藏属性



(1)a:文件只能添加,不能修改、删除;常用于日志文件;

(2) i:文件不能修改、删除,即使root也不行,用于固定不变的文件;



命令


1、lsattr

list attribute,即列出文件或目录的隐藏属性;


lsattr file:列出文件的隐藏属性;

lsattr -d dir:列出目录的隐藏属性;


2、chattr


change attribute,即修改文件或目录的隐藏属性;

(1)i:如果设置了此属性,则目录或文件不能被修改(即使root也不能修改或删除他)。

(2)a:如果设置了此属性,只能添加内容,而不能修改或删除内容;


chattr +ai file:添加属性;

chattr -ai file:删除属性;

chattr =a file:设置属性;



四、文件特殊权限



文件有3个特殊属性:

(1)SUID:在用户所有者的x权限位置为“s”,如/usr/bin/passwd;

(2)SGID:在用户组的x权限位置为“s”,如/usr/bin/locate;

(3)SBIT:在其他的x权限位置为“t”,如/tmp;



SUID


SUID只能赋予二进制文件,并且用户对该文件具有x权限时,赋予SUID才有效果;

SUID效果:当一般用户对二进制文件b有x权限,并且b文件已经设有SUID权限,当一般用户执行b时,则此用户会具有文件所有者的权限;

技术分享

技术分享


SGID


SGID能够赋予目录或文件,执行者必须具备x权限;

SGID用途:团队开发,并且一个目录是团队的共享目录,任何人在此目录中创建文件,文件的用户组都是团队,而不是个人用户组;

SGID效果:

(1)当赋予文件SGID时:当执行者执行时,此执行者会有用户组的权限;

(2)当赋予目录SGID时:执行者进入目录后,有效用户组为目录的用户组,比如用户创建一个文件,则此文件的用户组为目录的用户组;

比如创建chmodtest目录,权限为drwxrwsrwx,则用xiazdong进入该目录后创建test.txt,则test.txt的文件所有者为xiazdong,但是用户组为root;


技术分享


技术分享

技术分享

SBIT


只能赋予目录,如果对目录赋予SBIT之后,则用户A在此目录下创建的文件或目录只有root和用户A能删除,其他人不能删除;


命令


设置SUID、SGID、SBIT,通过chmod设置;


SUID:4

SGID:2

SBIT:1



(1)-rwsrw-r--:

数字表示 :chmod 4764 file,第一个数字4就是设置了SUID;

符号表示:chmod u=rwxs,g=rw,o=r file

(2)-rwxrwsr--:

数字表示 :chmod 2764 file,第一个数字2就是设置了SGID;

符号表示:chmod u=rwx,g=rwxs,o=r file

(3)-rwxrwxr-t:

数字表示 :chmod 1764 file,第一个数字1就是设置了SBIT;

符号表示:chmod u=rwx,g=rwx,o=rt file


u+s:加上SUID;

g+s:加上SGID;

o+t:加上SBIT;


本文出自 “飞得更高” 博客,请务必保留此出处http://vqiao.blog.51cto.com/9368913/1612831

Linux文件权限、用户、用户组

标签:linux

原文地址:http://vqiao.blog.51cto.com/9368913/1612831

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!