Có cách nào để ngăn chặn việc phải viết 'sudo' cho mọi thứ nhỏ nhặt trong Linux không?


59

Tôi sẽ sớm thực hiện một số lượng khá lớn công việc PHP và tôi thích học RoR, vì vậy tôi đã cài đặt Linux Mint 12 trong VirtualBox của mình.

Khía cạnh khó chịu nhất của chuyển đổi, cho đến nay, vẫn là xử lý các quyền của Linux. Có vẻ như tôi không thể làm bất cứ điều gì hữu ích (như giả sử, sao chép tarball Symfony2 từ thư mục Tải xuống của tôi vào thư mục gốc của tài liệu và trích xuất nó) mà không đặt ra là root thông qua sudo.

Có một cách dễ dàng để nói với linux để cho tôi quyền truy cập vào các thư mục nhất định mà không cần mở tất cả các quyền của họ?


1
Nhiều sự phân tâm sẽ có một nhóm được trao quyền để chỉnh sửa cấu hình cho các tiện ích hệ thống khác nhau. Đặt mình vào nhóm đó và mở một vỏ mới.
dmckee

Thay vào đó, tốt hơn là trỏ gốc tài liệu vào một cái gì đó trong thư mục Home của tôi?

3
'Sudo' là một trong những lệnh lố bịch đang được sử dụng và lạm dụng quá thường xuyên bởi người dùng Linux mới. Thường thì tôi sẽ thấy các hướng dẫn trên web trong đó 15 lệnh liên tiếp sẽ sử dụng sudo? Trong các tình huống thông thường, bạn không cần sử dụng perm đặc biệt trong khi đăng nhập như một người dùng thông thường (được khuyến nghị). Tôi đã ở một công ty nơi mọi thứ họ đã sử dụng sudo. Khi tôi cố gắng cấm nó (vì lý do bảo mật), họ đã phàn nàn. Sau khi kiểm tra tệp cấu hình sudo khó hiểu, tôi thấy một lỗ hổng (như mọi khi) cho phép tôi 'root' hệ thống từ người dùng thông thường đó. Sudo cực kỳ nguy hiểm !!
Jeach

Câu trả lời:


77

Hai lựa chọn xuất hiện trong đầu tôi:

  1. Sở hữu thư mục bạn muốn bằng cách sử dụng chown:

    sudo chown your_username directory 
    

    (thay thế your_username bằng tên người dùng và thư mục của bạn bằng thư mục bạn muốn.)

  2. Một điều khác bạn có thể làm là làm việc tận gốc miễn là bạn BIẾT BẠN ĐANG LÀM GÌ . Để sử dụng root làm:

    sudo -s
    

    và sau đó bạn có thể làm bất cứ điều gì mà không cần phải gõ sudotrước mỗi lệnh.


"Điều khác mà bạn có thể làm là làm việc như là người chủ, miễn là bạn biết những gì bạn đang làm để sử dụng gốc làm ...." - Vâng, đó Undoes các thực hành tốt nhất các distro và cộng đồng an ninh đã cố gắng để dạy cho người sử dụng. Liên quan: "nguyên tắc đặc quyền tối thiểu là gì" .

16

Nói chung, luôn luôn làm việc như người dùng của riêng bạn trừ khi bạn đang làm gì đó với tác động trên toàn hệ thống.

Nếu có các tệp mà bạn muốn đưa lên máy chủ web của mình, hãy làm việc như người dùng của chính bạn và sau đó sử dụng sudođể thả các tệp vào vị trí trong khu vực phục vụ web của hệ thống tệp của bạn. Thông thường, điều đó sẽ được thực hiện bởi một tập lệnh cài đặt và bạn sẽ chạy một cái gì đó như sudo -u webmaster install-webserver-files, hoặc tốt hơn sudo -u webmaster git update(hoặc hệ thống kiểm soát phiên bản bạn chọn).

