sudo su를 사용하고 디렉토리를 바꾸는 방법은 무엇입니까?


13

다음과 같은 작업을 수행하는 별칭을 만들고 싶습니다.

alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'

그럼 내 명령 줄에서, I는 sudo는 사용자로 로그인하고, 나는 별칭을 입력하고 싶은 userYYY내 껍질 지금으로 기록됩니다 그래서 userYYYpwd입니다 /a/path/that/only/userYYY/has/access.

어떻게해야합니까? 이것은 userYYY일부 프로세스를 실행하기위한 것이며, 홈에 무언가가 있어야합니다. 따라서 다음을 사용하여 $ HOME을 변경하려고했습니다.

sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY 

그리고 sudoer 파일이있는 쉘에서 내가 한 것 sudo su userYYY입니다. 그러나 그것은 효과가 없었습니다. 효과가 sudo su -l userYYYY있었지만 원래 쉘 ( -bash-4.1$ ....) 안에 새 배쉬가 열렸습니다 .

요약하면, 내가 원하는 것은 단순히 쉘에 2 줄을 쓰지 않아도되는 것입니다.

sudo su userYYY
cd /a/path/that/only/userYYY/has/access

어떤 아이디어?

답변:


10
alias userYYY='sudo su userYYY -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"'

제대로 작동하는 것 같지만이 오류를 제거하는 방법 또는 문제가 있는지 확실하지 않습니다. 우분투 14.04LTS를 사용하여 데비안에 문제가 있음을 알았습니다 ...bash: cannot set terminal process group (13964): Inappropriate ioctl for device\nbash: no job control in this shell
sonjz

1
실제로, 잠시 동안 사용 후, 내가 터미널이이 방법을 사용하여 꽤 자주 살해됩니다 것으로 나타났습니다 (15 ~ 30 분 주변의 분리를 정기적으로 내 터미널은 분리 전에 6 시간 주위 지속)
sonjz

이것을 파헤 치면이
sonjz

이 내 편집 도왔다 .bashrc에 파일을 sudo다음 cd이 개 별도의 라인을 가진 것으로 단지 작동하지 않는 경우.
RozzA

2

한 가지 옵션은 ~/.bashrc대상 사용자 를 편집 하고 여기에 추가하는 cd것입니다.

cd /a/path/that/only/userYYY/has/access

0

짧은 대답-당신은 할 수 없습니다. 이 명령 sudo sucd명령에 도달하기 전에 종료해야하는 새 쉘을 시작합니다 .


0

나에게 조합 sudoscreen운동 :

sudo -iu vagrant screen -mS npm_install bash -c 'cd /vagrant && npm install'

이 명령은 먼저 vagrant사용자로 전환합니다 . 그런 다음 vagrant디렉토리를 로 변경 /vagrant하고를 실행 npm install합니다.


0

나는 이것이 원래 질문과 약간 다르다는 것을 알고 있지만, 정책이 금지 할 때 암호를 입력하지 않고 다른 사용자로 명령을 실행하는 것이 좋습니다 sudo su <user> -c.

sudo -u userYYY -- sh -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.