¿Por qué no puedo hacer un chmod para hacer un archivo ejecutable sin sudo?

1

En OS X 10.6.8, hice un pequeño archivo de script en mi directorio de inicio e intenté hacerlo ejecutable. Sorprendentemente, encontré que chmod no tuvo efecto hasta que lo ejecuté como superusuario. Soy propietario y tengo acceso de escritura al directorio de mi directorio principal y al script, así que, ¿qué impide que chmod funcione?

my_mac:~ crowding$ ls -dle ~
drwxr-xr-x+ 214 crowding  staff  7276 Jul 28 16:30 /Users/crowding
 0: group:everyone deny delete
my_mac:~ crowding$ ls -le ~/my_script 
-rw-r--r--  1 crowding  staff  22 Jul 28 16:25 /Users/crowding/my_script
my_mac:~ crowding$ chmod a+x ~/my_script 
my_mac:~ crowding$ ls -le ~/my_script 
-rw-r--r--  1 crowding  staff  22 Jul 28 16:25 /Users/crowding/my_script
my_mac:~ crowding$ sudo chmod a+x ~/my_script 
Password:
my_mac:~ crowding$ ls -le ~/my_script 
-rwxr-xr-x  1 crowding  staff  22 Jul 28 16:25 /Users/crowding/my_script
my_mac:~ crowding$
crowding
fuente
1
No puedo replicar esto. ¿Configuró ACL?
Gerry
El problema parece estar limitado a una cuenta en esta máquina. Las ACL parecen normales. Y parece que sucede en cualquier lugar que intento en el sistema de archivos. Parece estar relacionado con algo en mi RUTA, pero no con el binario chmod en sí.
crowding

Respuestas:

0

Resulta que había otro ejecutivo "chmod" en el camino, ocultando mi propio chmod.

Lo que hizo que esto fuera difícil de ver era que había usado el metacarácter "~" en mi variable PATH. Solo algunas cosas interpretarán una tilde en el PATH. los which El programa no expande la tilde, por lo que which chmod me dijiste eso /bin/chmod fue el chmod en el camino, pero bash hace expandir la tilde, por lo que trató de ejecutar el otro chmod (que no hizo nada.) Mientras tanto, sudo hace no expandió la tilde para que funcionara, y dio la impresión de un problema de permisos.

Resolución: al agregar subdirectorios de su directorio de inicio a su PATH, utilizar $HOME en lugar de ~.

crowding
fuente
¿Cómo estableciste tu variable PATH entonces? Cualquier ~ en él debería expandirse (reemplazado por /Users/crowding ) automáticamente por el shell cuando se asigna a una variable.
nohillside
~ no se expande en cadenas entre comillas dobles.
crowding
No me sorprendería si otras cosas se rompen también si tienes ~ en $ PATH. Por eso siempre recomiendo evitar el uso de comillas al asignar algo a $ PATH.
nohillside