文件的权限

1.文件与目录属性

# ls -l filename###文件属性查看

-rwxr-xr-x. 2 root root     6 Oct  2 09:42    file

第一列:文件类型和文件权限

如果这一位上有点,那只能证明系统开启过SELinux,或者该文件在开启SELinux之前

就已经存在;如果这一位上面是+号那么可以证明是该文件具有acl权限控制。

第二列:文件副本个数(硬链接数)

第三列:文件所有人

第四列:文件所有组

第五列:大小

第六列:文件最后的访问时间

第七列:文件名

# ls -ld directory###目录属性查看

drwxr-xr-x    3       kiosk kiosk    33      Aug 27 09:47 Documents

第一列:类型和权限

第二列:子目录个数(包括隐藏目录)

第三列:目录所有人

第四列:目录所有组

第五列:目录中的文件大小

第六列:目录中最后一次内容变化时间

第七列:目录名字

关于文件的权限:

强制位与冒险位(suid、sgid、stickty)

(1)suid  数字为4

说明:任何用户在执行拥有suid权限的命令时都会以命令用者的身份拥有

添加与去除的方法同添加去除普通选项

chmod  u+s  添加suid权限(往命令上添加)

chmod  u-s  删除suid权限

注:suid作用到可执行文件上,作用到目录上没有意义

(2)sgid   数字为2

说明:任何用户在拥有sgid权限的目录下创建的文件都要继承该目录的组

添加与删除方法:

chmod g+s  添加sgid权限

chmod g-s  删除suid权限

注:sgid作用到目录上,作用到文件上没有意义,cp过去的文件也会被作用

(3)sticky: t  数字为1

说明:任何用户在拥有t权限的目录下创建的文件,只能该用户删除,其他人无权删除

添加与去除:

chmod o+t 添加t权限

chmod o-t 添加t权限

注:sticky作用到目录上,作用在文件上没有意义

强制位与冒险位同样可以使用数字模式添加或去除;添加和去除的方法为在普通数字权限前加上强制位与冒险位的数字权限。 例如:chmod  4777 cat

关于文件的类型

-:普通文件

d:文件目录

b:块设备文件

[[email protected] ~]# ls -l /dev/sda1

brw-rw----. 1 root disk 8, 1 Apr 25 19:41 /dev/sda1

c:字符设备文件

[[email protected] ~]# ls -l /dev/console

crw-------. 1 root root 5, 1 Apr 25 19:41 /dev/console

l:连接文件(软连接)

[[email protected] ~]# ls -l /dev/fd

lrwxrwxrwx. 1 root root 13 Apr 25 19:41 /dev/fd -> /proc/self/fd

p:管道文件:确切的说是FIFO(先进先出),也可以说是有名管道,跟管道稍有区别
s:套接字文件

注:

(1)块设备与字符设备:

其最大的区别在于是否可以被随机访问,块设备可以被随机访问,字符设备不可以被随机访问。

(2)管道:

管道是一种特殊文件,也可以说是一种特殊的虚拟文件,因为他只是在内存中开辟了一块区域。通过对两个进程的索引节点inode进行关联,使得两个进程间传输。不过管道属于半双工,也就是数据只能流向一个方向。

(3)硬链接与软链接区别:

1)一个文件分别做硬链接和软链接,当删除原文件时,软链接失效而硬链接依然可用。

2)软链接与原文件的inode号不同,而硬链接与原文件的inode号相同

3)硬链接不能跨设备做,而软链接可以

测试软链接和硬链接的区别

[[email protected] orser]# touch link  //创建源文件

[[email protected] orser]# ln -s link links  //创建软链接

[[email protected] orser]# ln link linkh  //创建硬链接

[[email protected] orser]#ls -li  //查看inode号和详细信息

137901 -rw-r--r--. 2 root root 11 Apr 25 23:13 link

138760 lrwxrwxrwx. 1 root root  4 Apr 25 23:14 links -> link

137901 -rw-r--r--. 2 root root 11 Apr 25 23:13 linkh

以上可以看出软链接的inode号与原文件不同,硬链接的inode号与原文件相同

[[email protected] orser]# cat link

kkkskdadsf

[[email protected] orser]# cat links

kkkskdadsf

[[email protected] orser]# cat linkh

kkkskdadsf

[[email protected] orser]# rm -f link

[[email protected] orser]# cat links

cat: links: No such file or directory

