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-login
khô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
root
tà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ó
irssi
người dùng.
- Các
irssi
tài khoản người dùng bị vô hiệu hóa.
- Các
irssi
tà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
irssi
ngườ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 su
lệ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ư HOME
sẽ 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 su
khá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 irssi
như root
, su
khô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 root
tà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ư root
vớ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ư root
vớ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 irssi
như root
vớ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ừ sudo
phiê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 root
người dùng khác, không phải người dùng . Để chạy irssi
như username
vớ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 HOME
biến môi trường của người dùng mục tiêu , bạn có thể chạy sudo
với -H
cờ:
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ữ i
viế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 gksu
việc khisu
không?
gksu
có thể làm việc bằng cách chạysudo
.
gksu
là 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, su
thường không được sử dụng để trở thành root
và chỉ là cách thứ yếu để trở thành người khác, không phải root
người dùng).
Bạn có thể gksu
sử dụng su
làm frontend bằng cách chạy gksu --su-mode
.
Bạn có thể tìm hiểu xem gksu
đang ở su
chế độ hay sudo
chế độ 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
ở sudo
chế độ, 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 username
tài khoản được tạo ra với các --disabled-login
lá 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à username
không thể xác thực được.
Vì vậy, tất cả các su
giải pháp dựa trên được đưa ra. sudo
mặc dù có thể hoạt động, bởi vì với sudo
bạ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 root
tài khoản sau khi đã kích hoạt tạm thời.
Các username
tài khoản có /bin/false
như vỏ đăng nhập của mình.
Khi một vỏ như bash
chạ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/false
chạy, mặt khác, nó không làm gì và báo cáo thất bại . ( /bin/true
không làm gì và báo cáo thành công.)
Các lệnh false
và true
hữ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 sftp
và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 username
su - username
sudo -u username -s
sudo -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 command
su 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, username
cả 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 su
giả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.