每个用户在登录linux系统后,都会创建属于自己的文件,也都会有属于个人隐私的资料等,而Linux是一个多任务,多用户的系统,注定了会有很多用户登录使用,linux的每个文件也都有很多属性,为了保证用户个人隐私或者公司不同部门间的数据安全,我们必须为每个文件设置其应有的权限设置,就像现实中的张三不能随便进入李四的家,更不能随便把李四家的车开出去卖了一样。
在Linux中,将使用系统资源的用户分为4类:超级用户、文件或目录的属主、属主的同组用户以及其他用户。在linux系统中,用户的系统账号默认保存在/etc/passwd文件中,用户的密码文件保存在/etc/shadow文件中,用户的组信息保存在/etc/group文件中。所以这三个文件绝对不能随意修改或者删除。当然一般情况下,普通用户默认也不具备这样的权限,但是就如生活中一样,总有些某些“万能的天神”可以随意的对任何管辖范围内的人民封其口舌,闭其眼目、限制其自由一样,Linux系统中也有这样一位“天神”,那就是root,他基本上可以为所欲为,不受他人控制。所以使用root身份时,一定要慎之又慎!
要了解linux的文件属性,我们可以先使用ls -l命令查看下文件的权限。
[root@xlogin data]# ls -l authority -rw-r--r--. 1 root root 6 12月 13 17:40 authority 文件属性 文件被硬链接的次数 文件拥有者 文件所属用户组 文件大小 文件最近一次的修改日期 文件名
当一个用户或进程访问一个文件时,如果他的用户ID或进程ID属主与文件的属主相同,则他具有文件属主的权限;
当不满足属主条件时,则检查进程的属主是否属于文件的属组;如果满足属组条件,则应用属组权限;
如果当属主和属组都不满足时,就只能应用other用户的权限了!
这三个一组共9个字符,代表的意义如下:
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(excute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
-:表示不具有该项权限。
系统管理员和文件属主可以根据需要来设置文件的权限,有两种设置方法:文字设定法和数值设定法。
(1)文字设定法
chomd的文字设定法的格式为:chmod [ugoa][+-=][rwx],[ugoa][+-=][rwx] File_Name
第1个选项表示要赋予权限的用户,具体说明如下:
u:属主
g:所属组用户
o:其他用户
a:所有用户
第2个选项表示要进行的操作,具体说明如下:
+:增加权限
-:删除权限
=:分配权限,同时将原有权限删除
第3个选项是要分配的权限,具体说明如下:
r/x/w:允许读取/写入/执行
(2)数值设定法
chmod的数值设定法的格式为:chmod A1B2C3 File_Name
其中A1、B2、C3分别代表属主的权限、组用户的权限和其他用户的权限,这三个选项都是八进制数字。
权限组合机制:
--- 000 0 --x 001 1 -w- 010 2 -wx 011 3 r-- 100 4 r-x 101 5 rw- 110 6 rwx 111 7
[root@xlogin data]# ll 总用量 4 ----------. 1 root root 6 12月 13 17:40 authority [root@xlogin data]# chmod 124 authority [root@xlogin data]# ll 总用量 4 ---x-w-r--. 1 root root 6 12月 13 17:40 authority [root@xlogin data]# chmod 600 authority [root@xlogin data]# ll 总用量 4 -rw-------. 1 root root 6 12月 13 17:40 authority
注意:如果想一次性修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,可以使用-R参数,表示使用递归修改处理目录下全部文件的权限;
普通用户仅能修改属主为自己的那些文件的权限。
[root@xlogin /]# ll data/ 总用量 4 -rw-------. 1 root root 6 12月 13 17:40 authority drwxr-xr-x. 2 root root 17 12月 13 20:51 backup [root@xlogin /]# ll data/backup/ 总用量 0 ---x------. 1 root root 0 12月 13 20:51 test [root@xlogin /]# chmod -R 644 /data/ [root@xlogin /]# ll data/ 总用量 4 -rw-r--r--. 1 root root 6 12月 13 17:40 authority drw-r--r--. 2 root root 17 12月 13 20:51 backup [root@xlogin /]# ll /data/backup/ 总用量 0 -rw-r--r--. 1 root root 0 12月 13 20:51 test
二、更改文件属主、属组(chown)
改变文件的属主和属组使用用chown命令。
命令格式为:chown [-R]
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
[root@xlogin data]# ll 总用量 8 -rw-r--r--. 1 root root 6 12月 13 17:40 authority -rw-r--r--. 1 root root 6 12月 13 22:01 linux ---x-w-r--. 1 root root 5 12月 13 21:56 test [root@xlogin data]# chown xlogin authority [root@xlogin data]# chown magedu.xlogin test [root@xlogin data]# ll 总用量 12 -rw-r--r--. 1 xlogin root 6 12月 13 17:40 authority -rw-r--r--. 1 root root 6 12月 13 22:01 linux ---x-w-r--. 1 magedu xlogin 5 12月 13 21:56 test [root@xlogin data]# chown --reference=/data/authority linux [root@xlogin data]# ll 总用量 12 -rw-r--r--. 1 xlogin root 6 12月 13 17:40 authority -rw-r--r--. 1 xlogin root 6 12月 13 22:01 linux ---x-w-r--. 1 magedu xlogin 5 12月 13 21:56 test [root@xlogin data]# ll 总用量 12 -rw-r--r--. 1 xlogin root 6 12月 13 17:40 authority -rw-r--r--. 1 xlogin root 6 12月 13 22:01 linux ---x-w-r--. 1 magedu xlogin 5 12月 13 21:56 test [root@xlogin data]# chown -R linux.magedu /data/ [root@xlogin data]# ll 总用量 12 -rw-r--r--. 1 linux magedu 6 12月 13 17:40 authority -rw-r--r--. 1 linux magedu 6 12月 13 22:01 linux ---x-w-r--. 1 linux magedu 5 12月 13 21:56 test
三、设置文件和目录的生成掩码
当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask又叫文件的权限反向掩码,遮罩码,umask是从权限777中“拿走”相应的位,且文件创建时不能赋予执行权限。用户可以使用umask命令设置文件夹的默认生成掩码。默认的生成掩码会告诉操作系统当创建一个新的文件或目录时不应该赋予哪些权限。
umask设置了用户创建文件的默认权限,它与chmod命令的设定刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。
对于文件而言,系统不允许创建之初就对其赋予可执行权限,因此文件权限的最高限定是6,目录为7。将最高可选值减去umask中的值即是默认文件创建权限。因此当umask为022时,默认创建文件的权限为644,而默认创建目录的权限为755。
此类设定仅对当前shell进程有效,一般可在/etc/profile、/etc/bashrc、$ [HOME]/.bash_profile、$[HOME]/.profile或$[HOME]/.bashrc中设置umask值。例如用户将umask命令放在环境文件(.bash_profile)中(具体取决于你使用的Linux发行版),就可以在下次系统重启后继续控制所有新建文件或目录的访问权限。
命令格式为:umask [A1B2C3]
其中,A1、B2、C3分别表示的是不允许属主、属组、和其他用户有的权限。
用法非常简单,只需执行umask 777 命令,便代表屏蔽所有的权限,因而之后建立的文件或目录,其权限都变成000,依次类推。
例如:
umask #显示当前的默认生成掩码
umask 022 #设置不允许同一属组用户和其他用户有写权限
root用户的umask值为022: 1) 文件的最大权限 rwx rwx rwx (777) 2) umask值为022 ----w--w- 3) 目录权限 rwxr-xr-x (755) 这就是目录创建缺省权限 4) 文件权限 rw-r--r-- (644) 这就是文件创建缺省权限 [root@xlogin data]# id uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@xlogin data]# umask 0022 [root@xlogin ~]# touch 1 [root@xlogin ~]# mkdir 2 [root@xlogin data]# umask 777 [root@xlogin data]# touch test [root@xlogin ~]# ll 总用量 4 -rw-r--r--. 1 root root 0 12月 13 23:06 1 drwxr-xr-x. 2 root root 6 12月 13 23:06 2 ----------. 1 root root 0 12月 13 22:55 test 普通用户的umask值为002: 1) 文件的最大权限 rwx rwx rwx (777) 2) umask值为002 -------w- 3) 目录权限 rwxrwxr-x (775) 这就是目录创建缺省权限 4) 文件权限 rw-rw-r-- (664) 这就是文件创建缺省权限 [root@xlogin ~]# su - linux 上一次登录:日 12月 13 22:45:20 CST 2015pts/1 上 [linux@xlogin ~]$ id uid=1002(linux) gid=1002(linux) 组=1002(linux) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [linux@xlogin ~]$ umask 0002 [linux@xlogin ~]$ touch 3 [linux@xlogin ~]$ mkdir 4 [linux@xlogin ~]$ ll 总用量 0 -rw-rw-r--. 1 linux linux 0 12月 13 23:08 3 drwxrwxr-x. 2 linux linux 6 12月 13 23:08 4
本文出自 “虫子的博客” 博客,请务必保留此出处http://xlogin.blog.51cto.com/3473583/1722542
原文:http://xlogin.blog.51cto.com/3473583/1722542