Tôi đã cố gắng thay đổi vỏ đăng nhập.
Đây là dòng đầu tiên /etc/passwdtrông như thế nào (trên bản cài đặt Debian Wheezy):
rootx:0:0:root:/root:/:zsh
Khi tôi cố gắng đăng nhập như root:
Cannot execute zsh: No such file or directory
Tôi biết zshlà có sẵn:
$ which zsh
/usr/bin/zsh
Được rồi, có vẻ hợp lý để thay thế zshbằng đường dẫn đầy đủ của nó. Nhưng làm thế nào tôi có thể làm điều đó?
Tôi có một người dùng khác trên hệ thống ( user), tuy nhiên nó không có quyền root và sudokhông được cài đặt trên hệ thống.
Giả sử rằng vì bất kỳ lý do gì (mã hóa, truy cập vật lý, ...) tôi không thể khởi động trên đĩa CD trực tiếp để sửa đổi tệp.
Tôi biết, tuy nhiên, thông tin đăng nhập cho roottài khoản.
Câu hỏi của tôi là: Có cách nào, thậm chí là lập trình, để khởi chạy một quy trình với roottài khoản mà không khởi chạy shell đăng nhập trước không?
su -c "<commands>") hoạt động ... chúng ta có thể không sử dụng đơn giản su -c "/bin/bash"để có được một bash làm việc với người dùng root không?
-cđược chạy qua shell đăng nhập của người dùng. -scó thể được sử dụng để sử dụng shell khác ... chỉ khi shell đăng nhập hiện tại là hợp lệ hoặc invoker là root.

su? haygksu? đại loại nhưsu -c 'sed -i s,root:/:zsh,root:/:/usr/bin/zsh, /etc/passwd'