天天看点

linux文件权限(一)

linux为多用户操作系统,为了实现方便用户管理,采用分组的方式管理用户

每个用户都位于一个用户组中,都有一个uid,而每个用户组又有一个gid.root作为一个特别的用户,其uid=gid=0,其所在用户组名为root.用户信息保存在/etc/passwd中

cat /etc/passwd可看到用户信息。

niuxinli@niuxinli-desktop:~$ cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

。。。。。。。

niuxinli:x:1000:1000:niuxinli,,,:/home/niuxinli:/bin/bash

。。。。。。。。。。。。。

其中每行为一个用户,信息用:分开,从左向右一次为:

用户名:密码信息:uid:gid:用户根目录:所用的bash

关于用户与用户组就说这么多,现在详细的讲一下文件的权限。

用“ls -l  文件名” 可以查看该文件的详细信息

niuxinli@niuxinli-desktop:~$ ls -l 12.txt

-rwxr-xr-x 1 niuxinli niuxinli 12 2009-10-05 12:56 12.txt

只看前边的-rwxr-xr-x 1 niuxinli niuxinli

权限就用-rwxr-xr-x表示,什么意思呢?

这里一共有10个字符,第一个表示文件类型,常见文件类型:

-:普通文件,如文本文件和二进制文件

d:目录,linux将目录看成文件

l:链接文件,如

niuxinli@niuxinli-desktop:~$ ln -s 12.txt 11(创建链接)

niuxinli@niuxinli-desktop:~$ ls -l 11

lrwxrwxrwx 1 niuxinli niuxinli 6 2009-10-05 13:14 11 -> 12.txt

p:管道文件

c:字符设备文件

b:块设备文件

(不必了解太细)

接下来一共还有9位,这是表示权限的每三位一组,分别表示文件所有者对文件的权限,文件所在组其他用户的权限,其他的用户的权限。权限分为r(读),w(写),x(执行)

例如上边的rwxr-xr-x表示文件所有者(niuxinli)对文件可读可写可执行,所在组用户(niuxinli组)对文件可读可执行但不能修改,同样,剩下的其他用户也是如此。-表示没有此权限。

跟在权限后面的是连接数,紧接着后面是文件所有者和所在用户组。

即使权限为---------,root用户也能对文件进行操作,因为root在linux中是无所不能的。

还有几个特殊的权限,后面再详细说。

那么我们怎么来修改一个文件的权限呢?

chmod 修改用户的权限

chown 修改文件的所有者

chgrp 修改文件的用户组

chmod用法:

说到chmod用法,先说一下权限的数字表示

用字母需要9位,而用数字只需3为,r=4,w=2,x=1,相加即可

若某个文件的权限为761 等价于rwxrw---x;345等价于-wxr--r-x

第一种用法:直接用数字指定权限

如 chmod 754 1.txt

第二种用法:用+,-,=

如chmod +x 1.txt 

chmod a+rw 1.txt 表示给所用用户都加上rw权限

chmod u+w,g+x,o-r 1.txt表示给所有者(u)加上w权限,同组用户(g)加上x权限,其他用户(o)减去r权限。

chmod u=rwx,g=rwx,o-rwx

还有指定参考文件等,不需要记这么多。

chown:

chown niuxinli 1.txt

把1.txt的所有者修改为1.txt

chgrp

chgrp niuxinli 1.txt

把1.txt的用户组改为niuxinli

关于linux文件权限还有很多,比如umask,SUID,SGID,我以后的文章会继续讲。上面很多命令不够详细,可以man一下,比如

niuxinli@niuxinli-desktop:~$ man chgrp

CHGRP(1)                         User Commands                        CHGRP(1)

NAME

       chgrp - change group ownership

SYNOPSIS

       chgrp [OPTION]... GROUP FILE...

       chgrp [OPTION]... --reference=RFILE FILE...

DESCRIPTION

       Change  the  group of each FILE to GROUP.  With --reference, change the

       group of each FILE to that of RFILE.

       -c, --changes

              like verbose but report only when a change is made

       --dereference

              affect the referent of each symbolic link (this is the default),

              rather than the symbolic link itself

       -h, --no-dereference

              affect each symbolic link instead of any referenced file (useful

              only on systems that can change the ownership of a symlink)

本文转自nxlhero 51CTO博客,原文链接:http://blog.51cto.com/nxlhero/209625,如需转载请自行联系原作者

继续阅读