it-swarm-vi.com

Làm thế nào để chuyển đổi giữa người dùng trên một thiết bị đầu cuối?

Tôi muốn đăng nhập như một người dùng khác mà không cần đăng xuất khỏi người dùng hiện tại (trên cùng một thiết bị đầu cuối). Làm thế nào để làm điều đó?

535
tshepang

Làm thế nào về việc sử dụng lệnh su?

$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout

Nếu bạn muốn đăng nhập bằng root, không cần chỉ định tên người dùng:

$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout

Nói chung, bạn có thể sử dụng Sudo để khởi chạy Shell mới như người dùng bạn muốn; các -u cờ cho phép bạn chỉ định tên người dùng bạn muốn:

$ whoami
user1
$ Sudo -u user2 zsh
$ whoami
user2

Có nhiều cách mạch hơn nếu bạn không có quyền truy cập Sudo, như tên người dùng ssh @ localhost, nhưng Sudo có lẽ là đơn giản nhất, miễn là nó được cài đặt và bạn có quyền sử dụng nó.

630
Pratt

Nói chung, bạn sử dụng Sudo để khởi chạy Shell mới như người dùng bạn muốn; các -u cờ cho phép bạn chỉ định tên người dùng bạn muốn:

[[email protected] ~] % whoami
mrozekma
[[email protected] ~] % Sudo -u nobody zsh
[[email protected] ~] % whoami
nobody

Có nhiều cách dễ dàng hơn nếu bạn không có quyền truy cập Sudo, như ssh [email protected], nhưng tôi nghĩ Sudo có lẽ đơn giản nhất nếu được cài đặt và bạn có quyền sử dụng nó

51
Michael Mrozek
$ whoami 

Lệnh này in người dùng hiện tại. Để thay đổi người dùng, chúng tôi sẽ phải sử dụng lệnh này (theo sau là mật khẩu của người dùng):

$ su secondUser
Password:

Sau khi nhập đúng mật khẩu, bạn sẽ đăng nhập với tư cách là người dùng được chỉ định (bạn có thể kiểm tra bằng cách chạy lại whoami.

25
Ashish Saini

Nếu bạn đang chạy Ubuntu và nếu người dùng bạn muốn đăng nhập thì không có mật khẩu được đặt:

Sudo su - username

Nhập mật khẩu của riêng bạn và bạn sẽ được thiết lập. Tất nhiên, điều này đòi hỏi người dùng của bạn có quyền để có được quyền root với Sudo.

17
Sundae

Để chuyển phiên cuối sang một người dùng khác, nơi người dùng đó không thể thoát trở lại người dùng ban đầu, hãy sử dụng exec:

$ | # exec su - [tên người dùng]

Điều này về mặt kỹ thuật sẽ đăng nhập người dùng mới trong một quy trình thuật ngữ mới và đóng cái hiện tại. Theo cách đó, khi người dùng cố gắng thoát hoặc Ctrl-D, thiết bị đầu cuối sẽ đóng lại như thể người dùng đó là người đã khởi tạo nó, tức là, người dùng không thể thoát trở lại thuật ngữ người dùng ban đầu. Loại vô nghĩa, xem xét họ vẫn có thể chỉ bắt đầu một phiên cuối mới và tự động ở trong đăng nhập thuật ngữ người dùng ban đầu, nhưng nó có.

EDIT: Để biết giá trị của nó, bạn có thể sử dụng lệnh linux vlock trong ~/.bashrc để khóa các phiên cuối theo mặc định, yêu cầu mật khẩu của người dùng phiên hạn để mở khóa. Điều này sẽ phần nào ngăn chặn việc khởi động lại thuật ngữ đã nói ở trên trong bối cảnh người dùng ban đầu, do thuật ngữ này không được khởi tạo bằng cách sử dụng ~/.bashrc không mặc định của người dùng, như được định cấu hình.

9
SYANiDE

Sudo -iu <your_username> cho tôi làm thủ thuật

3
andilabs

Hãy để chúng tôi có quyền này: Bạn đã đăng nhập với tên UserA và muốn "đăng nhập" với tên UserB để chạy một số lệnh, nhưng muốn quay lại UserA khi hoàn tất. Để đơn giản, tôi giả sử rằng bạn muốn chạy ls -l/tmp với tên UserB. Nếu bạn làm không muốn rời khỏi Shell của UserA hiện tại mà chỉ chạy một lệnh là UserB và vẫn đăng nhập như UserA, bạn nên làm điều này:

su - UserB -c "ls -l /tmp"   <-- Just an example

Điều này giả sử bạn biết mật khẩu cho UserB. Tuy nhiên, nếu bạn không biết mật khẩu của UserB, bạn cần biết mật khẩu gốc. Sau đó:

Sudo su - UserB -c "ls -l /tmp"   <-- UserB's pw not needed here

Nếu bạn muốn đăng nhập tạm thời dưới dạng UserB để chạy nhiều lệnh, thì hãy thực hiện:

Sudo su - UserB

Điều này sẽ cung cấp cho bạn Shell mới cho UserB (kiểm tra bằng cách nhập id). Khi hoàn tất, bạn có thể thực hiện ctrl-d và quay lại đăng nhập của mình.

2
Hopping Bunny

Một lộ trình khác là khởi chạy Shell mới với tư cách là người dùng khác (không phải root) để chạy các lệnh như người dùng đó.

[email protected]:~$ Sudo -u mongodb bash          #<-- or zsh, etc... 
[email protected]:~$ mongod --configsvr --dbpath /data/configdb --fork

Một ví dụ về điều này là người dùng mongodb. Khi triển khai một cụm MongoDB bị phân mảnh, tất cả các quy trình cần thiết phải chạy dưới dạng mongodb và không cần thiết (hoặc hoàn toàn thuận tiện) để tạo các quy trình bằng cách sử dụng tập lệnh init cho hàng tá nút.

2
azatar

Nếu bạn chỉ cần chạy một lệnh duy nhất, bạn có thể sử dụng Sudo: Sudo -u username command

1
Maksim Luzik