由于Linux是一个多用户、多任务的系统,所以考虑到隐私等原因,“文件所有者”这个角色就相当重要。那么Linux的用户和用户组是什么呢?以我自己粗浅的话来说:
用户:就是普通的一个账号,有自己私人的一些文件
用户组:囊括了一些用户的一个整体,用户组里面的每个人都拥有访问属于用户组的公共文件的权力,而外面的则不行。
Linux文件属性
我们在任意位置执行“ls -al”都可以看到类似这样的显示:
[root@VM_174_157_centos etc]# ls -al
total 1476
drwxr-xr-x. 72 root root 4096 Nov 19 13:52 .
dr-xr-xr-x. 23 root root 4096 Nov 19 15:06 ..
-rw-------. 1 root root 0 Jul 10 2015 .pwd.lock
-rw-r--r--. 1 root root 4439 Jul 16 2014 DIR_COLORS
-rw-r--r--. 1 root root 5139 Jul 16 2014 DIR_COLORS.256color
drwxr-xr-x. 3 root root 4096 Oct 16 2014 NetworkManager
drwxr-xr-x. 4 root root 4096 Jul 10 2015 X11
drwxr-xr-x. 4 root root 4096 Jul 10 2015 acpi
-rw-r--r--. 1 root root 45 May 19 2016 adjtime
-rw-r--r--. 1 root root 1512 Jan 12 2010 aliases
-rw-r--r-- 1 root root 12288 Mar 3 2016 aliases.db
[ 1 ] [2] [3] [4] [5] [ 6 ] [ 7 ]
[ 权限 ] [连接][所有者] [用户组] [文件大小] [修改日期] [文件名]
第一列:第一个字符代表的是这个文件的属性:
[d]表示目录(文件夹)
[-]表示文件
[I]表示连接文件
[b]表示设备文件里面的可供存储的接口设备
[c]表示设备文件里面的串行端口设备,例如:键盘、鼠标等
那么权限中的这一串[drwxr-x—]之类的又是代表什么呢?
r(read):可读
w(write):可写
x(execute):可执行
第五列:为文件大小,默认单位为B
第六列:为这个文件创建或者最近修改时间
第七列:文件名。特殊之处在于,如果文件名之前有一个“.”,则是隐藏文件
改变文件属性和权限
- 改变所属用户组:chgrp
当改变的组名是正确存在的(/etc/group中),那么我们只需要使用chgrp命令即可方便地更改该文件所属用户组。
[root@VM_174_157_centos etc]# chgrp [-R] dirname/filename ...
选项与参数
-R:进行递归(recursive)的持续更改,即连同子目录下的所有文件、目录都更新为该用户组之属
[root@VM_174_157_centos etc]# chgrp users install.log
[root@VM_174_157_centos etc]# ls -l
-rw-r--r-- 1 root users 68495 Nov 19 16:20 install.log
当更改对象为文件夹的时候,建议使用-R,以免引起各种权限问题。
- 改变文件所有者:chown
更改方式和chgrp大同小异,直接看实际操作:
[root@VM_174_157_centos etc]# chown [-R] 账号名称 文件或目录
[root@VM_174_157_centos etc]# chown [-R] 账号名称:组名 文件或目录
参数:
-R:进行递归(recursive)的持续更改,即连同子目录下的所有文件、目录都更改
#将install.log的所有者更改为bin这个账号:
[root@VM_174_157_centos etc]# chown bin install.log
[root@VM_174_157_centos etc]# ls -l
-rw-r--r-- 1 bin users 68495 Nov 19 16:34 install.log
#将install.log所有者与用户组改回为root
[root@VM_174_157_centos etc]# chown root:root install.log
[root@VM_174_157_centos etc]# ls -l
-rw-r--r-- root root 68495 Nov 19 16:41 install.log
事实上chown也可以使用“chown user.group file”,即在所有者与用户间加上小数点,不过由于很多人设置账号喜欢加入小数点,这会造成系统的误判。所有一般使用冒号。
- 改变权限:chmod
1.数字类型改变文件权限
我们将owner、group、others三种身份的权限,按三个三个地分组。并使用数字来代表各个权限,分别是:r:4,w:2,x:1,然后将权限加起来,比如当权限为[-rwxrwx—]时,分数为:
owner = rwx = 4+2+1=7
group = rwx = 4+2+1=7
others = - - - = 0+0+0=0
2.符号类型改变文件权限
user(u):拥有者
group(g):用户组
others(o):其他用户组
在更改时,如下面所示
[root@VM_174_157_centos etc]# chmod [-R] filename 文件或目录
参数:
xyz:就是数字类型的权限属性,为rwx相加
-R:进行递归(recursive)的持续更改,即连同子目录下的所有文件、目录都更改
#比如,将text.txt这个文件权限设置为-rwxr-xr--
#可以计算出,它的分数为7 5 4
[root@VM_174_157_centos YXH]# chmod 754 test.txt
[root@VM_174_157_centos YXH]# ll
total 4
-rwxr-xr-- 1 root root 35 Nov 19 17:28 test.txt
#注意u=rwx,go=rx,而且u g o如果权限相同可以连着写
[root@VM_174_157_centos YXH]# chmod u=rwx,go=rx test.txt
[root@VM_174_157_centos YXH]# ll
total 4
-rwxr-xr-x 1 root root 35 Nov 19 17:28 test.txt
目录与文件的权限意义
权限对文件的重要性
r(read):可读取文件实际内容;
w(write):可以编辑、新增或者是修改文件内容(不包含删除该文件);
x(execute):在linux下,文件是否能够被执行,是取决于这个权限的,和文件名是没有绝对关系的。权限对目录的重要性
r(read contents in directory):表示具有读取目录结构列表的权限,可以使用ls命令查看;
w(modify contents in directory):表示具有更改该目录结构列表的权限,也就是[新建],[删除],[重命名],[转移]的权限;
x(access directory):其实目录也可以执行,那么目录的x代表的是用户能否进入工作目录的用途,也就是说能不能cd进去。Linux文件长度限制
- 单一文件或目录的最大容许文件名为255个字符
- 包含完整路径名称及目录(/)的完整文件名为4096个字符
Linux文件名的限制
由于Linux在文字界面下的一些命令操作关系,一般来说,在设置文件名的时候应该避免一些特殊字符。例如下面这些: * ? > < ; & ! [ ] | \ ’ ” ` ( ) { }
因为这些符号在命令行界面是有特殊意义的。同时又由于执行命令中,常常会用到 -option等参数,所以也应该避免用 + 或 - 来命名。