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


480

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 đó?


1
Tôi đã hỏi một câu hỏi tương tự, bởi vì tôi gặp vấn đề với các biến môi trường XDG ( $XDG_RUNTIME_DIRđặc biệt) đang khiến tôi phát điên. -> unix.stackexchange.com/questions3534826/iêu
Jonathan Komar

Câu trả lời:


561

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

$ 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 -ulá cờ cho phép bạn chỉ định tên người dùng mà 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 sudocó lẽ đơn giản nhất, miễn là nó được cài đặt và bạn có quyền sử dụng nó.


17
Ngoài ra, su - [user]có thể hữu ích - dấu gạch ngang bổ sung cung cấp cho bạn vỏ đăng nhập.
ephemient

Tôi đang gặp lỗi này "-su: / dev / stderr: Quyền bị từ chối" sau khi thực hiện lệnh này echo >>/dev/stderrkhi đăng nhập với su --login ..., mẹo nào? Tôi tìm thấy btw unix.stackexchange.com/questions/38538/ này
Sức mạnh của Bảo Bình vào

Điều này có cho phép mỗi người dùng mới có các giá trị khác nhau, ghi đè cho các biến môi trường không? ví dụ: git config cho công việc, nguồn mở, v.v.
Kevin Sript

Một phát hiện, khi tôi liệt kê envnó đã thấy rằng mọi thứ đều theo thứ tự cũng như kiểm tra trực quan có thể đi; Và một điều không chính xác: XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on tập tin ~ / .Xmasterity là : -rw-------. Tôi đã tạo một bản sao và cho phép tôi chạy gedit như một thử nghiệm.
sẽ

1
nếu bạn nhận được "Tài khoản này hiện không có sẵn": su -s / bin / bash - www-data
max4ever

46

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

[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % 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 ssh username@localhost, nhưng tôi nghĩ sudocó lẽ đơn giản nhất nếu nó được cài đặt và bạn có quyền sử dụng nó


Nếu hệ thống của tôi không có máy chủ ssh hoặc sudo thì sao? Bạn có thể đề cập đến phần đó trên câu trả lời?
tshepang

ok, Pratt đã trả lời rằng một
tshepang

4
sudo -scung cấp cho bạn một vỏ như su, sudo -imô phỏng đăng nhập như thế nào su -. Có thể được kết hợp với -u $user, tất nhiên.
ephemient

hiệu quả hơn nhiều có thể "đăng nhập" như một người dùng thường không thể đăng nhập là một tài sản tuyệt vời ..! hoàn toàn cho phép tôi chạy một cá thể cơ sở dữ liệu mà không gặp rắc rối với quyền hoặc selinux
Félix Gagnon-Grenier

20
$ 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 lại bằng cách chạy lại whoami.


Hữu ích nếu bạn không sudoer.
Marco Sulla

15

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 sudo.


8

Để 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 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.



2

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

ubuntu@aws-ip:~$ sudo -u mongodb bash          #<-- or zsh, etc... 
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork

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


2

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 không muốn rời khỏi lớp vỏ hiện tại của UserA 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 một vỏ mới cho UserB (kiểm tra xem 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.


1

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
~$ sudo login

Sau đó, nó sẽ nhắc bạn nhập mật khẩu sudo (mật khẩu hiện đang đăng nhập của người dùng).

Ngoài ra: đảm bảo rằng người dùng hiện tại đang ở trong tệp sudoers!


2
Câu hỏi là về việc đăng nhập như một người dùng khác.
Minix
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.