Finding cycles in a UNIX file system
This section implements a practical UNIX command-line utility that can find cycles (loops) in UNIX file systems. The idea behind the utility is that with UNIX symbolic links, there is a possibility to create cycles in our file system. This can perplex backup software such as tar(1)
or utilities such as find(1)
and can create security-related issues. The presented utility, which is called FScycles.go
, tries to inform us about such situations.
The idea behind the solution is that we keep every visited directory path in a map and if a path appears for the second time, then we have a cycle. The map is called visited
and is defined as map[string]int
.
If you are wondering why we are using a string and not a byte slice or some other kind of slice as the key for the visited
map, it is because maps cannot have slices as keys because slices are not comparable.
The output of the utility depends on the root path used for initialing...