Linux基本权限和归属

说实话,Linux权限这东西,说起来简单但真用起来总得碰壁几次。
就拿我当年运维服务器那会儿说吧,有个新来的同事想给某个目录加写权限,结果手一抖改成了所有者,那天整个团队差点因为这个炸锅。

先说说最基础的rwx吧。
我之前管过一个网站项目,有个目录权限是drwxr-xr-x,意思就是所有者能读写执行,组和其他人只能读和执行。
当时有个编辑器放在那儿,新人以为随便改,结果把组权限改了,导致上传图片直接崩溃——因为这个目录可执行权限没了,脚本执行不了啊。
这就是为啥目录一般要给组加x权限,不然cd进去连看文件都费劲。

权限的继承特别坑人。
我有个客户服务器是Windows转过来的运维,他总抱怨Linux目录权限搞不懂。
其实道理很简单,比如他创建了一个目录,默认自己就是所有者,然后他把自己加到某个开发组里。
这时候他再cd进去写文件,系统就会这么判断:你是我(所有者)?是,给你写权限。
你是我所在的组(开发组)?是,但因为你已经是所有者,所以写权限还是优先看所有者。
这就是为啥你明明在组里,但目录还是只读——因为所有者权限压倒了组权限。

chown这玩意儿更考验耐心。
我帮一个研究机构管数据服务器时,有个物理学家老兄总说数据存不了。
一查发现,他每次用root登录后把文件给某个实验组,结果忘了加-R。
结果文件只能在这个目录里改,子目录里创建个新文件还是只属于root。
后来我教他,每次用chown -R 实验组:实验组 /data/xxx,这样递归改,他用了半年才没再抱怨权限问题。

最逗的是组管理。
我有个项目用SELinux,有个新人把用户加入组后直接重启系统。
结果发现所有文件打不开——因为SELinux会重置组权限。
后来我们搞了个脚本,每次用gpasswd -a 用户 组名后,让系统执行一次touch /tmp/selinux_restart,这样就能正常用了。
说实话,SELinux的组策略比普通Linux复杂多了,但一旦搞懂,安全性确实上去了。

说到底,权限这东西就像管办公室钥匙。
所有者手里有总钥匙,能随便配副锁;所属组的人能借总钥匙,但只能用指定房间;其他人连门框都摸不着。
关键是要知道,你每次操作时系统到底在怎么判断权限——先看你是谁,再看你从哪来。

linux无法打开并写入文件怎么办

对,就是权限问题。
先检查权限,ls-l看权限,不行就chmod改。

文件不存在?用ls找,没货就touch造一个。

文件被占?看看进程,有就关了,或者等它玩完。

磁盘空间?df-h一查,不够就清理。

文件系统坏?fsck来修复,保证文件能读写。

linux下的nginx,网站目录怎么加写入权限

Linux下配Nginx啊,确实得给网站目录加写权限。
说实话,这事儿挺常见的。

Nginx配置文件在哪?一般有两种情况。
默认装的话,文件在 /etc/nginx/conf.d/default.conf。
要是自己从源码装,那就在 /usr/local/nginx/conf/nginx.conf。
具体文件路径得看你咋装的。

配置文件里头,大概长这样:
nginx server { listen 8 0; server_name 域名; location / { root 网站目录; } }
这里面,listen 8 0; 就是Nginx在监听8 0端口,这玩意儿是HTTP的默认端口。
server_name 域名; 就是写你网站用的那个域名。
root 网站目录; 就是Nginx从哪个目录开始找你的网页文件。

为了让Nginx能往网站目录里写东西,得把目录的所有权给Nginx用户。
用这个命令改:
bash chown -R nginx:nginx 网站目录
这命令的意思是,把目录(以及里面所有子文件和子目录)的所有权都改成nginx用户和nginx组。

然后,还得改改目录权限,让Nginx用户能读写。
用这个命令:
bash chmod -R 7 5 5 网站目录
这个7 5 5 ,说白了就是:你(Nginx用户)能读能写能进目录,其他人只能读。

改完这些,记得重启Nginx。
用这个命令:
bash systemctl restart nginx
重启完,用浏览器访问下你的网站,看看能不能正常写东西。
要是不行,查查Nginx的错误日志:
bash tail -f /var/log/nginx/error.log
日志里头一般能看出问题出在哪。

就这么着,网站目录就能正常读写啦。

【Linux】Linux中的0644 和 0755的权限

结论:Linux权限管理用数字,07 5 5 目录,06 4 4 文件。

ls -l 查看权限。
r=4 , w=2 , x=1
07 5 5 = 4 +2 +1 = 7 (user), 4 +2 = 6 (group), 4 +1 = 5 (other)。
06 4 4 = 4 +2 = 6 (user), 4 = 4 (group), 4 = 4 (other)。

Python: import os cwd = os.getcwd() 获取当前目录 os.mkdir(cwd + "/newdir", 07 5 5 ) 创建目录并设置权限
注意:Linux权限比Windows复杂。
别用Windows思维想Linux权限。