文件拥有者
每个文件(或者目录)从属于一个文件拥有者(一般是一个用户名)和一个用户组。
文件拥有者一般来说就是生成(或者拷贝)这个文件的用户。
用户组经常包含一个用户-文件拥有者。
用户组通常有一个名字来标识该用户,但是也不是必须的。
一个文件只能被文件拥有者删除,或者是文件所属的用户组里的其他用户,或者是root用户。
对于其他用户,如果被赋于适当的权限,也有可能修改或者删除该文件。
文件所属的用户和用户组可以通过命令ls –l(长文件名显示格式)来显示:
--根据以前学过的建立目录和使用vi建立一个测试文件。
如:
--这里是以OK_008普通用户登录。
Last login: Wed Sep 26 18:57:44 2007 from 192.168.1.2
[OK_008@CentOS4 ~]$ ls
[OK_008@CentOS4 ~]$ mkdir OK008Filed --创建一个叫OK008Filed的文件目录
[OK_008@CentOS4 ~]$ ls
OK008Filed
[OK_008@CentOS4 ~]$ cd OK008Field
-bash: cd: OK008Field: No such file or directory
[OK_008@CentOS4 ~]$ cd OK008Filed
[OK_008@CentOS4 OK008Filed]$ ls
[OK_008@CentOS4 OK008Filed]$ vi mytxt.txt --新建一个mytxt.txt的文件,相关的vi使用说明这里略。
Hello every one!
~
~
~
[OK_008@CentOS4 OK008Filed]$ ls
mytxt.txt
[OK_008@CentOS4 OK008Filed]$
现在我们使用root用户进入查看刚才建立的目录文件和文本文件的位置:
[root@CentOS4 ~]# cd /home
[root@CentOS4 home]# ls
OK_008
[root@CentOS4 home]# cd OK_008
[root@CentOS4 OK_008]# ls
OK008Filed
[root@CentOS4 OK_008]#
[root@CentOS4 OK008Filed]# pwd mytxt.txt
/home/OK_008/OK008Filed
--这说明刚才我建立的文件mytxt.txt在目录/home/OK_008/OK008Filed下。
现在圆规正传,检查文件所属的用户和用户组:
[OK_008@CentOS4 OK008Filed]$ ls -l mytxt.txt
-rw-rw-r-- 1 OK_008 OK_008 17 Sep 26 19:00 mytxt.txt
--这里有个问题就是教材中只说到使用adduser来建立用户,但不知道怎么样建立用户组。
--呵呵,晕哦。找半天资料没有一个说到,又不能上网baidu只有忽悠。先滤过。
--看看方法吧。
-rw-rw-r--
10bit,由4部分构成(前面学过):
类型(1bit) + 用户所有者权限(3bit) + 工作组权限(3bit) + 其他用户或用户组权限 (3bit)
这里的r表示只读,w表示可写,-表示此位无权限
《linux新手管理员指南CHM》里面总结的文件权限非常有不错:
除了字符,也可以使用数字来设置权限。想知道是然后工作的,看以下例子:
execute=1
write=2
read=4
对于指定的三种不同用户级别总结如下:
0 = 没有任何权限 (不能读,不能写,不能执行) (常见)
1 = 只能执行 (看起来不太正常)
2 = 只能写 (看起来不太正常)
3 = 只能写和执行 (看起来不太正常)
4 = 只读 (常见)
5 = 只读和执行 (常见)
6 = 读和写 (常见)
7 = 读,写和执行 (常见)
要给三个不同的用户级别设置访问权限,只需要把三个数字粘在一起就可以了。举例:
chmod 770 junk
本机操作:
[OK_008@CentOS4 OK008Filed]$ chmod 770 mytxt.txt
[OK_008@CentOS4 OK008Filed]$ ls -l mytxt.txt
-rwxrwx--- 1 OK_008 OK_008 17 Sep 26 19:00 mytxt.txt
[OK_008@CentOS4 OK008Filed]$ --说明成功修改,感觉不错也。
将给文件拥有者和所属用户组所有权限(读,写和执行),而对于其他用户没有任何权限。
chmod 666 junk
本机操作:
[OK_008@CentOS4 OK008Filed]$ chmod 666 mytxt.txt
[OK_008@CentOS4 OK008Filed]$ ls -l mytxt.txt
-rw-rw-rw- 1 OK_008 OK_008 17 Sep 26 19:00 mytxt.txt
[OK_008@CentOS4 OK008Filed]$
这里我们要把当前修改文件的权限原来的:-rw-rw-r-- 1 OK_008 OK_008 17 Sep 26 19:00 mytxt.txt
可以这样:
[OK_008@CentOS4 OK008Filed]$ chmod 664 mytxt.txt
[OK_008@CentOS4 OK008Filed]$ ls -l mytxt.txt
-rw-rw-r-- 1 OK_008 OK_008 17 Sep 26 19:00 mytxt.txt
--从上面的例子我们可以看出原来修改文件权限也不是那么难。呵呵!
将给所有用户(文件拥有者,所属用户组,其他用户)读写权限,但是没有执行权限。
请注意这个666权限设置里很经常用到,有人认为这是整个Linux(或者其他Unix里)的精髓所在。
chmod 411 junk
文件访问权限的数字表示法叫做“八位组”因为是基于八进制的(我们的日常计数系统是基于十进制)。八进制有八个数值从0到7,最大数字是7。对应的,十进制有十个数字从0到9,最大数字是9。八进制表示法对于二进制的文件权限表示法的确非常方便,每一个标志都可以通过设置成0或者1来表示“允许”或者“不允许”,如以下的例子:
用户级别: 文件拥有者 用户组 其他用户
权限设置例子 rwx rw- r--
缺省权限 --- --x - wx
权限的二进制表示法 111 110 100
权限的八进制表示法 7 6 4
目录权限
目录的访问权限和一般文件的访问权限是不同的。对于一般文件:
r =允许读文件内容
w =允许修改文件内容
x =允许执行该文件
对于目录而言:
r =允许列出该目录下的文件和子目录
w =允许生成和删除该目录下的文件
x =允许访问该目录
使用umask设置缺省文件属性
当一个文件生成时,系统给以文件缺省的文件权限。在我的系统里,缺省权限是:
-rw-r--r--
这意味着由该用户生成的文件能被该用户读和写,而用户组和其他用户只能读。还有,在我的Redhat系统里,用户不能读取其他用户的主目录,因为用户主目录的缺省权限是
drwx------
我可以使用以下命令检查我刚生成的文件的缺省权限:
umask -S
(可选项-S代表“符号”告诉umask按容易阅读的格式显示文件权限,而不是缺省的数字格式)
我可以修改新生成文件的缺省权限
umask u=rw,g=,o=
对于新生成的文件,以上命令将给文件拥有者以读和写的权限,而用户组和其他用户将没有任何访问权限。
在umask命令里使用数值来设置文件的缺省属性更加麻烦。因为数值显示的是从用户那里去除掉的权限(刚好和chmod相反),比如:
umask 000
对于新生成的文件,你将给所有人所有的权限。下一个例子给文件拥有者以读和写的权限,而其他用户没有任何权限:
umask 177
为了让设置对系统永久有效,在文件/etc/profile里修改对应的行。
这里大部分的说明技巧来自《linux新手管理员指南》虽然是2004年2月制作的CHM,但感觉不错值得一看。
好了今天就学这么多,一些细节的东西得多接触多练习多摸索。现在晚上11点半了,得去冲凉休息了。
相信明天会更美好!
参考引用来源:《linux新手管理员指南CHM》幻影快递Linux小组翻译2004年版。
《Linux系统开发员》广东省Linux公共服务技术支持中心组编