Nếu bạn đang làm việc trên một máy chủ phát triển và muốn các tệp của bạn có thể truy cập được ngay lập tức, hãy tạo một thư mục trong khu vực máy chủ web và làm cho nó sở hữu hoặc ít nhất là có thể ghi được bởi bạn. Sau hoạt động một lần ( sudo chown …hoặc sudo -u webmaster setfacl …) đó, bạn sẽ không cần các đặc quyền nâng cao cho các hoạt động hàng ngày.

Đôi khi thuận tiện khi cho phép nhiều người dùng viết trong một thư mục hoặc nói cách khác là có các quyền khác nhau cho một số người dùng khác ngoài chủ sở hữu hoặc cho nhiều nhóm. Danh sách kiểm soát truy cập cung cấp cho bạn khả năng này. Xem các vấn đề về Quyền đối với thư mục dùng chung trên máy chủ hoặc Sự cố quyền sao lưu tập lệnh .


3

Có, đăng nhập với quyền root cung cấp cho bạn quyền kiểm soát truy cập siêu người dùng.
Cùng một khái niệm trong windows, bạn có thể đăng nhập vào thiết bị đầu cuối của mình bằng quản trị viên.


Tôi nhận ra bạn đang trực tiếp trả lời câu hỏi của người đăng ban đầu. Nhưng đây là lời khuyên tồi, giải thích cho việc bỏ phiếu.
bignose

Giống như bạn liên quan đến Windows.
LeWoody

3

Luôn luôn là hệ tư tưởng của tôi rằng, là một người dùng, bạn có thể làm bất cứ điều gì bạn muốn trên Linux và đối với mọi thứ khác, luôn luôn có sudo. sudocho phép thực thi một số điều như một số người dùng khác, thường là các trường hợp như rootquản trị hệ thống. sudođã là một nguồn lợi thế lớn hơn để ủy thác một số nhiệm vụ và đặc quyền thông thường của tôi với tư cách là người dùng (root) cho một số người khác và giúp quản lý thời gian của tôi và những người khác tốt hơn mà không nâng cao các đặc quyền vượt quá những gì được yêu cầu. Đồng thời, niềm tin của tôi vào họ giữ cho các mục của họ hiện diện trongsudoerstập tin cấu hình. Tôi không chắc nó có liên quan hay không nhưng tôi có thể nói là gì, sudo mang đến cho bạn một viễn cảnh bảo mật tốt hơn về tất cả những ai và họ có thể làm gì với những đặc quyền đáng tin cậy của họ. Ngay cả khi có sự cố xảy ra, họ vẫn chịu trách nhiệm. (Tôi luôn có thể thực hiện một số đỉnh lén lút với thông tin nhật ký sudoers để tìm ra thủ phạm). Các bạn của tôi luôn bày tỏ mối quan tâm với tôi rằng họ phải gõ sudo cho mọi thứ họ muốn làm với các đặc quyền nâng cao trong môi trường Linux. Ở đây tôi cũng tìm thấy câu hỏi tương tự.

Để xem các giải pháp và nhiệm vụ của tôi để tìm giải pháp thay thế, tôi đã tìm đến Kiểm soát truy cập dựa trên tài nguyênRBAC nhưng ở một vùng đất phiêu lưu khác Solarisvới các công cụ như pfexecvv Cách tiếp cận này tốt hơn vì điều này sẽ giữ cho các đặc quyền của người dùng được nâng cao và sẽ tin tưởng về lương tâm và sự cảnh giác của những gì các sysadins muốn làm với đặc quyền của họ.

Xem xét các giải pháp có sẵn của RBAC và các triển khai của nó trong thế giới Linux, tôi tình cờ thấy

SELinux http://www.ibm.com/developerworks/linux/l Library / l-racac-rsinux /

bảo mật http://en.wikipedia.org/wiki/Grsecurance