[[email protected] orser]# cat linkh

kkkskdadsf

以上可以得出当原文件被删除时,软链接不可用,硬连接可用。

[[email protected] orser]# ln -s /home/text linkss

[[email protected] orser]# ls -l

lrwxrwxrwx. 1 root root    10 Apr 26 15:17 linkss -> /home/text

[[email protected] orser]# ln /home/text linkhh

ln: creating hard link `linkhh‘ => `/home/text‘: Invalid cross-device link

以上可以看出软链接可以跨设备,而硬链接不能跨设备

umask默认权限反掩码:

当我们在创建文件或者目录的时候都会有一个默认权限,那么这个默认权限是怎么来的,就是通过umask计算得来的,一般root用户的umask值为022,普通用户的umask值为002。那么系统是怎么通过umask计算出创建文件或目录的权限的呢?
(1)创建目录

取得777中每一位的二进制码(111 111 111)

取得umask中每一位的二进制码(000 010 010)

对umask中每一位的二进制码取反(111 101 101)

用777中每一位的二进制码和取反后的umask中每一位的二进制码做与运算(111 101 101)即755.

如果上面的国语繁琐,可以直接使用下列步骤

777=rwxrwxrwx

022=----w--w-

两者相减就是了。

(2)创建文件

和创建目录的算法相同,只不过创建文件是用666与umask做运算。

因为文件默认是不考虑执行权限的,linux系统认为这很危险

测试与SELinux的关系
[[email protected] orser]# sestatus
SELinux status:                 disabled

[[email protected] orser]# touch se

[[email protected] orser]# ls -l se

-rw-r--r-- 1 root root 0 Apr 26 17:58 se

[[email protected] orser]# sestatus

SELinux status:                 enabled

[[email protected] orser]# ls -l se

-rw-r--r--. 1 root root 0 Apr 26 17:58 se
经过测试发现当SELinux开启时创建文件此位会有点出现;当SELinux关闭时创建文件此位不会出现点,但是当再次开启SELinux时该文件此位置又会出现点。

测试与ACL的关系

[[email protected] orser]# touch aclt

[[email protected] orser]# ls -l aclt

-rw-r--r--. 1 root root 0 Apr 26 18:33 aclt

[[email protected] orser]# setfacl -m user:oracle:--x aclt

[[email protected] orser]# ls -l aclt 
-rw-r-xr--+ 1 root root 0 Apr 26 18:33 aclt

经过测试我们发现当此文件设置了acl权限的时候这一位上变成了+号。

2.文件用户组更改

chown用户名称文件###更改文件所有人

chgrp组名称文件###更改文件所有组

chown -R 用户目录###更改目录本身以及目录中子文件的所有人

chgrp -R 组名目录###更改目录本身以及目录中子文件的所有组

3.权限的识别

<1>#ls -l中2-10字符为文件权限

rwxr-xr-x

用户权限组成员权限其他用户权限

<2>权限种类

r:

r权限针对文件,表示可以查看文件内容

r权限针对目录,表示可以ls查看目录中存在的文件

w:

w权限针对文件,表示可以更改文件的内容

w权限针对目录,表示是否可以删除目录中的子文件或子目录

x:

x权限针对文件,表示是否可以开启文件当中记录的程序

x权限针对目录,表示是否可以进入目录中

# chmod u|g|o+-r|w|x###改权限

u=rwx=7 | g=rwx=7 | o=rwx=7

421

u=rw-=6 | g=r--=4 | o=r--=4###644

r=4,w=2,x=1,-=0

rwx=7,rw-=6,r-x=5,r--=4,-wx=3,-w-=2,--r=1,---=0

练习:

<1>新建用户组:shengchan,caiwu,jishu

<2>新建用户要求如下:

tom是shengchan组的附加用户

harry是caiwu组的附加用户

leo是jishu组的附加用户

新建admin用户,此用户不属于以上提到的三个部门

<3>新建目录要求如下:

/pub目录为公共存储目录对所有用户可以读,写,执行

/sc目录为生产部存储目录只能对生产部人员可以写入

/cw目录为财务部存储目录只能对财务部人员可以写入

# for i in shengchan caiwu jishu;do groupadd $i && echo $i is ok;done

# useradd -G shengchan tom

# useradd -G caiwu harry

# useradd -G jishu leo

# useradd admin

# chmod 777 /pub/

# chgrp shengchan /sc/

