Tôi có thể khởi chạy một tiến trình với quyền root mà không cần khởi chạy shell đăng nhập của root không?


8

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?


những gì về su? hay gksu? đại loại nhưsu -c 'sed -i s,root:/:zsh,root:/:/usr/bin/zsh, /etc/passwd'
qdii

Không phải dòng tập tin passwd là / usr / bin / zsh? Tại sao bạn chỉ đặt chuỗi zsh?
slm

@slm Đó là thay đổi mà OP muốn thực hiện ...
CVn

1
nếu đề xuất @qdii hoạt động (nghĩa là 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?
nhân loạiANDpeace

1
@humanityANDpeace: không được phép hoạt động. Lệnh được truyền tới -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.
Mat

Câu trả lời:


4

Có quyền su

Bạn có thể sử dụng lệnh sau để thay đổi bất kỳ shell nào của người dùng.

su -c "/usr/bin/chsh -s /bin/bash root"

Nếu bạn có quyền truy cập vật lý

Trong quá trình khởi động Grub của bạn, bạn có thể truy cập vào bất kỳ hệ thống nào miễn là bạn có quyền truy cập bàn điều khiển và không có mật khẩu nào ngăn bạn truy cập vào menu Grub.

Trong quá trình khởi động hệ thống ban đầu khi menu Grub xuất hiện, nếu bạn vào menu và chỉnh sửa (nhấn ephím) dòng kernel, bạn có thể thêm một trong những điều sau đây để làm cho kernel khởi động ở chế độ người dùng.

  • Độc thân
  • init = / bin / sh
  • 1

Dòng này sẽ trông giống như thế này:

 kernel /vmlinuz-2.6.15-27-386 root=/dev/mapper/Ubuntu-root ro init=/bin/bash

Trong Grub, nó sẽ trông giống như thế này:

       ss của grub

Khi bạn đã thực hiện các thay đổi, khởi động kernel (nhấn phím b).

Điều này sẽ cung cấp cho bạn quyền truy cập tạm thời vào hệ thống với trình bao nơi bạn có thể sử dụng vi / vim để thực hiện bất kỳ thay đổi nào bạn cần cho /etc/passwdtệp của mình . Chỉ cần gõ rebootkhi bạn hoàn thành.


2
Anh ta nói rằng anh ta không có quyền truy cập vật lý, do đó có khả năng anh ta sẽ không thể xem menu GRUB.
Renan

@Renan. OK tôi đã không nhận được điều đó từ vài lần đọc đầu tiên. Nó ẩn trong dòng về ".. Tôi không thể khởi động trên đĩa CD trực tiếp ..", điều này rất lạ đối với tôi.
slm

4
suLệnh của bạn sẽ không hoạt động, vì nó sẽ cố gắng gọi shell của root, không tồn tại.
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles: Có ý tưởng nào khác không? Tôi không thấy cách khắc phục điều này mà không có quyền truy cập vật lý. Cảm thấy như chúng ta đang làm việc chống lại chính xác những gì hệ thống được thiết kế để ngăn chặn tại thời điểm này.
slm

1
@slm Nếu không có sudo, tôi nghĩ tài khoản root đã bị khóa, vì vậy cần có quyền truy cập vật lý.
Gilles 'SO- ngừng trở nên xấu xa'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.