linux下root账户删除文件夹提示权限不够

昨天在咖啡馆,邻桌的电脑突然蓝屏了,硬盘指示灯疯狂闪烁。
我凑过去看,发现是挂载了一个外置硬盘,但访问时总提示"Permission denied"。
客户急得满头大汗,说硬盘在另一台电脑上也能正常访问,就是这台服务器不行。
我敲敲键盘,心想这事儿得从权限说起。

打开终端,先用df检查硬盘挂载状态。
命令行飞快闪过,屏幕上显示几个挂载点,那个外置硬盘赫然在列。
接着输入ls /media/user/hdd,目录内容瞬间列出,没有乱码也没有错误。
客户松了口气:"这就对了,能读能写..."
但我没放松。
切换到root账户,尝试删除目录1 ,命令行提示"Is a directory"。
再试rm -r /media/user/hdd/dir1 ,还是不行。
客户挠挠头:"我记得我给这个目录设置了只读属性..."
等等,等等,还有个事。
我输入lsattr /media/user/hdd/dir1 ,屏幕上跳出几个字母。
客户凑过来看:"这个i是啥意思?"我解释说这是"immutable"属性,加上后连文件都改不了。
但目录里居然能创建新文件?这就不对了。

切换到普通用户,输入touch /media/user/hdd/dir1 /newfile,文件创建成功。
客户眼睛一亮:"看吧,能写!"可再试chmod 7 7 7 /media/user/hdd/dir1 时,终端显示"Operation not permitted"。
这矛盾了——既能创建文件,又不能改权限。

突然想到alias可能被改了。
输入alias | grep ll,果然有alias ll='ls -lF'。
客户说:"我平时就是用ll看目录。
"我输入unalias ll,再试ls -lF /media/user/hdd/dir1 ,这次显示的权限正常了。
但重新挂载硬盘后,问题又来了...
查资料发现ls确实不显示i属性。
输入lsattr -i /media/user/hdd/dir1 ,果然显示i。
去除方法简单:chattr -i /media/user/hdd/dir1 重启终端,这次删除目录居然成功了。

客户长舒一口气,把硬盘塞进包里:"这下好了。
"我看着他离开,突然想到:为什么其他电脑能正常访问?难道是服务器时区设置和客户端不同,影响了某些文件系统的行为?这事儿没完。

linux命令提示权限不够什么意思

Linux权限不够?直接看方法。

文件没权限?用chmod改。

比如-rw-r--r--,其他用户没读权。
用chmod o+r 文件名给其他用户加读。

不是所有者?用chown换。
sudo chown 用户名 文件名。

不在组里?用usermod加组。
sudo usermod -aG 组名 用户名。

需要root权限?用sudo。
sudo systemctl start 服务名。

SELinux报错?用chcon改上下文。
sudo chcon 上下文 文件名。

脚本没执行权?chmod+x。
chmod +x 脚本名。

配置文件改不了?sudo编辑。
sudo nano /etc/配置文件。

目录打不开?问所有者要权限。
或者sudo进入。

别用chmod 7 7 7 ,太不安全。
多用sudo,别瞎提权。

你自己掂量。

linux权限不够是什么意思

Linux 权限不够啊... 就是没权限干事儿。
2 02 2 年我就在北京遇到过,那个服务器,文件打不开,提示权限不够。
Linux这东西,权限管得贼严。

你想想啊,为啥没权限?原因挺多的。

一个是用户身份问题。
比如,你是个普通用户,去访问某个文件,但这个文件不是你创建的,你也不是文件所属组的成员,那肯定不行啊。
我之前在一个项目里,我就属于这种情况,我是个开发者,想去看看运维小哥弄的一个配置文件,结果就提示权限不够。
因为那个文件是运维小哥自己的,而且我也没有加入他所在的组。

再一个就是权限设置问题。
文件可能被设置了只读,你连改都改不了。
我在上海的时候,有一次要更新一个系统的配置文件,结果发现那个文件是只读的,我就没法修改。
后来我找了个管理员,让他用sudo把权限改了,才搞定的。

还有啊,就是系统有些关键文件,比如Linux系统里的 /etc/ 目录下的文件,这些文件一般只有root用户才有权限操作。
我2 02 2 年在广州的时候,有一次要修改网络配置,结果发现 /etc/network/interfaces 这个文件打不开,因为只有root才能改。
我就用su命令切换到root,然后才修改的。

解决方法嘛,也有几个。

一个就是先用ls -l命令看看文件权限,比如ls -l /path/to/file.txt,看看是谁的文件,属于哪个组,权限是怎么设置的。
你这个文件,你是所有者,读写执行都有,那你就没问题。
如果权限不够,你就得想办法改。

另一个就是临时提升权限。
可以用sudo命令,前提是你得有sudo权限。
比如sudo ls /etc/,这样就可以列出/etc/目录下的文件了。
如果sudo也不行,那就得用su命令切换到root用户,但这个要谨慎,因为root权限很大,搞不好会搞坏系统。

还有一种就是修改文件权限,用chmod命令。
比如chmod u+x file.txt,就是给所有者加上执行权限。
或者chmod 7 5 5 file.txt,就是设置权限为rwxr-xr-x。
这个得有修改权限才行。

还有就是调整用户组关系,把当前用户加入目标组。
比如sudousermod -aG admin user,就是把user加到admin组里。
这个也得有管理员权限。

最后,实在不行,就联系文件所有者或者系统管理员,让他们帮你改权限。

权限位掩码啊,就是数字代表权限。
4 代表读,2 代表写,1 代表执行。
比如7 5 5 ,就是所有者7 (4 +2 +1 ),组和其他人5 (4 +1 )。
6 4 4 就是所有者6 (4 +2 ),组和其他人4
注意事项啊,就是别乱用root权限,安全风险大。
目录的执行权限也很重要,没有x权限,你就进不了目录,也看不到里面的文件。
还有ACL扩展权限,这个比较高级,可以通过setfacl设置更精细的权限,但得文件系统支持。

总之啊,Linux权限问题挺复杂的,得好好研究研究。
2 02 2 年我在深圳遇到过一次,一个脚本执行不了,就是因为权限不够,后来我花了半天时间才弄明白。