# chgrp caiwu /cw/

# chmod 770 cw/

# chmod 770 sc/

# ll -d pub/ sc/ cw/

4.文件默认权限

umask:显示系统预留权限值

# vim /etc/bashrc###71行是普通用户更改,73是超级用户更改

# vim /etc/profile###60行是普通用户更改,62是超级用户更改

# source /etc/bashrc /etc/profile#让更改立即生效

5.特殊权限

stickyid:强制位

o+t:只针对目录,当一个目录上有t权限时,此目录中的文件只能被文件拥有者删除

chmod o+t directory (t=1) <===> chmod 1(777) directory

sgid:粘制位

g+s:针对目录时,在目录中创建的文件都自动归属到目录所在组;针对二进制文件时,文件记录的程序在执行时与执行者的组身份没关系,而是以二进制文件的所有组身份执行的

chmod g+s file | directory <===> chmod 2(777) directory

suid:冒险位

u+s:针对文件,文件记录动作在执行时是以文件所有人身份执行的,与谁发起无关

chmod u+s file <===> chmod 4(777) file

练习:

<1>新建用户组:shengchan,caiwu,jishu

<2>新建用户要求如下:

tom是shengchan组的附加用户;

harry是caiwu组的附加用户;

leo是jishu组的附加用户;

新建admin用户,此用户不属于以上提到的三个部门;

<3>新建目录要求如下:

/pub目录为公共存储目录对所有用户可以读,写,执行,但用户只能删除属于自己的文件;

/sc目录为生产部存储目录只能对生产部人员可以写入,且生产部人员所建立的文件都自动归属到shengchan组中;

/cw目录为财务部存储目录只能对财务部人员可以写入,且财务部人员所建立的文件都自动归属到caiwu组中;

<4>admin用户能用/mnt/touch工具在/sc目录和/cw目录中任意建立文件,但不能删除文件

# for i in shengchan caiwu jishu;do groupadd $i && echo $i is ok;done

# useradd -G shengchan tom

# useradd -G caiwu harry

# useradd -G jishu leo

# useradd admin

# mkdir /pub /sc /cw

# chmod 1777 /pub

# chgrp caiwu /cw/

# chmod 770 /cw/

# chgrp shengchan /sc/

# chmod 770 /sc/

# cp /bin/touch /mnt

# chmod 711 /mnt/touch

# chmod u+s /mnt/touch

[[email protected] ~]# su - admin

[[email protected] ~]$ /mnt/touch /sc/h1

[[email protected] ~]$ /mnt/touch /cw/h2

[[email protected] ~]$ logout

[[email protected] ~]# ls /sc/

h1

[[email protected] ~]# ls /cw/

h2

umask  推算一下建立的目录的默认权限,和创建文件默认权限,学413 被这个一下搞混了,今天彻底觉悟了,以下是个人解决方法,希望对各位有帮助

如果umask 为 121 我们怎样算知道创建默认目录的权限呢? 创建 文件的默认权限的?

目录为: 777

文件为: 666

目录权限为: 777 - 121

rwx  rwx  rwx

|相减|

--x   -w-  --x

|等于|

rw-  r-x  rw

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

文件权限为: 666 - 121

rw-  rw-  rw-          #个人总结:比如: x 权限:相减,上面没x下面有x,消掉 ,上面有x,下面有x 消掉,上面有x下面没有x,继承

|相减|

--x   -w-  --x

| 等于|

rw-   r--  rw

参考博客:http://blog.itpub.net/29621173/viewspace-1150127/

时间: 2024-12-30 12:48:54

文件的权限的相关文章

question --&gt; maven assembly plugin 修改文件默认权限

使用maven assembly plugin插件添加执行脚本时,发现默认权限为644,还需要手动添加执行权限.这很麻烦,于是查看文档 官方文档 http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html#class_fileSet fileMode String Similar to a UNIX permission, sets the file mode of the files included. THIS IS

使用粘贴位修改文件的权限

SUID:当一个程序有SUID位的时候,有X权限的用户运行该程序时候都将以程序所有着的身份运行,且SUID只对程序有效对脚本无效.如普通用户可以运行passwd命令将新密码写入/etc/shadow文件中 SGID:可以为二进制程序和目录设置SGID位.有X权限的用户运行该程序时候会获得该程序所在组的支持.对于目录来说,任何有权在该目录下新建文件的用户创建的文件的数组都是继承该目录的属组. SBIT:只对目录有效.当一个目录被设置了SBIT以后,只有文件所有这和root用户可以更改删除该文件,其

