1.ls -l 命令:
最前面的一位表示文件类型:
d?? 目录。
l?? 符号链接(指向另一个文件)。
s?? 套接字文件。
b?? 块设备文件。
c?? 字符设备文件。
p?? 命名管道文件。
- 普通文件,或者更准确地说,不属于以上几种类型的文件。
后面的连续九位,表示文件的读写权限:
r w x:文件属主权限 这是前面三位
r -? x:同组用户权限 这是中间三位
r -? x:其他用户权限 这是最后三位
2.?新创建文件(夹)的权限
目录:
可以看到,新创建的目录?myshell?的权限是:rwx?r-x?r-x,?即:
onwer?用户具有?read、write、execute?权限,group?和其他用户具有?read、execute权限。
文件:
可以看到,新创建的文件?myfile?的权限是:rw-?r--?r--。
文件在新创建的状态下,不会被赋予执行的权限,这是出于安全性的考虑。
文件权限修改:
#?chmod?777?myfile? //?为所有用户赋予了该文件的所有权限。
#?chmod?a-x?myfile? //?回收所有用户的执行权限(注意?a-x,-x?前面没有空格)。
#?chmod?u+x,go-w?myfile //?赋予文件属主执行权限,同时回收其他用户的写权限
3.?chmod?命令两种模式:符号模式和绝对模式
符号模式:
#?u:?文件属主
#?g:?同组用户
#?o:?其他用户
#?a:?所有用户
+?增加权限
-?回收权限
如:
chmod?a-x?myfile //?剥夺所有用户的文件执行权限
chmod?og-w?myfile
chmod?g+w?myfile
chmod?u+x?myfile
chmod?go+x?myf
chmod?u+x,o-w?myfile
绝对模式:
004? 可读
002 可写
001 可执行
000 没有权限
chmod?750?myfile
对文件myfile增加权限:
7?=?4?+?2?+?1?(属主可读、写、执行)
5?=?4?+?1?(同组用户可读、执行)
0?=?0 (其他用户没有任何权限)
如果对一个目录执行:
chmod?740?*
表示对该目录下的所有文件赋予740权限,但以后新增的目录,权限仍是默认的?rw-??r--?r--
4.?目录的权限
对目录而言,意味着:
读权限:可以列出该目录中的文件
写权限:可以在该目录中创建或删除文件
执行权限:可以搜索或进入该目录
目录的权限将会覆盖该目录中文件的权限。例如,如果目录?docs?具有如下的权限:
而其中的文件?pay?的权限为:
那么?admin?组的用户将无法编辑该文件,因为它所属的目录不具有这样的权限。
该文件对任何用户都可读,但由于它所在的目录并未给?admin?组的用户赋予执行权限,所以该组的用户都将无法访问该目录,他们将会得到“访问受限”的错误消息。
5.suid?和?guid(了解)
suid?意味着如果某个用户对属于自己的?shell?脚本设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。
如文件?myfile?具有?741?的权限,要对其设置suid,只需在其权限数字前加?4?(guid?是加?2,两个都设置就是?4+2=6),
6.?/etc/passwd?文件
该文件中列出了系统合法的用户相关信息。
7.?chown?和?chgrp
chown:文件的所有者和管理员能用这一命令改变文件的所有权,改变之后,原来的所有者,就不能回收他的权限了,如果真要回收,必须求助与管理员。
如:
将?myfile?的所有者,从root变更为用户?zhy?(zhy?必须是在?/etc/passwd?中合法的)。
chgrp:改变文件所属的组。
如:
将?myfile?所属的组,从?root?改成了?zhy?组。
(
#?groups
查看当前登录用户所在的组内所有的成员。
#?id
查看当前登录用户的信息
#?whoami
查看系统当前是被哪个用户登录的。
#?groups?zhy
查看zhy用户所在的组,以及组内成员。
用户组的特性在系统管理中为系统管理员提供了极大的方便,但安全性也是值得关注的,如某个用户下有对系统管理有最重要的内容,最好让用户拥有独立的用户组,或者是把用户下的文件的权限设置为完全私有;另外root用户组一般不要轻易把普通用户加入进去。?
8.umask命令
一个用户登录到系统之后,他所创建的文件有一个缺省的权限,这个权限可以由管理员配置,也可以由用户登录之后用?umask?命令自己配置,这种配置在退出该?shell?或使用另外的?umask?命令之前一直有效。
一般来说,?umask?命令是在?/etc/profile?文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的?umask?,可以在该文件中加入相应的条目。如果希望永久性地设置自己的?umask?值,那么就把它放在自己?$home?目录下的?.profile或?.bash_profile?文件中。
umask?值与权位:
通过:
#?umask
命令查看当前?umask?值(后三位):
可以看到,当前?umaks?值为022,通过上面的表,就可以知道,umask?对应的文件权限是?644,目录权限是?755。
如果没有上面的表,还有另外一种计算方法:
777:? rwx?rwx?rwx
022: ---?-w-?-w-
取上面两行中没有匹配的位就是目录的权限:
rwx?r-x?r-x
换成值就是:755(目录权限)
再将上面算出的结果(rwx?r-x?r-x)中为?x?的位换成?-?,就是文件的权限:
rw-?r--?r--
换成值就是:644(文件权限)
如果希望改变系统的?umask?值,可以这样:
#?umask?007
例:
可以看到,文件的权限确实被改变了。
9.?符号链接
是一个指向文件的指针,在我理解就是?window?下的快捷方式:
.profile?就是?/usr/local/menus/sales.profile?的快捷方式了,这样很方便,比如我们有多个用户,比如?50?个,可以为他们分别创建一个.profile?文件,都指向这同一个?sales.profile?文件,以后我们修改一个?sales.profile?就可以了,不用对每个用户的?.profile?做修改。
创建符号链接的命令格式:
#?ln?[-s]?source_path?target_path
source_path?是要指向的文件
target_path?就是指针(快捷方式)
例:
#?ln?-s?/usr/opt/monitor/regstar/reg.log?/var/adm/logs/monitor.log
在新安装的系统上,通常要进行这样的操作,在/var?目录中创建一个指向/tmp目录的链接,因为有些应用程序认为存在?/var/tmp?目录(然而它实际上并不存在),有些应用程序在该目录中保存一些临时文件。为了使所有的临时文件都放在一个地方,可以使用?ln?命令在?/var目录下建立一个指向?/tmp?目录的链接:
#?ln?-s?/tmp?/var/tmp
以后,如果有应用程序试图将一些临时文件放在?/var/tmp?下,实际上它是被存放在了?/tmp?目录下了,因为?/var/tmp?只是一个符号链接而已。