Próbowałem użyć, sudo cd name_of_dir
ale pojawia się komunikat o błędzie:
sudo: cd: command not found
Czy istnieje inny sposób na wejście do katalogu należącego do innego użytkownika, który ma 700 uprawnień?
command-line
permissions
sudo
cd-command
Bakhtiyor
źródło
źródło
ls -l
sam katalog.sudo chmod 0755 name_of_dir; do you business; cd ../; sudo chmod 0700 name_of_dir
Wydaje się, że to jedyna odpowiedź, z której będziesz zadowolony.sudo cd
pracować, ale głosuje za rozwiązaniami sudo lub su. Mówi, że nie chce pracować jako root, ale nadal chce uzyskać dostęp do bezpośrednio, którego nie posiada. Brzmi dla mnie jak troll ...Odpowiedzi:
sudo cd
nie będzie działać, ponieważcd
polecenie jest wbudowane w powłokę. Mówisz więc o rootowaniu, a następnie uruchom to polecenie. Stajesz się rootem, a następnie wyszukiwane jest polecenie po sudo, ale nie macd
polecenia do znalezienia.Metodą, którą należy zastosować, jest przejście do użytkownika, który jest właścicielem katalogu. Zezwolenie
700
oznacza „właściciel może czytać, pisać i wykonywać”.Więc jeśli root jest właścicielem katalogu
sudo -i
, hasło, a następniecd {dir}
jest jedyną prawidłową metodą. Jeśli ktoś jest właścicielem katalogu, nadal możesz użyć pierwszej metody, ale możesz także zmienić na tego użytkownikasu {username}
i używać gocd
jako tego użytkownika.źródło
sudo echo
: potrzebujesz czegoś takiego jakecho 'deb {text}' | sudo tee --append {file}
użycie echa w sudo i zmiana pliku.cd
wbudowany w poleceniasudo
?sudo -i
aby otworzyć „konsolę główną”, a następnie
cd /path/to/directory
(
cd
jest wbudowanym poleceniem powłoki, więc nie może być celem sudo)źródło
Aby otworzyć katalog główny, możemy uruchomić powłokę główną, np .:
źródło
sudo su
ing (lub inna metoda) jest jedyną praktyczną lub nawet możliwą metodą. „Eksperci” mówią ci tylko, abyś nie używał roota jako nawyku - jest w porządku, kiedy go potrzebujesz. I @Vojtech, nic nie jest niemożliwe ...Jak zauważyli inni - ma wbudowaną powłokę:
Dlaczego więc nie sudo samej powłoki?
źródło
which
. Jest to tylko skrypt i nie obsługuje wszystkich możliwości (binarnych, wbudowanych, aliasów itp.). Użyjtype
zamiast tego. O wiele bezpieczniejszy, wydajny i przenośny. Itype -p
na ścieżkę pliku wykonywalnego.type [ -wfpams ] name ... Equivalent to whence -v.
,which [ -wpams ] name ... Equivalent to whence -c.
(man zshbuiltins)whence
jest-zsh
tylko ... nie działa w bash, nie jest nawet domyślnie instalowany w Ubuntu. Chociażtype
jest POSIX , co oznacza, że będzie działał w każdej nowoczesnej powłoce ... bash, csh, ksh .. a nawet zsh.type
ponieważ oba są aliasami tego samego polecenia.zsh
. W bash, która jest domyślną (i zwykle jedyną) powłoką terminala w Ubuntu,which
nie jest wbudowana ... więctype
(lubtype -p
) jest preferowana.Możesz także podnieść się do rootowania użytkownika poprzez:
Następnie możesz cd do dowolnego katalogu, który nie pozwala zwykłemu użytkownikowi na:
Lub
Następnie po zakończeniu wpisz:
Aby wylogować się z uprawnień użytkownika root.
Aby wynieść się jako root, możesz również połączyć dwa polecenia
&&
operatora, jak poniżej, operator ten zachowuje również sekwencję wykonywania, jeśli bieżące polecenie wykona się pomyślnie i tylko wtedy można wykonać następne polecenie:Lub
źródło
Jeśli naprawdę chcesz działać, możesz zdefiniować funkcję powłoki o nazwie, która uruchamia nową powłokę główną podczas uruchamiania w ten sposób, i po prostu uruchamia zwykłe polecenie w przeciwnym razie.
sudo cd directory
bash
sudo
sudo
Jak przedstawiono w innych odpowiedziach, większość użytkowników nie będzie chciała tego robić, ale zamiast tego będzie chciała:
sudo -s
lubsudo -i
jeśli chcesz powłoki logowania (pamiętaj, że jednym z efektówsudo -i
jest uruchomienie Cię w katalogu głównym root) lubsudo bash
jeśli chcesz wymusićbash
lub móc przekazać opcje do powłoki.cd directory
exit
aby opuścić nową powłokę. Ważne jest, aby nie zapominać o tym, ponieważ nie chcesz wykonywać większej liczby akcji jako root niż planujesz!Tak więc, jeśli chcesz, możesz napisać funkcję powłoki (lub skrypt), która wykonuje dwie pierwsze z tych akcji,
sudo
a następnie normalniecd
działasudo
inaczej. Nie używaj tego jako alternatywy dla dowiedzenia się, dlaczegosudo cd
inaczej się nie powiedzie , ponieważ jeśli nie rozumiesz, co się dzieje, prawdopodobnie będziesz bardzo zdezorientowany, będąc w nowej powłoce (i możesz nie zrozumieć żadnych komunikatów o błędach które występują).Oto jeden ze sposobów na napisanie takiej funkcji powłoki, która również przypomina, że jesteś w nowej powłoce i że powinieneś
exit
z niej wyjść po zakończeniu. (Przypominamy, że prawdopodobnie będzie przydatna dla użytkowników dowolnym poziomie umiejętności, bo nie jest na ogół przyzwyczajeni do bycia w nowej powłoce, gdy jeden pracujesudo
bez-s
,-i
lub nazwa rzeczywistej muszli jako argument).Możesz umieścić to w swoim
~/.bashrc
, choć jest to na tyle dziwny sposób,sudo
że możesz chcieć to włączać tylko od czasu do czasu. W takim przypadku lepiej jest umieścić go we własnym pliku. Jeśli utworzysz plik o nazwiesudo.bash
w katalogu domowym z tą zawartością, możesz udostępnićsudo
funkcję - aby działała zamiast zwykłegosudo
polecenia - uruchamiając. ~/sudo.bash
. Działa to w bieżącej powłoce i jej podrzędnych powłokach, ale nie w innych. Z tego samego powodu, że pliki jak.bashrc
nie są wykonywalne, nie oznaczająsudo.bash
wykonywalnychmod
. To naprawdę biblioteka, a nie samodzielny skrypt powłoki. Jeśli takuruchom go jako skrypt powłoki, zdefiniuje funkcję ... ale tylko w powłoce, która uruchomiła skrypt, a nie dla ciebie jako wywołującego. (Oczywiście, można napisać skrypt, za to, że po prostu nie zdarza się być podejście Wziąłem tutaj).Aby sprawdzić, czy
sudo
jest obecnie zdefiniowana jako funkcja powłoki, i zobaczyć jej bieżącą definicję, jeśli jest to jedna, uruchomtype sudo
. Aby wyłączyć (tzn. Cofnąć definicję) funkcję po jej zdefiniowaniu, uruchomunset -f sudo
. Aby ręcznie uruchomić zwykłesudo
polecenie bezpośrednio, nawet jeśli funkcja powłoki jest zdefiniowana, uruchomcommand sudo
. Zauważ jednak, że nie musisz tego robić, ponieważ tasudo
funkcja faktycznie robi to sama, ilekroć przesłano do niej więcej lub mniej niż dwa argumenty lub pierwszy przekazany argument jest innycd
. Dlatego nadal możesz go używać w zwykły sposób, z którego korzystają ludziesudo
.Zauważ również, że funkcja powłoki pokazana powyżej nadal pozwala ci przekazywać inne argumenty
sudo
, ale uniemożliwi to jejcd
specjalne traktowanie . Uruchomiony w szczególności nie jest obsługiwany, choć można rozszerzyć funkcję powłoki na poparcie tej sprawy. Ani nie jest . Powłoka, którą tworzy, jest podobna do tego, co dostajesz . Kod tak naprawdę nie działa , ale używa , więc opcja działa poprawnie. W rzeczywistości działa dwa razy, gdy przekazujesz i argument katalogu (w przeciwnym razie zero razy). Po uruchomieniu najpierw uruchamia oddzielną powłokę bash od tej, w której uruchamiasz funkcję, i zmienia katalog. Jeśli to się powiedzie, zastępujesudo -u user cd directory
sudo -i cd directory
sudo -s
sudo -s
sudo bash
-c
bash
cd
sudo cd directory
sudo
tę powłokę bashową z nową, interaktywną, której możesz użyć.Oto przykład, w jaki sposób ta funkcja powłoki automatycznie „robi właściwą rzecz”. Zauważ, że
sudo ls -A /root
zachowuje się normalnie. Dopiero wtedy, gdy próbuję wejśćcd
do katalogusudo
, tworzona jest nowa powłoka i wyraźnie przypomina mi się, co się dzieje.Jeśli spróbujesz przejść
sudo cd
do katalogu, do którego nie możesz zmienić nawet jako root, pojawi się komunikat o błędzie:Użyłem
sudo -k
pomiędzy wywołaniami w powyższych przykładach, aby pokazać, że uwierzytelnia cię jako root przed próbą zmiany katalogu. Ale tak naprawdę nie musiszsudo -k
sam biegać . Ponieważ funkcja powłoki jest tylko cienkim opakowaniem dla prawdziwegosudo
polecenia , buforowanie poświadczeń i inne typowesudo
zachowania nadal działają normalnie.Chociaż działa dobrze i jest całkiem fajny, przyznaję, że cieniowanie prawdziwego
sudo
polecenia funkcją o tej samej nazwie jest super dziwne. Większość użytkowników prawdopodobnie po prostu chcą wykonać czynnościsudo -s
, sami. Ale na wypadek, gdyby ktoś tego chciał - a także wykazał, że jest to możliwe - jest.cd directory
źródło
Jeśli chodzi
su
osu
debatę lub nie , myślę, że to głupie.su
jest przeciwko religii Ubuntu i nie jest to coś nierozważnego. To niesamowite, corm -rf *
możesz zrobić, jeśli jesteś rootem. Ale jeśli nie masz ochoty korzystać z interfejsu wiersza poleceń (CLI) i masz do wykonania zadania na poziomie systemu, nie ma powodu, aby z niego nie korzystaćsu
. Użyłem kilku dystrybucji, o których nikt nawet nie wspomniałsudo
. To tylko kwestia rodzaju pracy i metody, z której czujesz się najlepiej. Używam obu.źródło
sudo
ja z kubuntu lucid,sudo cd
teraz działa - bez żadnych obejść”. Brakuje czegoś takiego , co, jestem pewien, że nigdy nie było domyślnie w Ubuntu, nie wiem jak. (Użyłem też 10.04; tego nie zrobiłem.) Minęły lata, odkąd to opublikowałeś, ale pamiętasz szczegóły? Czysudo cd
nadal pracować dla Ciebie? Jaki jest wynik działaniatype -a sudo
powłoki, w której działa? Rozumiem, że możesz nie wiedzieć - a druga część twojej odpowiedzi pozostaje aktualna - ale jeśli tak, możesz ją edytować .