Câu trả lời này vẫn sẽ giúp bạn, thậm chí đưa các chỉnh sửa vào câu hỏi. Cụ thể, một tài khoản được tạo
--disabled-loginkhông có mật khẩu được đặt và không có phương tiện đăng nhập nào khác , nhưng vẫn có thể sử dụng sudo(giải thích bên dưới) để chạy các lệnh hoặc shell như người dùng. Trên thực tế, đây là cách
roottài khoản được thiết lập trong Ubuntu.
Có nhiều vấn đề với lệnh su - irssi.
Lệnh này cố gắng bắt đầu một shell thuộc sở hữu của người dùng có tênirssi .
Nó sẽ thất bại nếu:
- Không có
irssingười dùng.
- Các
irssitài khoản người dùng bị vô hiệu hóa.
- Các
irssitài khoản người dùng bị vô hiệu hóa để đăng nhập tương tác. Đôi khi, một tài khoản được phép sử dụng các dịch vụ như FTP nhưng bị cấm đăng nhập bình thường bằng cách đặt vỏ của chúng thành thứ gì đó thoát ngay lập tức, như thế /bin/false. Sau đó, một đăng nhập ngay lập tức kết thúc, không có tin nhắn.
- Mật khẩu bạn đang nhập không chính xác cho
irssingười dùng.
Các -lá cờ làm cho nó nên vỏ mô phỏng một vỏ đăng nhập ban đầu - có nghĩa là, do đó, nó thực sự rất giống khai thác gỗ trên như irssi. Nếu không có -cờ, nếu sulệnh thành công, bạn vẫn nhận được một vỏ do sở hữu irssi, nhưng các biến môi trường như HOMEsẽ không thay đổi.
Thay vào đó, nếu bạn muốn chạy một chương trình được gọi irssi , bạn phải gọi sukhác:
su username - -c irssi
Nếu bạn rời khỏi , nó giống như - nó cố chạy lệnh dưới dạng root.-c username-c root
Ngoài ra, bạn có thể bắt đầu một shell và sau đó chạy lệnh :
- Bắt đầu vỏ với .
su username -
- Trong shell, chạy lệnh (
irssi).
- Nếu bạn đã hoàn tất, hãy rời khỏi vỏ bằng cách chạy
exit .
Chạy lệnh như root
Nếu bạn muốn chạy irssinhư root, sukhông phải là cách để làm điều đó. Đăng nhập gốc bị tắt theo mặc định trên Ubuntu và hiếm khi có bất kỳ lý do nào để kích hoạt lại chúng . Nếu bạn đã kích hoạt rootđăng nhập, thì bạn sẽ có thể sử dụng suđể trở thành root. Lý do không cần thiết để kích hoạt roottài khoản là vì dù bạn có làm hay không, bạn vẫn có thể chạy các lệnh như rootvớisudo .
Khi bạn chạy các lệnh với sudo, bạn nhập mật khẩu của mình , không phải mật khẩu của người dùng theo danh tính mà bạn muốn lệnh chạy. Chỉ quản trị viên mới có thể chạy các lệnh tùy ý như rootvới sudo(trừ khi bạn cấu hình lại sudođể cho phép người khác làm như vậy, tất nhiên). Vì vậy, người dùng không được phép quản trị hệ thống sẽ không được phép chạy các lệnh nhưroot với mật khẩu của riêng họ.
Để chạy irssinhư rootvới sudo:
sudo irssi
Và bạn sẽ nhập mật khẩu của mình khi được nhắc chứ không phảiroot .
Ngoại trừ mật khẩu bạn nhập, điều này thực hiện tương tự như:
su -c irssi
Ngoại trừ sudophiên bản có thể thành công vì không yêu cầuroot kích hoạt tài khoản.
Giống như với su, bạn có thể sử dụng sudođể chạy các lệnh như một rootngười dùng khác, không phải người dùng . Để chạy irssinhư usernamevới sudo:
sudo -u username irssi
Nếu bạn muốn sudo hành xử giống như su -đối vớiHOME - đó là, bạn muốn sử dụng các HOMEbiến môi trường của người dùng mục tiêu , bạn có thể chạy sudovới -Hcờ:
sudo -H irssi
sudo -H -u username irssi
Bạn có thể bắt đầu toàn bộ vỏ với sudo, giống như bạn có thể với su. Ngoại trừ mật khẩu bạn đã đặt, lệnh này có tác dụng tương tự như su:
sudo -s
Và lệnh này có tác dụng tương tự như su -:
sudo -i
(Chữ iviết tắt của vỏ đăng nhập ban đầu .)
Bạn cũng có thể bắt đầu một shell như một người dùng khác:
sudo -u username -s
sudo -u username -i
Đọc thêm về sudo
Để tìm hiểu thêm vềsudo , hãy xem:
Tại sao làm gksuviệc khisu không?
gksucó thể làm việc bằng cách chạysudo .
gksulà một lối vào cho cả hai su và sudo. Trong Ubuntu, nó mặc định sử dụng sudo(vì trong Ubuntu, suthường không được sử dụng để trở thành rootvà chỉ là cách thứ yếu để trở thành người khác, không phải rootngười dùng).
Bạn có thể gksusử dụng sulàm frontend bằng cách chạy gksu --su-mode.
Bạn có thể tìm hiểu xem gksuđang ở suchế độ hay sudochế độ và (nếu bạn muốn) thay đổi cài đặt này, bằng cách chạygksu-properties . Đây là cài đặt theo người dùng.
Khi gksuở sudochế độ, nó hoạt động giống như gksudo.
Đọc thêm về gksu
Phân tích hậu giải
Cuối cùng bạn đã thấy rằng bạn có thể chạy lệnh cần thiết với:
sudo -u username irssi
(Đó là một trong những kỹ thuật được liệt kê ở trên.)
Cuối cùng, bạn đã báo cáo hai mẩu thông tin, đủ để giải thích tại sao các kỹ thuật khác đã thất bại, nhưng điều đó đã thành công:
Các usernametài khoản được tạo ra với các --disabled-loginlá cờ, mà làm cho nó có không có mật khẩu (và không có các phương tiện khác của khai thác gỗ trong). Không có mật khẩu không có nghĩa là có thể đăng nhập bằng mật khẩu trống . Nó có nghĩa là không có mật khẩu là đủ để xác thực. Kết hợp với việc loại bỏ các phương tiện xác thực khác, điều này có nghĩa là usernamekhông thể xác thực được.
Vì vậy, tất cả các sugiải pháp dựa trên được đưa ra. sudomặc dù có thể hoạt động, bởi vì với sudobạn không xác thực là người dùng mà bạn sắp mạo danh. Thay vào đó, bạn phải được ủy quyền để mạo danh họ và bạn xác thực là chính mình (nghĩa là nhập mật khẩu của riêng bạn chứ không phải mật khẩu của họ).
Có thể đặt mật khẩu trên tài khoản, loại bỏ rào cản này để đăng nhập:
sudo passwd username
Tuy nhiên, có thể có một lý do chính đáng để người dùng không được phép đăng nhập. Ví dụ: nếu người dùng này được phép đăng nhập và đăng nhập bằng đồ họa, sẽ có các vấn đề xấu phát sinh từ môi trường người dùng hoặc đặc quyền không phù hợp để chạy các ứng dụng X11 ? Nếu người dùng này có thể đăng nhập, điều đó có thể đăng nhập từ xa như người dùng đó không (đối với các máy mà bạn đã tiếp xúc với các dịch vụ mạng)?
Nếu bạn muốn vô hiệu hóa lại nó:
sudo passwd -dl username
Liên quan: Vô hiệu hóa lại roottài khoản sau khi đã kích hoạt tạm thời.
Các usernametài khoản có /bin/falsenhư vỏ đăng nhập của mình.
Khi một vỏ như bashchạy như vỏ đăng nhập của bạn, nó sẽ thiết lập môi trường của bạn và cung cấp cho bạn lời nhắc tương tác để điều khiển máy.
Khi /bin/falsechạy, mặt khác, nó không làm gì và báo cáo thất bại . ( /bin/truekhông làm gì và báo cáo thành công.)
Các lệnh falsevà truehữu ích trong việc tạo kịch bản và cho các mục đích thử nghiệm khác nhau, nhưng cũng để vô hiệu hóa một tài khoản để khi ai đó đăng nhập, phiên đăng nhập của họ ngay lập tức kết thúc. Bằng cách đó, mật khẩu (hoặc phương tiện xác thực khác) có thể được bật và mọi người có thể đăng nhập, không phải để truy cập shell . Ví dụ: nếu có máy chủ FTP, họ vẫn có thể truy cập tài khoản của mình qua FTP. Nếu có máy chủ SSH, họ sẽ không thể có được vỏ thông qua SSH, nhưng họ vẫn có thể sử dụng sftpvàscp chuyển tệp.
Từ username's vỏ đăng nhập là không có chức năng, các lệnh thích , , , và không thể làm việc.su usernamesu - usernamesudo -u username -ssudo -u username -i
Nhưng các lệnh không cung cấp vỏ, như hoặc vẫn có thể hoạt động.sudo -u username commandsu username -c 'command'
Vì các lệnh có thể được chạy, bạn có thể thay đổi vỏ đăng nhập của người dùng thành một chức năng nào đó:
sudo chsh -s /bin/bash username
Tuy nhiên, điều này cũng nên được thực hiện một cách thận trọng, vì có thể có một lý do chính đáng để vô hiệu hóa đăng nhập tương tác cho người dùng.
Ở đây, usernamecả hai đã vô hiệu hóa mật khẩu và vỏ "bị vô hiệu hóa". Việc không có bất kỳ mật khẩu làm việc nào đã ngăn các sugiải pháp dựa trên tất cả hoạt động, trong khi việc không có vỏ đăng nhập tương tác hoạt động đã ngăn tất cả các giải pháp sinh sản vỏ hoạt động (ngoại trừ việc gọi thủ công một vỏ ).sudo -u username bash
sudo -u username command là những gì còn lại.