linux是一个多用户,多任务的操作系统,对于每一个文件它的属性中都包括:文件所有者(owner),文件所属组(group),其他用户(other),还必须具备与这三个角色对应的读,写,执行的权限,如下:

[root@jasontest01 ~]# ls -l file1
-rw-r--r-- 1 root root 97 Aug 24 22:44 file1


在root目录下面有一个file1文件,我们通过ls -l命令可以查看其详细信息:

-:表示普通文件,d:表示目录文件,l:链接文件,b:设备文件中可以供存储的接口设备,c:设备文件中串行端口设备如键盘。

由于最前面是-:所以file1是普通文件。

再看  rw-r--r--部分,我们将其分为三组,分别对应文件所有者,文件所属组,其他用户的权限.

其中r代表读取权限,w:代表写权限,x:代表执行权限(这里没出现),-:代表没有某种权限。

那对上面的权限的解释就是:

owner:可以读和写,不能执行

group:可以读取不能写,不能执行

other:可以读取,不能写,不能执行

第一个root代表文件所有者,第二个root代表文件所属组

那么现在我如果想修改文件所有者,文件所属组,文件权限该怎么做,请继续向下阅读:

chgrp:修改用户所属组,chown:修改文件所有者,chmod:修改文件权限

假设我在系统中添加一个叫lisp的组(通过/etc/group查看)

[root@jasontest01 ~]# groupadd lisp
[root@jasontest01 ~]# grep lisp /etc/group /etc/gshadow
/etc/group:lisp:x:501:
/etc/gshadow:lisp:!::
[root@jasontest01 ~]# chgrp lisp file1
[root@jasontest01 ~]# ls -l file1
-rw-r--r-- 1 root lisp 97 Aug 24 22:44 file1


如上图,通过chgrp命令将该文件的group修改为了lisp

下面修改其所有者:

[root@jasontest01 ~]# useradd user-lisp
[root@jasontest01 ~]# chown user-lisp file1
[root@jasontest01 ~]# ll file1
-rw-r--r-- 1 user-lisp lisp 97 Aug 24 22:44 file1
[root@jasontest01 ~]#


可以发现,通过我的修改,file1的文件所有者和文件所属组被改为了user-lisp、lisp。

修改其权限:

chmod  777 file1   这个777代表什么?

在linux中使用数字代表权限:

r:4 w:2 x:1

r--   =4+0+0=4;

rw- =4+2+0=6;

rwx =4+2+1=7

相信写到这里大家都应该明白了吧。

权限对于文件和文件夹的意义是不一样的,

对于文件:

r:代表可以读取文件的内容,w:代表可以修改文件的内容,x:可以执行这个文件

对于文件夹:

r:可以获取文件夹中又哪些文件,w:可以添加和删除文件夹中的内容,x:可以进入文件夹,

如果某个角色对于一个文件夹的权限是rw-;

那么他仅仅可以使用ls获取文件夹中的内容,但是不可以使用cd进入该文件夹。


文件的权限告一段落,现在来看看linux中的那些常见目录中的内容:


/bin   系统有很多放置执行文件的目录,但是/bin比较特殊,因为/bin放置的是在单用户维护模式下还能够被操作的命令,在/bin下面的命令可以被root和一般账户使用,如:cat,chmod,chown,data,mv,mkdir,cp ,bash等常用命令。

/boot  主要放置开机使用到的文件

/dev  在linux系统中任何设备与接口设备都是以文件的形式存在于这个目录当中,你只要访问某个文件就相当于访问该设备

/etc系统的主要配置文件几乎都在这个文件夹类。

/home 这是系统默认的用户主文件夹

/lib系统的函数库非常多,二/lib放置的是开机会使用到的函数库

/mnt 如果你想临时挂在一些外部设备(光盘)一般建议放置到这个目录。

/opt 这是给第三方软件放置的目录

/root系统管理员的主文件夹

/tmp 这是让一般用户或者正在执行的程序放置文件的地方,这个目录是任何人都可以访问的,所以你需要定期清理一下,当然重要数据时不能放到这里来的。


关于文件权限的最后一点就是:文件默认权限umask

现在我们已经知道如何新建或者改变一个目录的属性了,不过你知道当你新建一个新的文件或则目录是,它的默认权限是什么吗?那就是于umask这东西有关了,那么umask是在搞什么呢,基本上,umask就是制定目前用户在新建文件或目录的时候权限的默认值,如果获得或设置umask,方法如下:

#umask  或则  umask -S

(四位数,第一位我们先不管,表示特殊权限,我们从第二位开始看起)

在默认权限上,文件和目录是不一样的,对于一个目录,x权限是非常重要的 ,而对于一个文件,x权限在默认是不应该有的,因为文件大多是用来存储数据的,所以在linux中,文件的默认权限是666,目录的默认权限是777

要注意的是umask的分数指的是“默认值需要剪掉的权限”,

所以新建文件时权限:rw--r--r--

新建目录:r-xr-xr-x