且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

linux文件权限(一)

更新时间:2022-09-17 18:50:55

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,如需转载请自行联系原作者