Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:
chown(change owner):修改所属用户与组
chmod(change mode):修改用户的权限
ll或ls -l显示一个文件/目录的属性以及文件所属的用户和组
ls -l
第一列 【-rw-r--r--】【drwxr-xr-x@】
第一个字符
-:代表文件
d:代表目录
l:代表链接文档
b:装置文件里面的可供存储的接口设备(可随机存取装置)
c:装置文件里面的串行端口设备,例如键盘,鼠标(一次性读取装置)
rwx三个字符一组
r(read)可读 数字4表示
w(write)可写 数字2表示
x(execute)可执行 数字1表示
顺序不会改变,如果没有权限,就会出现-
第一组rwx确定属主(该文件的所有者)拥有该文件的权限,第二组确定属组(所有者的同组用户)拥有该文件的权限,第三组确定其他用户拥有该文件的权限。
比如【-rw-r--r--】:表示文件,所有者的权限是rw-可读,可写,不可执行,数字表示是4+2=6,该所有者的权限是6;同组用户的权限是r--,可读,不可写,不可执行,用数字表示是4,同组用户的权限是4;其他用户的权限也是r--,同理数字表示是4.总体结合起来这个文件的权限就是644.
接下来硬连接数,所有者(属主)名字,属组名字,大小,上次更改日期,文件名
文件属主和属组
ls -l
以上实例,无标题.md是一个文件,属主是wuren,属组是staff.
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux系统按文件所有者,文件所有者同组用户和其他用户来规定了不同的文件访问权限。
对于root用户来说,一般情况下,文件的权限对其不起作用。
更改文件属性
chgrp:更改文件属组
chgrp [-R] 属组名 文件名
-R:递归更改文件属组,在更改某个目录文件的属组时,如果加上-R参数,那么该目录下的所有文件的属组都会更改。
chown:更改文件属主,也可以同时更改文件属组
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
进入/root目录,将install.log的拥有者改为bin账号
[root@www ~] cd ~
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
将install.log的拥有者与群组改回为root:
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
chmod:更改文件9个属性
Linux文件属性有两种设置方法,一种是数字,一种是符号
Linux文件的基本权限有9个,分别是owner/group/others(拥有者/组/其他)三种身份各有自己的read/write/execute权限
文件的权限字符为:-rwxrwxrwx,这九个权限是三个三个一组,其中,我们可以使用数字来代表各个权限
r:4
w:2
x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:-rwxrwx---分数则是:
owner=rwx=4+2+1=7
group=rwx=4+2+1=7
others=---=0+0+0=0
所以该文件的权限数字就是770
变更权限的指令chmod
chmod [-R] xyz 文件或目录
xyz:上文提到的数字类型的权限属性,为rwx属性数值的相加
-R:递归变更文件权限,同次目录下的所有文件权限都会变更
把pdf文件的权限改为所有人可读,可写,可执行
符号类型改变文件权限
user:用户
group:组
others:其他
用u,g,o来代表三种身份的权限,a代表all,即全部的身份,读写的权限可以写成r,w,x,使用下表方式来看
如果需要将文件权限设置为-rwxr-xr--,可以使用chmod u=rwx,g=rx,o=r 文件名来设定