您的位置:首页 > 运维架构 > Linux

Linux 文件权限详解

2012-06-08 23:30 232 查看
今天把eclipse解压出来看一下 发现它的权限很奇怪,于是有复习了一边linux的权限

[root@localhost Downloads]# ls -l /usr/

total 236

drwxr-xr-x. 4 root root 65536 Jun 8 22:32 bin

drwxrwsr-x. 9 100 users 4096 Feb 17 03:27 eclipse

drwxr-xr-x. 2 root root 4096 Jul 29 2011 etc

drwxr-xr-x. 2 root root 4096 Jul 29 2011 games

drwxr-xr-x. 127 root root 12288 Jun 5 23:48 include

  Linux下当我们在目录中使用 ll 或 ls -l 指令时 第一列会显示出目录下文件的权限 权限的格式是这个样子的 -rwxrwxrwx

  我们分开来解释:

  第一个 - 表示文件的类型:-普通文件 d目录文件 l符号链接文件(软连接文件) c符设备文件 b块设备文件 p管道文件 s socket文件

  rwx代表的意思分别是:read可读 write可写 executive可执行;

  把rwx用二进制来表 示,有权限就用1表示,没权限用0表示 例如 rw- =110 r--=100 r-w =101 依次类推,之后再转化为十进制:rw-=110=4+2+0=6 r-x=101=4+0+1=5 所以我们可以直接理解为r=4,w=2,x=1,用十进制便是文件权限:rwx=4+2+1=7 , r-x=4+1=5

  举些例子:

  644 = rw-r--r-- 755=rwx-r-xr-x 631=rw--wx--x

  从前往后三组rwx代表的意思:user属主 group属组 other其它

  设置权限的方法:以文件 file 原权限为644(rw-r--r--)为例

  chmod +x file 默认为添加属主的执行权限

  chmod 755 file rwxr-xr-x

  chmod u+x file rwxr--r-- 数组添加执行权限

  chmod g=rwx file chmod g=674 file rw-rwxr-- 属组改为rwx权限

  chmod o-r file rw-r----- 减去其它用户的可读权限

  这样子大家就明白了吧

  我们创建的新文件权限为644 新目录权限为755 这是为什么呢?

  大家看一下各权限可做的事情就明白了:

  files directory

  r: cat,more,less ls

  w: vim creat files

  x: script cd

  那我们又是怎么限定创建文件的权限的呢?

  linux里面,用一种umask的掩码似的东西限定新创建文件的权限,默认umask为0022(普通用户的umask通常为0002)

  例子:我们创建一个文件:它的权限就是666-022=644

  我们创建一个目录:它的权限就是777-022=755

  暂时性更改umask:例子 :umask=027

  umask文件保存与/etc/bashrc中 想要永久生效可以更改/etc/bashrc/umask文件

  想要只对自己生效可以更改家目录下的.bash文件 添加一行umask=nnn即可

  下面我们重点介绍的是文件的特殊属性:

  安全上下文:任何时刻用户靠进程操作计算机,进程能否访问一个文件取决于发起这个进程的用户对该文件所拥有的权限:若发起进程的用户与文件属主匹配,以该用 户权限访问;否则,若发起进程的组与该文件数组匹配,以该组的权限进行访问;否则以发起者权限访问。这就叫做安全上下文

  开始介绍3个特殊权限:suid sgid sticky

  suid:通常用于可执行文件 任何用户操作此权限文件使用该文件属主权限

  sgid:通常用于目录 任何用户操作此权限文件夹使用该文件夹属组权限

  sticky:通常用于公共类型的目录 对于此权限目录,任何用户可在里面创建文件,但是只允许更改或删除属于自己的文件

  举例说明下他们的作用

  suid:/etc/passwd文件拥有suid权限。普通用户更改密码 时,要运行passwd文件,passwd对/etc/shadow(存放密码的文件)文件进行操作更改密码。要知道普通用户对shadow文件没有任何 权限,所以普通用户执行的passwd程序不能更改shadow。这时候就用到了suid权限,这个权限使用户运行的passwd命令使用的是
passwd文件属主root的权限,拥有root权限的passwd命令有权限更改/etc/shadow文件,于是普通用户可以成功更改自己密码。

  sticky:/tmp /var/tmp 目录对于任何人有任何权限,因为它是存放临时文件的地方,这种公共目录下,一个用户文件有被其他用户随意破坏的危险,sticky权限正好避免了这一危险

  更改特殊权限方法:

  chmod u+s filename 属主添加suid权限

  chmod g+s filename 属组添加sgid权限

  chmod o+t filename 目录添加scitky权限

  suid sgid sticky 同样可用 4 2 1 表示

  例:chmod 4644 filename 表示 u+s

  rwS 表示权限有r w s

  rws 表示的权限为 r w x s

  t权限同理

  下面大家可以自己动手演示一下,我们最好用复杂一点的方法实现,练习一下权限操作。

  提示:

  mkdir -pv /test/share -p提示创建信心 -v递归创建

  chmod o+rx /test

  groupadd penguin 创建组penguin

  chgrp penguin /test/share 更改/test/share属组为penguin

  chmod g=rwx /test/share

  useradd -G penguin gentoo

  useradd -G penguin ubuntu 创建用户并添加到组penguin

  chmod g+s /test/share

  登陆两个用户分别在/test/share目录中创建几个文件看是否能给删除

  chmod o+t /test/share

  再登陆两个用户分别在/test/share目录中创建几个文件看是否能给删除

  (如果以上操作不成功可能是selinux的作用 ,我们可以在前面执行setenforce0命令暂时关闭selinux再执行以下操作)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: