Câu trả lời:
Làm thế nào về việc sử dụng su
lệ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 -u
lá 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 sudo
có lẽ đơn giản nhất, miễn là nó được cài đặt và bạn có quyền sử dụng nó.
su - [user]
có thể hữu ích - dấu gạch ngang bổ sung cung cấp cho bạn vỏ đăng nhập.
echo >>/dev/stderr
khi đă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
env
nó đã 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.
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 -u
lá 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ĩ sudo
có lẽ đơn giản nhất nếu nó được cài đặt và bạn có quyền sử dụng nó
sudo -s
cung cấp cho bạn một vỏ như su
, sudo -i
mô 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.
$ 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
.
Để 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.
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à mongodb
ngườ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 mongodb
và 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.
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.
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
$XDG_RUNTIME_DIR
đặc biệt) đang khiến tôi phát điên. -> unix.stackexchange.com/questions3534826/iêu