và trong khi có một số triển khai khác, tôi sẽ xem xét chúng theo thứ tự hàng đầu của danh sách. Triển khai RBAC là rất nhiều công việc trong một tổ chức, đặc biệt là khi có nhiều người dùng. RBAC sẽ là một giải pháp lớn hơn trong môi trường đồng nhất. Tuy nhiên, khi có các cài đặt Unix không đồng nhất trong mạng và cơ sở dữ liệu người dùng là phổ biến, thì điều này có lẽ sẽ thất bại. Vì SELinux không thể mở rộng / triển khai trên Solaris và các công cụ RBAC / pfexec không được triển khai trên Linux. Phương pháp khác nhau tồn tại để làm một điều duy nhất. Ví dụ: http://bloss.oracle.com/darren/entry/opensolaris_rbac_vs_sudo_howto

Các cài đặt khác nhau trên toàn mạng có thể không hỗ trợ phương pháp này (tuy nhiên openrbac có thể được coi là phương pháp triển khai chung) như sudoers là một cách tiếp cận máy chủ duy nhất hoặc không có khả năng cấu hình tập trung trong mạng / miền./etc/sudoerscần được đồng bộ hóa mỗi khi có sự thay đổi. Hơn nữa, có một yêu cầu về kiến ​​thức trong khi vận hành tệp sudoers, cần phải hiểu ngôn ngữ chính sách của cấu hình sudoers để không mắc lỗi và cho phép bất kỳ khoản trợ cấp nào. RBAC có thể cung cấp một cách tiếp cận tập trung ở một mức độ nào đó, trong khi các cấu hình bảo mật có thể phổ biến, việc thêm / xóa người dùng khỏi vai trò được cấp có thể được thực hiện từ một nơi duy nhất (đó là nơi lưu trữ thông tin người dùng / mật khẩu / nhóm tên miền như LDAP, NIS hoặc AD). Điều này cũng sẽ ngầm hiểu các lệnh cần thiết để hoạt động trên cơ sở dữ liệu RBAC như smexec, smmultiuser, là số ít.

Sudo có thể cung cấp nhiều cách tiếp cận đa nền tảng hơn ở đây rằng nó vẫn hoạt động trên tất cả các nền tảng Unix / giống như cung cấp các tính năng setuid. Cả hai sudoRBACthành công trong việc cung cấp cho người dùng không root một số đặc quyền có thể được thực hiện mà không cần cung cấp rootmật khẩu. Sudo có thể đưa ra một cách tiếp cận dựa trên chi tiết / chi tiết hơn đối với các đối số dòng lệnh có thể được sử dụng trong khi chạy các lệnh và hạn chế hoàn toàn lệnh nào với các đối số có thể được chạy với các đặc quyền nâng cao. Mặc dù RBAC có thể hạn chế sử dụng tối đa các lệnh hoặc tệp nhị phân được cài đặt nhưng không có bất kỳ quyền kiểm soát nào đối với các đối số dòng lệnh. Kiểm toán tốt hơn nhiều và tích hợp sẵn trong môi trường RBAC trong khisudo, nó phụ thuộc vào cấu hình và các ràng buộc bảo mật được thực hiện (như không cấp shell và đặc biệt là các máy chủ được phép đăng nhập vào các máy chủ khác mà không gặp vấn đề gì). Đây chỉ là một số khác biệt tôi có thể trích dẫn và cá nhân tôi có thiên hướng sử dụng sudo hơn RBAC, mặc dù với những hạn chế đã nói, tôi có thể thực hiện một số công việc xung quanh. Cho đến khi tất cả các vấn đề được RBAC giải quyết để có lợi thế hơn cho sudo, tôi không nghĩ sudo sẽ biến mất vì nó đơn giản.


1

Tôi sẽ truy cập root tài liệu nơi bạn đang làm việc, vì vậy bạn có toàn quyền truy cập vào nó.

Để tránh phải gõ sudo mỗi khi bạn cài đặt Gem, hãy theo dõi bài viết này tại đây: http://forums.site5.com/showthread.php?t=11954

