Tras esta respuesta
https://superuser.com/a/1025007/642458
Intenté instalar tree
desde el origen. Ejecutando make install
la primera vez, obtuve esta salida:
...$ make install
install -d /usr/local/bin
install: chmod 755 /usr/local/bin: Operación no permitida
install -d /usr/share/man/man1
install: chmod 755 /usr/share/man/man1: Sistema de archivos de solo lectura
if [ -e tree ]; then \
install tree /usr/local/bin/tree; \
fi
install: /usr/local/bin/tree: Permiso denegado
make: *** [install] Error 71
Dado que la respuesta menciona el uso de sudo
, ejecuté sudo make install
, lo cual funcionó para mover el binario tree
a /usr/local/bin
, pero no para agregar las páginas del manual man
:
install -d /usr/local/bin
install -d /usr/share/man/man1
install: chmod 755 /usr/share/man/man1: Sistema de archivos de solo lectura
if [ -e tree ]; then \
install tree /usr/local/bin/tree; \
fi
install doc/tree.1 /usr/share/man/man1/tree.1
install: /usr/share/man/man1/tree.1: Sistema de archivos de solo lectura
make: *** [install] Error 71
Sin embargo, ¡ahora estoy preocupado de haber cambiado los permisos de las carpetas del sistema! Al menos esto parece ser el caso para /usr/local/bin
(mira la hora y fecha de .
):
...$ ls -alt /usr/local/bin
total 1912
-rwxr-xr-x 1 root wheel 109008 Dec 8 15:11 tree
drwxr-xr-x 44 root wheel 1408 Dec 8 15:11 .
drwxr-xr-x 23 root wheel 736 Sep 26 10:12 ..
.
.
¿Cómo puedo verificar si los permisos de las carpetas del sistema han sido alterados, y cómo puedo restaurarlos? ¿Debo revisar solo /usr/local/bin
y /usr/share/man/man1
, o debo revisar también otras carpetas? Aquí está el Makefile
, en caso de que quieras verlo:
# $Copyright: $
# Copyright (c) 1996 - 2018 by Steve Baker
# Todos los derechos reservados
#
# Este programa es software libre; puedes redistribuirlo y/o modificarlo
# bajo los términos de la Licencia Pública General de GNU publicada por
# la Fundación del Software Libre; ya sea la versión 2 de la Licencia, o
# (a tu elección) cualquier versión posterior.
#
# Este programa se distribuye con la esperanza de que sea útil,
# pero SIN NINGUNA GARANTÍA; ni siquiera la garantía implícita de
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Ver la
# Licencia Pública General de GNU para más detalles.
#
# Deberías haber recibido una copia de la Licencia Pública General de GNU
# junto a este programa; si no, escribe a la Fundación del Software Libre,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
prefix = /usr
CC=gcc
VERSION=1.8.0
TREE_DEST=tree
BINDIR=${prefix}/bin
MAN=tree.1
MANDIR=${prefix}/man/man1
OBJS=tree.o unix.o html.o xml.o json.o hash.o color.o file.o
# Descomenta las opciones a continuación para tu sistema operativo particular:
# Valores predeterminados para Linux:
#CFLAGS=-ggdb -pedantic -Wall -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
#CFLAGS=-O4 -Wall -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
#LDFLAGS=-s
# Descomenta para FreeBSD:
#CFLAGS=-O2 -Wall -fomit-frame-pointer
#LDFLAGS=-s
#OBJS+=strverscmp.o
# Descomenta para OpenBSD:
#TREE_DEST=colortree
#MAN=colortree.1
#CFLAGS=-O2 -Wall -fomit-frame-pointer
#LDFLAGS=-s
#OBJS+=strverscmp.o
# Descomenta para Solaris:
#CC=cc
#CFLAGS=-xO0 -v
#LDFLAGS=
#OBJS+=strverscmp.o
#MANDIR=${prefix}/share/man/man1
# Descomenta para Cygwin:
#CFLAGS=-O2 -Wall -fomit-frame-pointer -DCYGWIN
#LDFLAGS=-s
#TREE_DEST=tree.exe
#OBJS+=strverscmp.o
# Descomenta para OS X:
# Ya no se permite instalar en /usr/bin en OS X (SIP):
prefix = /usr/local
CC=cc
CFLAGS=-O2 -Wall -fomit-frame-pointer -no-cpp-precomp
LDFLAGS=
MANDIR=/usr/share/man/man1
OBJS+=strverscmp.o
# Descomenta para HP/UX:
#CC=cc
#CFLAGS=-O2 -DAportable -Wall
#LDFLAGS=
#OBJS+=strverscmp.o
# Descomenta para OS/2:
#CFLAGS=-02 -Wall -fomit-frame-pointer -Zomf -Zsmall-conv
#LDFLAGS=-s -Zomf -Zsmall-conv
#OBJS+=strverscmp.o
# Descomenta para HP NonStop:
#prefix = /opt
#CC=c89
#CFLAGS=-Wextensions -WIEEE_float -g -Wnowarn=1506 -D_XOPEN_SOURCE_EXTENDED=1 \
# -Wallow_cplusplus_comments
#LDFLAGS=
#OBJS+=strverscmp.o
# AIX
#CC=cc_r -q64
#LD=ld -d64
#LDFLAGS=-lc
#OBJS+=strverscmp.o
#------------------------------------------------------------
all: tree
tree: $(OBJS)
$(CC) $(LDFLAGS) -o $(TREE_DEST) $(OBJS)
$(OBJS): %.o: %.c tree.h
$(CC) $(CFLAGS) -c -o $@ $<
clean:
if [ -x $(TREE_DEST) ]; then rm $(TREE_DEST); fi
if [ -f tree.o ]; then rm *.o; fi
rm -f *~
install: tree
install -d $(BINDIR)
install -d $(MANDIR)
if [ -e $(TREE_DEST) ]; then \
install $(TREE_DEST) $(BINDIR)/$(TREE_DEST); \
fi
install doc/$(MAN) $(MANDIR)/$(MAN)
distclean:
if [ -f tree.o ]; then rm *.o; fi
rm -f *~
dist: distclean
tar zcf ../tree-$(VERSION).tgz -C .. `cat .tarball`
EDICIÓN: mi SO es MacOS Catalina 10.15.7
1 votos
¿Qué versión de macOS estás utilizando?
0 votos
@nohillside gracias por tu comentario. Estoy usando MacOS Catalina 10.15.7.
0 votos
Catalina tiene SIP, por lo que a menos que lo hayas deshabilitado, no puedes cambiar accidentalmente los permisos de cosas fuera de /usr/local. Por eso recibiste errores de
chmod 755 /usr/share/man/man1: Sistema de archivos de solo lectura
.