通过命令获取/etc/hosts文件的权限对应的数字

命令获取/etc/hosts文件的权限对应的数字 第一步 查看文件的权限 [[email protected] ~]# stat /etc/hosts File: `/etc/hosts' Size: 158         Blocks:8          IO Block: 4096   regular file Device: 803h/2051d   Inode: 915740      Links: 2 Access:(0644/-rw-r--r--)  Uid: (    0/  

Linux里文件和文件夹权限的含义

  文件的权限: r : 可以读取此文件的实际内容. w: 可以编辑.新增或者是修改该文件的内容(但不含删除该文件),如果没有r权限,无法w. x : 该文件具有被系统执行的权限,可以删除. 文件夹的权限: r : 有读取目录结构列表的权限. w: 有更改该目录结构列表的权限.  如:新建文件与目录:删除已经存在的文件与目录(不论该文件的权限如何),将已经存在的文件或目录进行重命名,转移该目录内的文件.目录位置. x : 代表用户能否进入该目录称为工作目录的用途.

android 文件的权限

文件的权限概念    文件的4种操作模式:    Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中.可以使用Context.MODE_APPEND Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.    Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE

文件/目录权限设置命令chmod的详细用法

chmod是文件/目录权限设置的命令,在Linux中经常遇到,本博文以下总结chmod的详细用法. Linux/Unix的档案调用权限分为三级,即档案拥有者user.群组group.其他other.u表示该档案的拥有者,g表示与该档案的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这三者皆是. + 表示增加权限.- 表示取消权限.= 表示唯一设定权限. r表示可读取,w表示可写入,x表示可执行. 举例说明: (1).将档案file1.txt 设为所有人皆可读取: chmod u

目录与文件的权限意义

整理自<鸟哥的Linux私房菜>,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/ Linux系统内文件对应三种身份(所有者.用户组与其他人),每种身份都有三种权限(r.w.x).那么这些权限对于一般文件与目录文件有何不同?今天就来介绍一下: 1.权限对文件的重要性 文件是实际含有数据的地方,包括一般文本文件.数据库内容文件.二进制可执行文件等.因此权限对于文件来说,它的意义如下: r(read):可读取此文件的实际内容,如读取文本文件的文字内容等. w(w

UNIX环境编程学习笔记(9)——文件I/O之文件访问权限的屏蔽和更改

lienhua342014-09-10 1 文件访问权限 在文件访问权限和进程访问控制中,我们已经讲述过文件访问权限位,为了方便,我们重新列在下面, 表 1: 文件的 9 个访问权限位  st_mode 屏蔽  意义  S_IRUSR  用户 -读  S_IWUSR  用户 -写  S_IXUSR  用户 -执行  S_IRGRP   组 -读  S_IWGRP  组 -写  S_IXGRP  组 -执行  S_IROTH  其他 -读  S_IWOTH  其他 -写  S_IXOTH  其他

UNIX环境编程学习笔记(7)——文件I/O之文件访问权限与进程访问控制

lienhua342014-09-02 1 文件的设置用户 ID位 和设置组 ID位 与进程相关联的 ID 如下表所示, 表 1: 与进程相关联的用户 ID 和组 ID 实际用户 ID 我们实际上是谁 实际组 ID 有效用户 ID 用于文件访问权限检查 有效组 ID 附加组 ID 保存的设置用户 ID 由 exec 函数保存 保存的设置组 ID 保存的设置用户 ID 和保存的设置组 ID 在执行一个程序时包含了有效用户 ID 和有效组 ID 的副本,这个后面我们学习到进程时在详细学习. 此处,我

Linux文件基本权限

  当我们在家目录下运行ls –l命令,会出现一些特别的信息: 第一个属性代表这个文件是目录.文件或者是连接文件: d:代表是目录 -:代表是文件 l:代表是链接文件 b:代表是设备文件中可以供存储的接口设备 c:代表是设备文件中的串行端口设备,例如键盘等   然后,rwx都是代表目录权限的: r:可以对目录执行ls命令,但是不允许使用-l选项,而且不能cd到目录中:   w:可以在目录中创建文件:   x:可以对目录执行ls –l命令,并且能够cd进去.   第一组[rwx]为所有者的权限(o