Tôi cũng khuyên bạn nên cài đặt RVM để quản lý các phiên bản của Ruby và Rails. http://beginrescueend.com/

Nó sẽ làm cho cuộc sống của bạn dễ dàng hơn rất nhiều khi bạn tìm thấy máy chủ bạn muốn triển khai ứng dụng của mình để sử dụng các phiên bản khác nhau so với những gì bạn đã phát triển.


Biết về rvm, nhưng cảm ơn vì liên kết diễn đàn.
Sản xuất chính

0

Chạy lệnh.

sudo su root

Bây giờ bạn sẽ có thể chạy các lệnh như người dùng root. Hãy cẩn thận! Bất kỳ lệnh nào được chạy sẽ là người dùng root. Bạn có thể nghiêm túc làm mọi thứ rối tung lên nếu không cẩn thận.

Hoặc bạn thay đổi quyền của thư mục để cho phép người dùng của bạn lưu và chỉnh sửa tệp.


4
Tại sao không chỉ sudo -s?
sarnold

1
Hoặc sudo -inhư điều này mô phỏng như vỏ đăng nhập. Nó có thể gần hơn một chút với đăng nhập gốc cục bộ hơn là chạy bash hoặc shell khác thông qua sudo.
Bastian Ebeling

1
tại sao không chỉ su? Nỗi ám ảnh này với sudo là gì? Bạn không cần sudo. Không bao giờ.
orion

2
afaik, không thể chỉ sử dụng sunếu mật khẩu gốc không xác định. thêm người dùng vào sudoers và chạy sudo sucho phép người dùng sử dụng mật khẩu người dùng hiện có và đã biết của họ để leo thang
Luke

0

Chỉnh sửa tập tin / etc / passwd và cấp quyền root cho người dùng "yourUserName" bằng cách thay đổi ID người dùng và nhóm thành UID 0 và GID 0:

yourUserName: 0: 0 :: / home / yourUserName: / bin / sh


2
Đừng đề nghị những cơn ác mộng về an ninh! Đây là thực hành của loại tồi tệ nhất.
phản ứng

Tôi đang sử dụng giải pháp này cho pi mâm xôi của mình, trong đó tôi không có tài khoản người dùng khác và nó được kết nối với mạng gia đình của tôi
Ufuk özkanlı

0

Như được chỉ ra bởi các câu trả lời khác, giải pháp sạch nhất là thay đổi quyền sở hữu các tệp và thư mục bạn cần truy cập. Bạn có thể thay thế tạo một nhóm chuyên dụng mới, thay đổi quyền sở hữu nhóm của các tệp và thư mục thành nhóm này và đặt quyền ghi nhóm cho các tệp và thư mục này. Cuối cùng, đặt bit SGID trên các thư mục sao cho nếu bạn tạo một tệp mới, nó sẽ kế thừa quyền sở hữu nhóm của thư mục chứa (tức là nhóm chuyên dụng).


-1

user @ server: ~ $ sudo passwd root
[sudo] password cho người dùng:
Nhập mật khẩu UNIX mới:
Nhập lại mật khẩu UNIX mới:
passwd: mật khẩu được cập nhật thành công
user @ server: ~ $ su
Mật khẩu:
root @ server: / home / user #

Đó có phải là dấu nhắc "#" không phải là một điều hay?

Tôi chỉ sử dụng "sudo" một lần để đạt được khả năng

user @ server: ~ $ su
Mật khẩu:
root @ server: / home / user #

cho cuộc sống của máy chủ.

Để làm cho nó an toàn trở lại,

root @ server: / home / user #
exit
user @ server: ~ $

Sysadmin đã làm điều này trong nhiều năm khi "sudo" không phải là một phần của xu hướng mollycoddling.

Khi bạn làm điều này, trách nhiệm của bạn là chăm sóc, không phải của tôi.

Ian


Thật là một chuyện vặt vãnh. Hãy thử sudo -s. Công việc đã hoàn thành
roaima
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.