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

  • 内容
  • 评论
  • 相关

很多的站长或者web开发者在程序完成之后,一般都不会去花太多的时间关注文件夹的权限,殊不知文件夹的权限其实是个蛮重要的环节,因为这关系到你的网路文件的安全。
那么首先我们要知道文件的权限和所有者则个概念,我们可以使用

ls -al filename

查看文件的权限和所有者以及所属群组。

-rw-r--r-- 1 root root 30 12-17 16:24 1217.php

这个文件的权限是644,所有者是roo,所属群组是root。那么为什么是root所有呢,因为我是使用root账户新建的。或者如果你通过root账号的ftp上传一个文件,这个文件就是root所有。如果看到以下文件信息:

drw-r--r--

其中的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,也就是可读,因此我们可以访问到。如果我们修改一下这个权限:

chmod o= filename

现在再来查看这个权限

ls -al filename
-rw-r----- 1 root root 30 12-17 16:24 1217.php

可以看到other用户已经没有任何权限,这时候你要是访问www.xiaotiejiang.com/filename就会提示你500错误。
那么我们知道除了root账户,我还有很多的账户,例如我有个ftp账户xiaotiejiang,那么对于刚才那个文件,我使用xiaotiejiang进入系统或者ftp找到这个文件的话,有什么权限呢。okay对于640的权限,xiaotiejiang对于这个文件什么都做不了。
让我们看这一段代码:

$content = $smarty->fetch('file.html');
$fh = fopen('file.html', 'w+');
fwrite($fh, $content);
fclose($fh);

这里我们使用fopen打开一个文件,如果没有就新建,这个你的权限大家可以猜一下是多少,我们查看一下:

-rw-r--r-- 1 apache apache 0 May 21 21:49 file.html

这个文件所有者和群组都是apache,这里也就是说我们通过php cgi来新建和生成的文件一般属于apache,也就是说你通过http访问网页的用户也是apache。其权限是644,所有者有读写权限,当然我们可以修改一下这个权限:

chmod('file.html',0777);

在这里我们顺带讲一下linux下面的用户和用户组的查看。
linux不同于windows,在命令行模式下查看所有用户:

vim /etc/passwd

我们看第三个参数,如果大于500,就是后续建立的用户,否则就是系统自带的用户。
查看系统下所有的用户组也是查看相关文件即可:

vim /etc/group

显示格式为:用户组名:组密码:GID:组内帐号(多个帐号用逗号分隔)。

那么在平时网站架设的时候,我们如何正确合理的设置网站文件呢。其实我们在linux中自己建立的文件或者通过ftp新建上传的文件默认是644,也就是说所有者拥有读写权限,而group和other用户具有写权限。在平时部署站点的时候,对于需要执行的脚本例如.php,.do文件,我们可以设置为other用户可只可读;对于需要写入的文件,设置为other用户为只写而不能执行。
在linux下面很多时候服务器时间会出错,例如我们想让服务器时间为北京时间,那么我们可以这样来设置和同步:

rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#同步时间
ntpdate asia.pool.ntp.org

这个时候再来查看时间

date

如果你想查看你的服务器的时区,可以这样查看:

date -R

如果不对可以这样设置:

tzselect

当然,你也可以手动设置时间

date -s 16/01/2013
date -s 10:12:11

这个命令可以进入图形化设置界面,你可以分步骤选择一下。
这里服务器的时间已经修改好了,可是很多时候我们发现,在我使用mysql的now()函数存储时间的时候,会发现时间依然不对,这其实是mysql的默认时区配置问题,我们先查看

show variables like '%zone%';
select @@time_zone;

如果两者不一致,那么我们进行修改:

vi /etc/my.cnf

在[mysqld]的后面加上这一行

default-time-zone = '+8:00'

重启mysql即可;

评论

0条评论

发表评论

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