简介:
linux系统属于多用户多任务的系统,而为了让不同的使用者能够拥有自己的保密的文件数据,因而文件目录对于不同的用户和用户组的权限均不相同。比方说,对于普通文件(或目录)来说,能够存取该文件的用户身份一般有三类:1、user;2、group;3、others;这三类身份分别对该文件(目录)拥有rwx(读/写/执行)的权限。若管理员不慎将原本属于owner的权限赋予给others,这将会导致任何人均能以owner相同的权限访问该文件(目录),这可能会导致严重的后果。因此为了避免此类事情的发生,权限管理变得至关重要。
权限介绍
登录进linux系统中,执行ls -l 命令,通常会显示出如下类似的结果:
-rw-------. 1 root root 953 1月 4 23:41 anaconda-ks.cfg
-rw-r--r--. 1 root root 5 1月 23 22:59 hello.sh
-rw-r--r--. 1 root root 1001 1月 14 14:19 initial-setup-ks.cfg
-rw-r--r--. 1 root root 0 1月 23 21:26 tee
drwxr-xr-x. 2 root root 6 1月 14 14:48 公共
drwxr-xr-x. 2 root root 6 1月 14 14:48 模板
drwxr-xr-x. 2 root root 6 1月 14 14:48 视频
drwxr-xr-x. 2 root root 6 1月 14 14:48 图片
drwxr-xr-x. 2 root root 6 1月 14 14:48 文档
drwxr-xr-x. 2 root root 43 1月 14 23:23 下载
drwxr-xr-x. 2 root root 6 1月 14 14:48 音乐
drwxr-xr-x. 2 root root 6 1月 14 14:48 桌面
如上述所示,以空格为分隔符,第一列就是相关的文件权限,除了第一位为文件类型描述和最后一个位特殊权限位之外,从左往右,每三位分别表示:属主的权限、属组的权限、其他人的权限。
而对于文件和目录,权限所起的效果也不完全一致,如:
-
文件:
- r:可对文件进行读取;
- w:可对文件进行修改保存;
- x :可将该文件执行运行为进程;
-
目录:
- r:可浏览该目录;
- w :可删除或移动目录内的文件;
- x :具有进入该目录的权限,如使用cd命令切换工作目录到对应目录;
常用的权限管理命令:
文件权限修改命令:chmod
该命令用于管理修改用户的权限,通常只有管理员root才能使用。
- 命令格式:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
- 常用选项:
-R:表示递归执行;
--reference=RFILE :将参考RFILE文件的权限,将FILE权限更改为与RFILE文件权限一致;
-
权限表示模式:
-
- MODE:以十六位进制表示用户权限,权限的对应值分别为:r=4,w=2,x=1。通过将三个权限身份的权限位分别独立相加得出MODE值,如:rwxr--rw-可表示为745,rw-r--r--可表示为644,rwx------可表示为700等等。
-
- OCTAL-MODE :八进制表示模式,表示格式:[ugoa][+-=][rwx],分别以u,g,o代表user,group,others三个权限身份,+/-为为权限身份增加或删减对应的权限,=为给对应的权限身份赋予权限,rwx分别为读写执行权限。
-
使用实例:
- 修改文件权限为属主有读写权限,属组只有读权限,其他组没有权限:
[root@localhost tmp]# chmod 640 modtest
[root@localhost tmp]# ll modtest
-rw-r-----. 1 root root 0 2月 5 10:23 modtest
- 为文件的属组加上写权限:
[root@localhost tmp]# chmod g+w modtest
[root@localhost tmp]# ll modtest
-rw-rw----. 1 root root 0 2月 5 10:23 modtest
- 以/etc/init.d/network为模板,将其权限复制给其他文件:
[root@localhost tmp]# chmod --reference=/etc/init.d/network modtest
[root@localhost tmp]# ll modtest
-rwxr-xr-x. 1 root root 0 2月 5 10:23 modtest
[root@localhost tmp]# ll /etc/init.d/network
-rwxr-xr-x. 1 root root 6630 9月 16 2015 /etc/init.d/network
更改文件/目录的属主或属组:chown
chown命令用于更改文件或目录的属主或属组,该命令可以指定对应的用户成为某一文件或目录的拥有者,只有文件的拥有者和管理员root才能使用该命令。
- 命令格式:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
- 常用选项:
-R:递归处理,将指定目录下的所有文件及子目录一并处理;
--reference=RFILE:将参考RFILE文件的权限身份,将FILE拥有者情况更改为与RFILE一致;
参数说明:
[OWNER][:[GROUP]] :属主和属组之间通过:
连接,两者之间可有一为空,但不能同时为空,如:charlie,:root。使用案例:
- 更改文件属组为charlie:
[root@localhost tmp]# chown :charlie modtest
[root@localhost tmp]# ll modtest
-rwxr-xr-x. 1 root charlie 0 2月 5 10:23 modtest
- 将文件目录及其子目录和文件更改为同一个属主:
[root@localhost tmp]# chown -R charlie testdir/
[root@localhost tmp]# ll testdir/
总用量 4
-rwxr-xr-x. 1 charlie root 3472 2月 1 11:45 passwd
drwxr-xr-x. 2 charlie root 6 2月 5 11:12 test2
[root@localhost tmp]# ll -d testdir
drwxr-xr-x. 3 charlie root 31 2月 5 11:12 testdir
显示或设定文件的模式掩码:umask
umask命令用于设置或打印当前的文件模式掩码,如果没有提供相应的掩码,则默认打印显示当前的umask值。
- 命令格式:
umask [-p] [-S] [模式]
- 常用选项:
-p:输出的权限掩码可以作为指令来执行;
-S:以符号的方式输出权限掩码;
- **模式**:
对于文件和目录来说,利用umask值来得出默认权限的计算方式是不一样的:
1. 文件:由于文件默认不具有执行权限,因此新建文件的默认权限为:666-umask值;
2. 目录:新建目录的默认全新未,777-umask值。
- 使用实例:
利用umask命令,可以指定哪些权限在新建文件的默认权限中被删除,如,更改umask值,使得新建文件默认权限的属主不再具有写权限,属组具有读写权限,其他组没有任何权限:
[root@localhost ~]# umask 0206
[root@localhost ~]# touch /tmp/umask
[root@localhost ~]# ll /tmp/umask
-r--rw----. 1 root root 0 2月 6 22:07 /tmp/umask