linux764权限,Linux 文件权限

Linux文件权限

Linux系统中有句话叫做“everything is files”,这当然不是戏称了,windows系统里的mp3、avi、txt、exe、word等等格式的文件在Linux系统里都是以文件形式存在,当然有人会说那Linux系统的文件不也是以 .mp3、 .txt结尾吗?不是的,Linux系统里这样写是为了的系统操作人员方便辨认,把后面的 .mp3、 .txt删了,也不影响文件本质(当然前提是编码格式不变)。在Linux系统里的文件权限分为有r、w、x、s、t。

1. 查看文件权限[root@localhost ~]# ll /app/house

total 0

drwxrwx---. 2 root root 6 Jul 21 15:17 common

文件类型  所有者权限  用户组权限  其他用户权限  特殊权限  连接数  所有者  用户组  大小 修改日期      文件名

d            rwx           rwx           ---                .            2         root    root     6    Jul 21 15:17   common

a.文件类型:Linux文件一共有七种类型,分别是:- 普通文件、d 目录文件、b 块设备、c 字符设备、l 符号链接文件、p 管道文件pipe、s 套接字文件sock

b.所有者权限: 对于目录来说,内容为文件夹中的文件名列表 :r:可读取文件名列表

w:可新建,删除,重命名文件名

x:有进入文件夹的权限,若要执行文件夹的w权限,必须要先有进入文件夹的权限,所以要使用w权限,必须要有x权限

I.对于文件来说,内容为文件内容本身:r:可读取文件内容

w:可修改文件内容

x:可执行文件

II.权限可以用数字表示:r: 4

w:2

x: 1      例如   764  表示 rwxrw-r--

III.文件还有3种特殊权限 ,也可以用数字表示suid:4   s

sgid:2   s

sticky:1    t

IV.suid:当对于一个可执行的二进制文件作用了suid之后,任何人在执行该文件时,临时拥有其所有人的权限,可设置改权限[root@localhost ~]# vim cyn.txt (当执行这个脚本的时候该用户会临时有文件所有者的权限,由于过程比较繁杂,请自行测试,欢迎留言讨论)

#/bin/bash

echo hello,my name is cyn

[root@localhost ~]# chmod +x cyn.txt

[root@localhost ~]# ./cyn.txt

hello,my name is cyn.

[root@localhost ~]# chmod u+s cyn.txt

[root@localhost ~]# ll

total 4

-rwsr-xr-x. 1 root root 38 Jul 21 17:29 cyn.txt

V.sgid:-当对于一个可执行的二进制文件作用了sgid之后,任何人在执行该文件时,临时拥有其所有组的权限,可设置改权限[root@localhost ~]# chmod g+s cyn.txt

[root@localhost ~]# ll

total 4

-rwsr-sr-x. 1 root root 38 Jul 21 17:29 cyn.txt(当执行该脚本的时候,会临时有该文件所属组的权限,可以自行测试,欢迎留言讨论)

-当对于一个目录作用了sgid权限之后,任何人在该目录下所创建的文件的所属组,均与该目录的所属组相同。比如A用户要创建一个文件,这个文件会属于A用户所在的           A组,但是A用户想把这个文件创建之后使其所属组继承与B目录的所属组,这个时侯B目录(所属组B组)设置 sgid权限的话,A用户在B目录下面创建文件,文件会自动属于B组,设置 方法与上面二进制文件一样

VI.sticky:对于一个目录作用了sticky权限,该目录下的文件仅其所属人和目录的所属人及root可以删除,比如在一个共享组里任何人可以上传文件,万一有人误操作把其他的人文件       删了,这个时候为了防止这种情况发生就可以设置sticky权限。[root@localhost ~]# ls /tmp

drwxrwxrwt 6 root root 4096 Jul 21 17:29 /tmp

c.用户组权限: 同所有者权限

d.其他用户权限: 不是文件所有者,也不属于文件所属用户组的用户,称为其他用户,其他用户权限若为-,表示没有相应的权限

e.特殊权限 :acl权限[leonard@localhost ~]$ ls -l

-rw-rw---- 1 cyn root 6 Jul 21 17:29 test.txt

在这里说明了对于test.txt这个文件cyn用户拥有rw-权限。所有属于root组的用户拥有rw-权限. 其他任何用户对于文件没有任何的权限,如果我们现在希望john这个用户也可以对                test.txt    文件进行读写操作.,我自己大概会想到以下几种办法:

1). 给文件的other类别增加读和写的权限,这样由于john会被归为other类别,那么他也将拥有读写的权限。

2). 将john加入到root组。那么john会被归为group类别,那么他将拥有读写的权限。

3). 设置sudo, 使john能够以cyn的身份对test.txt进行操作,从而获得读写权限。

第一种做法的问题在于所有用户都将对test.txt拥有读写操作,显然这种做法不可取。

