新人碰Linux,十有八九第一个拦路虎就是权限。装个网站,目录写不进去,报Permission denied;下载个脚本想运行,又提示没权限;最崩溃的是,你问老同事,人家甩给你一句chmod 755,你一脸懵:755是啥?为啥是755不是766?今天我就把这事儿一次给你掰扯清楚,保证你听完就会自己配。

先把权限这事的骨架搭起来
Linux里每个文件都带着一套权限,管三拨人:文件的主人(叫属主)、主人所在的那个小组(叫属组)、以及剩下所有路人(叫其他)。每一拨人又有三种权限:读、写、执行。你用ls -l看一眼,开头那一串像 -rw-r–r– 的字符,第一个横杠说明这是普通文件,剩下九个字符仨一组,正好对应属主、属组、其他人,每组里的r就是读、w就是写、x就是执行,有权限显示字母,没权限就是个横杠。
755、644这种数字是咋来的
重点来了,数字其实就是把权限翻译成分数:读是4,写是2,执行是1,把一组仨加一块儿就是一个数。rwx加一起4加2加1等于7,rw-是4加2等于6,r–就是光秃秃的4。所以755的意思就是:主人7(全能),组里人5(能读能执行),路人5。644就是主人能读写,其他人只能读。
常见组合到底啥时候用
755是目录和脚本的常客,网站文件也爱用它,意思是主人能随便折腾,别人能看能跑但改不了。644是普通文件的标配,大家都能读,只有主人能改。600这个数你可别小看,密钥、密码文件这种敏感东西就靠它锁门,主人自己能读能写,别人连看都别看。至于777,就是所有人全能写——我劝你把它当成禁忌,尤其别给网站目录开777,那就等于给黑客递钥匙,我见过太多站这么干然后被挂马的,肠子都悔青了。
命令咋敲,记住这两个就够
改权限用chmod,改主人用chown。比如给一个脚本加上执行权限:chmod 755 script.sh;想把整个网站目录都改成正确权限,文件644目录755:find /www/wwwroot -type f -exec chmod 644 {} \; 再find一下目录来一遍755,两条下去,网站的权限就规整了。
改主人也常见,比如PHP-FPM是用www这个用户跑的,那网站目录就得让它能写,这时候chown -R www:www /www/wwwroot 一下,把目录整个送给www用户。但注意啊,不是所有目录都得给www,只有程序真要写的那几个(像缓存、上传目录)放开就行,全都放开,风险反而大。
改完还报没权限?多半是这仨情况
第一,光改了文件没改目录,进目录也得有执行权限,文件对了目录不对照样进不去。第二,属主和属组没搞对,程序用www跑,文件却是root的,www自然没脾气。第三,你可能压根看错文件了,改的那个跟你报错的那个不是同一个,这种事我真遇到过,排查半天结果是改了个寂寞。
为啥文件和目录的权限要分开设
网站目录这东西最讲究,文件归文件,目录归目录,别一刀切全设成一样的。目录得让程序能进能找文件,所以通常要755,带着执行权限;文件只要能被读,644就够了。你要是图省事整个网站全部777或者全部644,要么太松要么太紧,都会出问题。最标准的姿势就是我前面说的:find一下把所有文件设644、目录设755,两行命令,一劳永逸。程序真要写的那几个目录(缓存、上传、session),单独拎出来放开写权限就行。
改完怎么验证,心里才有底
改完权限,别急着跑,用ls -l看一眼目标文件,权限那串字符对不对一眼就能看出来;再模拟一下程序的身份试试,比如程序是www用户跑的,就用sudo -u www touch /网站目录/test.txt试试能不能建文件,能建说明写权限给了,建不了就再调。这种验证方法看着笨,但真能帮你提前发现漏网之鱼,比上线了再被用户报错强。
最后送你句口诀
文件644、目录755、写目录给对用户、敏感文件上600,这套组合拳打完,网站权限相关的破事儿基本就绝迹了。别觉得权限烦,它其实是Linux给你的免费保险,用好了,安全性和省心程度都上一个台阶。行了,去试试吧,敲两遍就会了。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!