用户与用户组
用户
- Linux是一个多人任务系统,也就意味着会有很多用户同时使用一个系统。那么用户与用户之间就肯定要做一个区分,否则所有用户的文件、数据都混在一起是一件很不好的事。
用户组
- 用户组的一大作用,就是使得Linux中的用户可以协同合作。当有一个需要团队合作完成的项目时,用户组就变得非常重要,仅有该用户组的用户,才能对该项目文件进行读、写、执行的各种操作。
文件属性
- 当你在命令行界面输入:ls -al 指令后,可以看到文件的详细权限与属性,包括隐藏文件。如下图所示
属性的具体含义如下图所示:
Linux文件权限的重要性
- 系统的保护功能:某些系统文件,如存放了用户账号数据的etc/shadow,只有root用户才有权限对其进行读写等操作。若没有这种权限,随便哪个用户都可以对其进行读写,那么用户账号数据轻而易举就会被盗取。
- 团队开发软件或数据共享:Linux中有用户组的概念,那么用户就可以将自己的文件设置成本用户组的用户都可以读写等操作,而其他用户不可以读写,这样既保护了自己的数据隐私,又达到了同团队协作或是共享数据的目的。
- 未将权限设置妥当的危害:一般来讲,一些系统文件所控制的如增删用户、开关机等操作,是由Root来控制的,如果目录权限没有做好,那么可能会导致,普通用户也可以对这些系统文件进行读写或者执行,这样系统就会变得很混乱,也可能会因为普通用户错误的操作导致系统不可用等。所以,在修改文件权限时,一定要足够谨慎。
如何修改文件权限
先来看看修改指令:
- chgrp:修改用户组
- chown:修改拥有者
- chmod:修改权限
修改文件的用户组
- 指令格式:chgrp [ -R ] 用户组名 文件名/目录名。-R:可选的参数,表示进行递归修改,即将目录下的子目录中的所有文件一起修改。
- 将test.exe文件的用户组修改为users,示例:chgrp users test.exe
- 注意:修改的用户组的组名必须在/etc/group文件中存在才行,否则将会报错:找不到这个用户组名
修改文件的拥有者
- 修改文件拥有者的指令格式:chgrp [ -R ] 用户名 文件名/目录名。-R:可选的参数,表示进行递归修改,即将目录下的子目录中的所有文件一起修改。
- 修改文件拥有者和文件用户组的指令格式:chgrp [ -R ] 用户名:用户组名 文件名/目录名。-R:可选的参数,表示进行递归修改,即将目录下的子目录中的所有文件一起修改。
- 将test.exe文件的拥有者修改为bin,示例:chown bin test.exe
什么时候需要用到chgrp或chown
- 实际上,当使用cp指令复制一个文件给另一个用户时,复制的新文件,它的拥有者和所属用户组都是原来的。比如复制.bashrc这个文件给bin这个用户,复制的新文件名叫.bashrc_test。原文件.bashrc拥有者和用户组都是root,当复制后会发现被复制出来的新文件.bashrc_test的拥有者和用户组也是root,而我们是要把这个新复制的文件给bin用户,这个时候就需要用到chgrp和chown指令了。
修改文件的权限
数字类型修改文件权限
- Linux基本文件权限有九个,分别是拥有者、用户组和其他人,三种身份各自有读(read)、写(write)、执行(execute)三种权限。
- 可以用数字来代表各个权限,r:4,w:2,x:1
- 如:-rwxrwx— 转换成数字:own权限=[4+2+1]=7,group权限=[4+2+1]=7,other权限=0,所以转换成数字就是770
- 用数字类型修改文件权限的指令格式:chmod 权限数字 文件名/目录名
符号类型修改文件权限
- u代表user(用户)身份的权限,g代表group(所属群组)身份的权限,o代表other(其他人)身份的权限,a则代表全部(all)身份的权限。具体如下图:
- 假如要设置test.exe文件的权限为-rwxr-xr-x,示例:chmod u=rwx,go=rx test.txt
- 注意:w(写) 的权限对于文件而言,意味着该用户只对这个文件有增加、修改文件的内容,但是并不具备删除文件本身的权限。但是对于目录而言,意味着用户具有改动该目录结构的权限,如:建立新的文件或目录;删除已经存在的文件或目录;对已经存在的文件或目录进行改名;移动该目录内文件、目录的路径。
- x(执行)的权限,对于目录而言意味着用户可以进入该目录,也就是是否可以使用cd切换到该目录中,并将该目录作为工作目录。