运维 pgsql 安装完后某次启动不了
pgsql 安装完后某次启动不了
错误 data directory "/usr/local/postgresql/data" has invalid permissions
安装成功后一直可以 后面同事敲了
chmod -R 777 /usr/local 导致不行
改到了 /usr/local/postgresql/data 权限
/usr/local/postgresql/data的权限有限制才可以
重新 chmod 0750 /usr/local/postgresql/data
后
systemctl restart postgres 可以启动
不要随便 chmod -R 777 太大的目录不然会导致很大的事故
chmod 777和 chmod 0777的区别 ai回答
在 Linux 文件系统中,0777
和 777
都表示文件或目录的权限设置,但它们的细微区别在于权限表示法的完整性和对特殊权限位的处理。以下是详细解释:
1. 权限的基本组成
Linux 文件权限由三部分组成:
- 所有者权限(Owner)
- 所属组权限(Group)
- 其他用户权限(Others)
每种权限可以通过 r
(读)、w
(写)、x
(执行)表示,也可以用 八进制数字(0-7)表示:
4
= 读(r)2
= 写(w)1
= 执行(x)- 将这些数值相加得到权限值(如
7 = 4+2+1
表示rwx
)。
2. 777
的含义
777
是三位八进制数,分别对应:- 所有者权限:7 →
rwx
- 组权限:7 →
rwx
- 其他用户权限:7 →
rwx
- 所有者权限:7 →
- 此时 未显式设置特殊权限位(如 SetUID、SetGID、Sticky Bit)。
- 在实际使用中(如
chmod 777 file
),系统会默认特殊权限位保持不变(如果已存在),或自动补零。
3. 0777
的含义
0777
是四位八进制数,其中:- 第一位
0
:表示特殊权限位(SetUID、SetGID、Sticky Bit)被显式设置为0
(即关闭)。 - 后三位
777
:与三位表示法一致,赋予所有者、组、其他用户全部权限。
- 第一位
- 使用
chmod 0777 file
时,会强制清除所有特殊权限。
4. 关键区别
权限表示 | 特殊权限位处理 | 适用场景 |
---|---|---|
777 | 不修改特殊权限位 | 仅修改基础权限,保留原有的特殊权限。 |
0777 | 清除所有特殊权限位 | 明确关闭特殊权限,仅设置基础权限。 |
5. 示例
假设一个文件原有特殊权限 SetUID
(表现为 rwsr-xr-x
):
bashCopy Code
原始权限:4755
-
使用
chmod 777 file
:- 基础权限变为
777
(rwxrwxrwx
)。 - 特殊权限位保留(SetUID 仍然有效),最终权限为
4777
→rwsrwxrwx
。
- 基础权限变为
-
使用
chmod 0777 file
:- 基础权限变为
777
(rwxrwxrwx
)。 - 特殊权限位被清除(SetUID 被移除),最终权限为
0777
→rwxrwxrwx
。
- 基础权限变为
6. 注意事项
- 权限安全:
777
或0777
会开放所有权限,可能导致安全风险,需谨慎使用。 - 特殊权限位:如果文件需要保留 SetUID/SetGID/Sticky Bit(如
/tmp
目录需要 Sticky Bit),应避免使用0777
。
总结
-
777
:仅修改基础权限,不影响特殊权限位。 -
0777
:清除特殊权限位后再设置基础权限为全开放。