记一次Mac处理文件无法删除操作

处理流程

安装了公司的安全上网软件,但是无法卸载和删除。

执行rm -rf无法删除

ls -lO查看权限

需要清理这两个标记

执行:

1
2
3
4
sudo chflags -R nohidden [文件夹名称]
sudo chflags -R noschg [文件夹名称]
sudo chmod -R +w [文件夹名称]
sudo chmod -R +r [文件夹名称]

最后

补充

ls-O选项,可以列出文件的file flag。

File Flag

File flag是在BSD Unix中的概念,跟Linux系统中的attr是差不多的一个概念,是文件的一些标志位来存放文件的某些属性。chflags就是来修改这个file flag的。这个文件属性是跟文件系统相关的,所以这个命令在不同的文件系统上的支持程度不一样,体现在某一些flag在一些特定的文件系统上没有。

常见的几个属性

属性 ls中显示 chflags中使用 文件所有者能否修改 详述
隐藏 hidden hidden 设置以后在GUI上看不到,ls依然可以看到d
系统级只能添加 sappnd sappnd, sappend 设置以后此文件不能够截断或者复写(overwrite),只能通过append模式添加内容
用户级只能添加 uappnd uappnd, uappend 设置以后此文件不能够截断或者复写(overwrite),只能通过append模式添加内容
系统级只读 schg schg, schange, simmutable 不能够重命名、移动、删除、更改内容
用户级只读 uchg uchg, uchange, uimmutable 不能够更改内容

基本用法

chflags [-fhv] [-R [-H | -L | -P]] flags file

例子

为一个文件添加一个属性

1
chflags uchg file

为一个文件删除一个属性

1
chflags nouchg file

在属性名字前面添加no就可以将属性删除,如果这个属性本身已no开头(比如nodump)则去掉no。

将文件夹及其文件夹下所有文件属性进行修改

1
chflags -R uchg directory