合理设置linux下网路文件的权限、服务器时间配置

很多的站长或者web开发者在程序完成之后,一般都不会去花太多的时间关注文件夹的权限,殊不知文件夹的权限其实是个蛮重要的环节,因为这关系到你的网路文件的安全。
那么首先我们要知道文件的权限和所有者则个概念,我们可以使用
[shell]ls -al filename[/shell]
查看文件的权限和所有者以及所属群组。
[shell]-rw-r–r– 1 root root 30 12-17 16:24 1217.php[/shell]
这个文件的权限是644,所有者是roo,所属群组是root。那么为什么是root所有呢,因为我是使用root账户新建的。或者如果你通过root账号的ftp上传一个文件,这个文件就是root所有。如果看到以下文件信息:[shell]
drw-r–r–[/shell]其中的d表示此文件是目录文件,如果为‘-’则不是。
(附:举例来讲,如果我新建一个文件夹为test,其所有者是root,所属群组是root,权限是drwxr-xr-x,也就是755,我现在有一个ftp用户ftpfortest,用户组为ftp,如果我想通过ftp上传文件到test文件夹会失败,因为对于test文件夹来说,ftpfortest是other,那么ftpfortest的权限就是drwxr-xr-x中的第三段,也就是可读可执行,但是不能写入,因此想要上传成功就要改成757或者777,或者将这个test文件夹的所有者改成ftpfortest即可。)
那么我们可以通过www.gaoxueping.com/filename来访问这个文件吗。okay,答案是肯定的。首先我们是other用户来访问这个文件。因为other的权限是r,也就是可读,因此我们可以访问到。如果我们修改一下这个权限:
[shell]chmod o= filename[/shell]
现在再来查看这个权限
[shell]ls -al filename
-rw-r—– 1 root root 30 12-17 16:24 1217.php[/shell]
可以看到other用户已经没有任何权限,这时候你要是访问www.xiaotiejiang.com/filename就会提示你500错误。
那么我们知道除了root账户,我还有很多的账户,例如我有个ftp账户xiaotiejiang,那么对于刚才那个文件,我使用xiaotiejiang进入系统或者ftp找到这个文件的话,有什么权限呢。okay对于640的权限,xiaotiejiang对于这个文件什么都做不了。
让我们看这一段代码:[php]
$content = $smarty->fetch(‘file.html’);
$fh = fopen(‘file.html’, ‘w+’);
fwrite($fh, $content);
fclose($fh);
[/php]
这里我们使用fopen打开一个文件,如果没有就新建,这个你的权限大家可以猜一下是多少,我们查看一下:[shell]
-rw-r–r– 1 apache apache 0 May 21 21:49 file.html[/shell]
这个文件所有者和群组都是apache,这里也就是说我们通过php cgi来新建和生成的文件一般属于apache,也就是说你通过http访问网页的用户也是apache。其权限是644,所有者有读写权限,当然我们可以修改一下这个权限:[php]
chmod(‘file.html’,0777);
[/php]
在这里我们顺带讲一下linux下面的用户和用户组的查看。
linux不同于windows,在命令行模式下查看所有用户:[shell]
vim /etc/passwd[/shell]
我们看第三个参数,如果大于500,就是后续建立的用户,否则就是系统自带的用户。
查看系统下所有的用户组也是查看相关文件即可:[shell]
vim /etc/group[/shell]
显示格式为:用户组名:组密码:GID:组内帐号(多个帐号用逗号分隔)。

那么在平时网站架设的时候,我们如何正确合理的设置网站文件呢。其实我们在linux中自己建立的文件或者通过ftp新建上传的文件默认是644,也就是说所有者拥有读写权限,而group和other用户具有写权限。在平时部署站点的时候,对于需要执行的脚本例如.php,.do文件,我们可以设置为other用户可只可读;对于需要写入的文件,设置为other用户为只写而不能执行。
在linux下面很多时候服务器时间会出错,例如我们想让服务器时间为北京时间,那么我们可以这样来设置和同步:
[shell]rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#同步时间
ntpdate asia.pool.ntp.org[/shell]
这个时候再来查看时间
[shell]date[/shell]
如果你想查看你的服务器的时区,可以这样查看:[shell]
date -R[/shell]
如果不对可以这样设置:[shell]
tzselect[/shell]
当然,你也可以手动设置时间[shell]
date -s 16/01/2013
date -s 10:12:11[/shell]
这个命令可以进入图形化设置界面,你可以分步骤选择一下。
这里服务器的时间已经修改好了,可是很多时候我们发现,在我使用mysql的now()函数存储时间的时候,会发现时间依然不对,这其实是mysql的默认时区配置问题,我们先查看
[shell]show variables like ‘%zone%’;
select @@time_zone;[/shell]
如果两者不一致,那么我们进行修改:
[shell]vi /etc/my.cnf[/shell]
在[mysqld]的后面加上这一行
[shell]default-time-zone = ‘+8:00′[/shell]
重启mysql即可;

Avatar photo

About Blackford

这是个最好的时代,这是个最坏的时代,这是个充满希望的春天,这是个令人绝望的冬天,我们前面什么都有,我们前面什么都没有。梦想,让我们一次次的走远,又一次次的回头,一个关于人生的梦想还在不断奔跑,带着喜悦和疼痛,不过一切才刚刚开始,并且直到今天也远远没有结束
This entry was posted in 架构运维 and tagged , , , . Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用*标注