第二种做法的问题在于john被赋予了过多的权限.所有属于admin组的文件,john都可以拥有其等同的权限了。

第三种做法虽然可以达到只限定john拥有对test.txt文件的读写权限.但是需要对sudoers文件进行严格的格式控制. 而且当文件数量和用户很多的时候,这种方法就相当地不灵活了。

看来好像都没有一个很好的解决方案. 其实问题就出在Linux 文件权限里面,对于other的定义过于广泛,以至于很难把权限限定于一个不属于file owner和group的用户身上. 那                        么 Access Control List (ACL)就是用来帮助我们解决这个问题的。

简单地来说ACL权限就是可以设置特定用户或者用户组对于一个文件/文件夹的操作权限。ACl权限判断顺序 owner > acl user > group > other

可以设置用户acl,也可以设置组acl权限。设置ACL     setfacl  ,查看ACL   getfacl[root@localhost ~]# mkdir -p /acltest/acl

[root@localhost ~]# cd /acltest/

[root@localhost acltest]# ll

total 0

drwxr-xr-x. 2 root root 6 Jul 21 20:03 acl

[root@localhost acltest]# setfacl -Rm g:shuguo:rwx /acltest/

[root@localhost acltest]# getfacl /acltest/

getfacl: Removing leading '/' from absolute path names

# file: acltest/

# owner: root

# group: root

user::rwx

user:liubei:r--

group::r-x

group:shuguo:rwx

mask::rwx

other::r-x

[root@localhost acltest]# ll

total 0

drwxrwxr-x+ 2 root root 6 Jul 21 20:03 acl

删除ACL,可以逐条删除setfacl -x,也可以一起删除setfacl -b[root@localhost acltest]# setfacl -x u:liubei /acltest/

[root@localhost acltest]# getfacl /acltest/

getfacl: Removing leading '/' from absolute path names

# file: acltest/

# owner: root

# group: root

user::rwx

group::r-x

group:shuguo:rwx

mask::rwx

other::r-x

[root@localhost acltest]# setfacl -b /acltest/

[root@localhost acltest]# getfacl /acltest/

getfacl: Removing leading '/' from absolute path names

# file: acltest/

# owner: root

# group: root

user::rwx

group::r-x

other::r-x

设置未来文件的权限 ,所谓未来就是你下一个将要创建的文件的ACL权限,查看的时候会以default显示。[root@localhost acltest]# setfacl -Rm d:g:shuguo:rwx /acltest/

[root@localhost acltest]# getfacl /acltest/

getfacl: Removing leading '/' from absolute path names

# file: acltest/

# owner: root

# group: root

user::rwx

group::r-x

other::r-x

default:user::rwx

default:group::r-x

default:group:shuguo:rwx

default:mask::rwx

default:other::r-x

f.连接数:目录的连接数最少为2,本身和 . ,若还有n个子目录,则连接数为2+n,文件的连接数最少为1,如果连接数为0,则文件或者目录不存在

g.所有者:一般为文件的创建者,谁创建了该文件,就成为该文件的所有者,可以修改该权限:[root@localhost ~]# ll /app/house

total 0

drwxrwx---. 2 root root 6 Jul 21 15:17 common

[root@localhost ~]# chown liubei /app/house/common

[root@localhost ~]# ll /app/house

total 0

drwxrwx---. 2 liubei root 6 Jul 21 15:17 common

h.用户组:当某个用户创建了一个文件后,这个文件的所在用户组就是该用户所在的组,可以修改该权限:[guanyu@localhost ~]$ getent group shuguo

shuguo:x:1021:liubei,zhangfei,guanyu

[guanyu@localhost ~]$ mkdir guanyu

[guanyu@localhost ~]$ ll

total 0

drwxr-xr-x. 2 guanyu shuguo 6 Jul 21 16:37 guanyu

i.文件容量:单位为B

j.修改日期:创建这个文件的时间

k.文件名:文件的文件名

2.文件属性操作

a.修改文件的属主:chown

用法:chown 用户名 文件/目录名

-R 递归同时修改目录下的子文件子目录

--reference file1  file2   将file1的owner设置给file2

chown owner.group 或  owner:group  文件名  可以同时修改文件的owner和group  (仅root用户)

b.修改文件的group:chgrp

用法:chgrp 组名 文件/目录名

owner可以修改文件的属于组,但owner一定要属于目标组

-R 递归同时修改目录下的子文件子目录

--reference file1  file2   将file1的owner设置给file2

3.文件权限操作

a.改变文件或目录的权限:chmod

用法:chmod 权限 文件/目录名

-R 递归同时修改目录下的子文件子目录

修改一类用户的所有权限: 如u=  g= o= ug=  a= u=,g= (a=ugo 或=左边省略)

修改一类用户某位或某些位权限 u+  u- g+ g- o+ o- a+ a- + (+ 加入  - 除去   + 设置)

--reference file1  file2   将file1的owner设置给file2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值