Làm cách nào để chạy Ứng dụng với tư cách người dùng khác?


17

Tôi sử dụng krusader cho công cụ quản lý tập tin. vấn đề là apache DocumentRootnên được theo chown www-data:www-data /path/to/www. vì vậy sử dụng krusader (được chạy trong tài khoản của tôi) Tôi không viết quyền truy cập /path/to/wwwtrong khi tôi thực sự cần. Tôi không biết làm thế nào các nhà phát triển khác có thể tiếp tục làm mọi thứ với một hạn chế như vậy!

Tôi tự hỏi nếu tôi có thể chạy krusader vì www-datatôi sẽ có thể dễ dàng chơi với các tập tin. nhưng sử dụng su - www-datađã hỏi tôi www-datamật khẩu !!

Vậy, làm cách nào tôi có thể chạy một ứng dụng (như krusader) với tư cách là một người dùng khác (như dữ liệu www) trong Gnome?

hoặc có bất kỳ giải pháp khác cho trường hợp của tôi? (khó khăn tôi thực sự tò mò muốn biết câu trả lời!)

Hãy nhớ rằng tôi biết tôi có thể chạy nó như root ! nhưng điều này sẽ gây ra một số vấn đề về quyền khi sử dụng cpmkdir, bạn biết đấy.

PS: sudogksudokhông giúp được gì:

$ gksudo -u -www-data krusader
No protocol specified
krusader: cannot connect to X server :0.0

Lưu ý cuối cùng: theo câu trả lời tốt nhất, tôi đã làm chmod u+w /path/to/wwwvà vấn đề của tôi đã được giải quyết. nhưng tôi vẫn chưa thành công khi mở krusader như một người dùng khác!

Câu trả lời:


4

Suy nghĩ lại về câu hỏi này (tôi hy vọng đã hiểu đúng vấn đề của bạn, nhưng hãy sửa tôi nếu tôi sai), tôi đã tìm một giải pháp khác và tôi nghĩ bạn không cần chạy ứng dụng dưới dạng dữ liệu www cũng như không chơi với quyền . Bạn đã nói rằng:

Tài liệu khởi động của Apache phải được theo dõi dữ liệu www: dữ liệu www / đường dẫn / đến / www

nhưng thực ra, điều này không hoàn toàn đúng: Apache DocumentRootphải được đọc bởi www-datanhưng không nhất thiết phải thuộc sở hữu của nó. Theo mặc định, trong Ubuntu Desktop, tất cả các tệp và thư mục bạn tạo đều có thể đọc được, do đó bạn có thể đặt DocumentRoot của mình thành một thư mục trong thư mục chính của mình, ví dụ:

DocumentRoot /home/user/my-project/my-document-root

cảm ơn! nó chỉ hoạt động và giải thích của bạn về lý do tại sao điều này sẽ làm việc, rất hữu ích. vì điều này đã giải quyết vấn đề của tôi nhưng tôi vẫn tò mò muốn biết làm thế nào tôi có thể mở krusader như một người dùng khác. các giải pháp khác không hoạt động.
Alexar

8
xhost +SI:localuser:uname
gksudo -u uname -l "firefox"
xhost -SI:localuser:uname

Trường hợp uname = tên của người dùng mạo danh. Nhìn thấy ở đó: http://ubuntuforums.org/showthread.php?p=10399617

Hoạt động trên hộp maverick của tôi, không có âm thanh trong skype rẽ nhánh và ~ / .profile.d không được thực thi như có thể.


5

Nếu bạn đang chạy ứng dụng này từ hệ thống menu, bạn sẽ muốn sử dụng alacarte(Hệ thống> Tùy chọn> Menu chính) và thay đổi mục nhập cho krusader và thêm vào trước nó: gksudo -u www-datasẽ tạo ra một cái gì đó như:

gksudo -u www-data krusader

Điều này sẽ khởi chạy cửa sổ nhắc nhở nhiệm vụ quản trị, theo GKSudo Manpage , là một

GTK + Frontend cho su và sudo

Sử dụng chỉ gksudo mà không có -uchuyển đổi sẽ chạy lệnh như root.


cảm ơn, nhưng nó trả về: Không có giao thức nào được chỉ
địnhkrusader

2
trước khi khởi chạy lệnh gksudo, trong thiết bị đầu cuối trong tài khoản của bạn chạy:xhost +
máy bay phản lực

4

Giống như Marco đã đề cập, bạn có thể sử dụng gksudo -u www-data <command>để chạy các lệnh như một người dùng khác. Tôi thường xuyên sử dụng điều này để chạy các lệnh nhưgdm và cho đến nay nó chưa bao giờ yêu cầu tôi bất cứ điều gì ngoài mật khẩu của riêng tôi.

