Mam dowiązanie symboliczne z tymi uprawnieniami:
lrwxrwxrwx 1 myuser myuser 38 Aug 18 00:36 npm -> ../lib/node_modules/npm/bin/npm-cli.js*
Dowiązanie symboliczne znajduje się w archiwum .tar.gz. Teraz, gdy rozpakowuję archiwum tar.gz za pomocą maven, dowiązanie symboliczne nie jest już prawidłowe. Dlatego próbuję zrekonstruować dowiązanie symboliczne. Najpierw tworzę dowiązanie symboliczne za pomocą ln, ale jak ustawić te same uprawnienia, co oryginalne dowiązanie symboliczne?
Kiedy próbujesz użyć,
chmod
aby ustawić uprawnienia do łącza, faktycznie robisz to, aby ustawić uprawnienia do celu łącza. Uprawnienia do łącza są bez znaczenia.źródło
test
z-rw-rw-r-- root root
, bo pojawia sięrm test
monitrm: remove write-protected regular empty file 'test'?
. Rozwiązaniem jest umieszczanie poufnych plików w katalogach, do których użytkownicy mają dostęp tylko do odczytu.Gdy masz link taki jak:
i chcesz to zmienić na:
Należy rozważyć dwa przypadki:
foo/bar
nie jest katalogiem lub nie istnieje lub nie masz dostępu do wyszukiwaniafoo
. Następniezawiedzie, ponieważ
link
już istnieje, ale można to obejść, stosując standard:foo/bar
to katalog (i masz uprawnienia do wyszukiwania,foo
aby móc ustalić, żefoo/bar
jest to katalog). W takim przypadku, gdy:lub
Jest to rozumiane jako tworzenie nowego
target
dowiązania symbolicznego wlink
katalogu (link
jest katalogiem, ponieważ jest dowiązaniem symbolicznym dofoo/bar
katalogu). Więc faktycznie stworzysz:Aby temu zaradzić, GNU
ln
ma-T
opcję, aby nazwa linku była zawsze traktowana jako nazwa linku, a nie jako katalog do tworzenia linków. W GNUln
:będzie działać. Tak jak poprzednio, usunie oryginalne
link
dowiązanie symboliczne i utworzy je od nowanew/target
jako cel (oraz euid procesu i egid jako właściciel).GNU
ln
ma również-n
opcję. Działa tak, jak-T
z wyjątkiem sytuacji, gdy wlink
rzeczywistości jest to prawdziwy katalog, w którym to przypadku nadal utworzy dowiązanie symboliczne w tym katalogu (zamiast zawieść z błędem).Najlepszym rozwiązaniem jest usunięcie linku, a następnie jego ponowne utworzenie:
W większości systemów uprawnienia do dowiązań symbolicznych są ignorowane i zasadniczo ustalone na
rwxrwxrwx
.W systemach, w których uprawnienia do dowiązania symbolicznego mają znaczenie (np. OS / X, gdzie potrzebujesz uprawnienia do odczytu dowiązania symbolicznego, aby móc rozwiązać jego cel), ogólnie istnieje sposób, aby je zmienić (
chmod -h
w OS / X).Własność, chociaż jak wyżej, nie ma znaczenia dla dostępu do pliku wskazywanego przez dowiązanie symboliczne w większości systemów, może mieć inne znaczenie dla
t
części katalogu nadrzędnego lub przydziałów ... ) i istnieje standardowe polecenie, aby to zmienić:źródło
Jeśli naprawdę potrzebujesz zmienić uprawnienia do dowiązań symbolicznych (zwykle bez znaczenia, jak napisano w innych odpowiedziach), udało mi się użyć
-R
opcjichown
:Jeśli
-R
nie był używany, uprawnienia nie zostały zmienione.źródło
chown
ponieważ jest to-R
sugerowane-P
, jednak nie jest to gwarantowane i nie będzie działać w niektórych innych implementacjach chown. Standardowym sposobem zmiany własności dowiązania symbolicznego jest-h
opcja. Właśnie zaktualizowałem zaakceptowaną odpowiedź, która była niepoprawna.