Nếu bạn đang sử dụng kde thì tương đương là. kdesu -u www-data krusaderTôi nghĩ, vì krusader là một ứng dụng kde, nó có thể hoạt động tốt hơn với kdesu. Chi tiết hơn về kdesu tại đây .

Tôi đã từng gksudochạy các lệnh như những người dùng "con người" khác trên hệ thống và khi tôi được nhắc nhập mật khẩu, tôi gõ vào tôi.


cảm ơn, nhưng kết quả là như gksudo: Không có giao thức nào được chỉ
địnhkrusader

Có lẽ đối với krusader (một ứng dụng kde), kdesulà một lựa chọn tốt hơn. Tôi đã cập nhật câu trả lời của tôi. Bạn có thể thử nó không?
koushik

4

Để trở thành dữ liệu www bằng mật khẩu của riêng bạn, hãy sử dụng:

$ sudo su www-data
[sudo] password for <your username>: [enter your password]
$ whoami
(you should see www-data here)

Nhưng, tôi không nghĩ bạn sẽ có thể chạy các ứng dụng GUI từ đó ..

Tôi thường chỉ sở hữu mọi thứ trong đó /var/www, nhưng cho phép đọc quyền truy cập cho mọi người:

/var/www$ sudo chown -R [your-username]\:[your-group] *
/var/www$ find . -type d -exec chmod a+rx {} \;
/var/www$ find . -type f -exec chmod a+r {} \;

Tôi hy vọng điều đó sẽ làm giảm nỗi đau của bạn :)


như bạn đoán tôi không thể chạy các ứng dụng GUI từ đó. nó nóiNo protocol specified krusader: cannot connect to X server :0.0
Alexar

Là giải pháp thứ hai không phải là một lựa chọn cho bạn? Dữ liệu của bạn không phải được sở hữu bởi dữ liệu www, mặc dù tôi đoán nó được ưu tiên.
dr Hannibal Lecter

3

Tôi tin rằng bạn cần phải chạy như sau tại thiết bị đầu cuối:

xhost +SI:localuser:<user-to-run-as>

Sau đó, bạn có thể làm:

sudo su - <user-to-run-as>

Và cuối cùng, chạy ứng dụng của bạn:

krusader

Điều đó nên làm điều đó, chỉ cần chắc chắn để thay thế <user-to-run-as>bằng tên người dùng của bạn tất nhiên.


0

Cả 'gksu' và 'kdesu' đều là tiền đề đồ họa cho 'sudo', đây là công cụ bạn nên sử dụng khi ở trong môi trường chỉ có văn bản. Các công cụ 'gksu' và 'kdesu' yêu cầu bạn ở chế độ đồ họa, giải thích các lỗi "không thể kết nối với máy chủ X".

nếu bạn muốn thực thi lệnh console như một người dùng khác, bạn sử dụng lệnh 'sudo -u tên người dùng'.


cảm ơn, tôi chạy nó và nó nói một cái gì đó giống [1] 12100như là id quá trình; nhưng không có gì tôi thấy trong hành động.
Alexar

0

Chạy một ứng dụng đồ họa dưới dữ liệu www cung cấp cho bạn một số vấn đề. Một điều bạn có thể làm là tự thêm mình vào nhóm dữ liệu www, vì vậy bạn sẽ có thể thay đổi tất cả các tệp bạn cần:

sudo adduser $USER www-data

Lưu ý: có thể, bạn sẽ cần phải đăng xuất khỏi phiên để thay đổi có hiệu lực.

Nếu, sau lệnh này, bạn vẫn không thể thay đổi một số tệp, chỉ cần đảm bảo rằng bạn có quyền ghi trên chúng:

sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file

tuy nhiên nó không phải là một giải pháp cho vấn đề chung nhưng nó có vẻ hiệu quả với trường hợp của tôi; tôi sẽ dùng thử và báo cáo
Alexar

0

Lấy cảm hứng từ Anton S. Kraievoy Tôi đã sử dụng giải pháp tương tự, phù hợp với tôi. Trong người dùng sử dụng Krusader tôi đã thêm một người dùng mới vào xhhost:

xhost +SI:localuser:username

Hơn vui lòng đăng nhập:

su - username

Hơn krusader bắt đầu đúng như một phiên bản mới trong một người dùng mới:

krusader

Lưu ý rằng một cấu hình mới sẽ được tạo trong ~ / .kde / share / config / krusaderrc.

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.