Các quyền của người dùng cục bộ có đủ quyền hay các nhà phát triển cần Quản trị viên cục bộ hoặc Người dùng quyền lực trong khi mã hóa không?


17

Chúng tôi có một nhóm phát triển ra nước ngoài có thói quen xấu là cài đặt phần mềm vô nghĩa trên máy tính để bàn của công ty (không liên quan gì đến chức năng công việc của họ) và vì vậy đang xem xét loại bỏ quyền quản trị viên địa phương của họ.

Quản trị viên cục bộ hoặc Người dùng quyền lực cục bộ là một yêu cầu với VS2010? Làm thế nào để bạn chạy mà không có quyền nâng cao? Những vấn đề bạn sẽ gặp phải?


1
Tìm thấy một chủ đề rất giống nhau trên SO stackoverflow.com/questions/701214/ từ
goodguys_activate

1
Một chủ đề tương tự (hôm nay) trên serverfault serverfault.com/questions/232416/ cấp
goodguys_activate

Câu trả lời:


19

Một lập trình viên nên làm việc như một người dùng hạn chế với quyền truy cập quản trị viên. Nghĩa là, lập trình viên phải là quản trị viên của máy, nhưng trong khi làm việc, anh ta luôn phải sử dụng tài khoản người dùng hạn chế.

Nếu bạn cần quyền nâng cao để làm việc, đối với mọi thứ trừ cài đặt phần mềm, bạn đang làm điều gì đó rất sai. Tồi tệ hơn, nếu bạn làm việc như một người sử dụng năng lượng hoặc vô hiệu hóa các lời nhắc UAC hoặc tương tự, bạn sẽ bỏ qua các vấn đề sẽ ảnh hưởng đến người dùng cuối phần mềm của bạn, buộc họ phải chạy với các đặc quyền giống như bạn đã làm. Cái này sai.

Đây là sự thật, không phân biệt hệ điều hành bạn đang sử dụng. Mặc dù Windows dường như là nơi duy nhất xuất hiện.

Làm rõ:

Khi tôi nói nhà phát triển nên là người dùng hạn chế, ý tôi là họ nên có toàn quyền quản trị đối với máy, nhưng khi họ kiểm tra mã của họ, thì nên thực hiện trong môi trường người dùng hạn chế. Ví dụ: nhà phát triển có thể vận hành máy với tư cách là người dùng có khả năng Quản trị viên, nhưng chạy tất cả các thử nghiệm trong máy ảo hoặc trong tài khoản người dùng bị giới hạn. Trên Linux, điều này có nghĩa đơn giản là nhà phát triển có sudoquyền truy cập; trên Windows, điều này có thể có nghĩa là tài khoản cấp Quản trị viên với UAC và các tính năng bảo mật khác được bật hoàn toàn.


5
Có một số trường hợp bắt buộc phải chạy với tư cách quản trị viên (ví dụ: để gỡ lỗi một vấn đề xuất hiện khi chạy trong IIS nhưng không phải trong máy chủ web phát triển), nhưng bạn có quyền phát triển hàng ngày không cần (và không nên) chạy với tư cách quản trị viên.
Dean Harding

2
Một ngoại lệ khác cho việc 'luôn luôn sử dụng tài khoản người dùng hạn chế': bạn cần (bắt đầu lại) bắt đầu / dừng dịch vụ
Victor Hurdugaci

3
@Victor Hurdugaci: Đó là lý do tại sao tôi nói nên có quyền truy cập quản trị viên. Khi tôi nói lập trình viên nên làm việc như một người dùng hạn chế, tôi không có nghĩa là họ không nên là quản trị viên của chính máy của họ.
greyfade

9

Đây là một vấn đề chính trị hoặc quản lý, không phải là một kỹ thuật.

Cân nhắc việc tạo và truyền đạt quy tắc "chúng tôi không muốn bạn cài đặt phần mềm không liên quan đến chức năng công việc của bạn", vì vậy ông chủ có thể theo dõi tương ứng.

Để hỗ trợ việc này, quản trị viên hệ thống có thể yêu cầu mỗi máy cho một danh sách các chương trình được cài đặt. Nếu bạn làm điều này một cách thường xuyên, bạn có thể viết một chương trình nhỏ để hiển thị những gì đã được cài đặt, để bạn có thể có được một cái nhìn tổng quan nhanh chóng.

Điều đó nói rằng, trừ khi các chương trình nói là bất hợp pháp hoặc không thể chấp nhận được về mặt đạo đức, thì tại sao điều này lại là một vấn đề ngay từ đầu?


13
+1: Nếu bạn không thể tin tưởng các lập trình viên của mình chạy với quyền quản trị viên cục bộ thì bạn không thể tin tưởng vào lập trình viên của mình.
Kramii phục hồi Monica

@Kramii - Ở đây, tôi thêm một khoảng thời gian nữa.
Anto

6

Nó phụ thuộc vào những gì bạn mong đợi chúng phát triển độc lập.

Một số thứ như cấu hình IIS, gỡ lỗi từ xa, sửa đổi quyền truy cập vào GAC, khả năng chạy MSI của riêng bạn chắc chắn sẽ bị ảnh hưởng. Nếu đây là những điều bạn mong đợi các tài nguyên thuê ngoài sẽ hoạt động độc lập, tôi sẽ không thử nếu không có nhiều thử nghiệm.

Nếu những người thuê ngoài của bạn đang làm việc trên một ứng dụng máy tính để bàn, họ có thể gỡ lỗi cục bộ, bạn có thể sẽ thoát khỏi nó với một vài vấn đề.

Giả sử họ đang sử dụng kiểm soát nguồn, bạn luôn có thể lên lịch hình ảnh lại định kỳ của máy.

Hầu hết các nơi tôi đã làm việc thực hiện rất nhiều trường hợp đầu tiên và mong đợi tính độc lập cao, vì vậy tất cả các nhà phát triển đều là quản trị viên địa phương và chính sách của công ty cho phép các biện pháp kỷ luật nếu bạn cài đặt phần mềm không được chấp thuận cho bất kỳ máy nào và gây ra sự cố.


6

Tôi cần quyền quản trị để kích hoạt Apache trên cổng 80 trên MacBook phát triển của mình. Ngoài ra, không có lý do gì tôi không thể ở trên một máy bị khóa mà không có quyền quản trị. Và tôi có thể sử dụng một cổng không chuẩn, nếu tôi thực sự cần. Từ quan điểm tài nguyên doanh nghiệp, thật hợp lý khi các nhà phát triển không được người dùng đặc quyền của máy của họ.

Tuy nhiên, việc khóa một nhà phát triển trên máy của họ cần phải đi kèm với một nhóm quản trị viên nhạy bén và sẵn sàng. Nếu tôi không thể tự cài đặt công cụ, tôi cần ai đó có thể làm điều đó cho tôi, và không đưa tôi qua ba vòng giấy tờ phê duyệt về nó. Nếu doanh nghiệp không sẵn lòng cam kết điều đó, thì họ nên cung cấp cho các nhà phát triển toàn bộ hoạt động của họ.

Tôi thích cái sau, rõ ràng, nhưng tôi có thể thấy sự khôn ngoan của cái trước.


4

Tôi chạy VS 2010 không phải là quản trị viên trong phần lớn thời gian. Nhưng nếu bạn muốn thêm hoặc xóa dịch vụ, định cấu hình IIS hoặc tinker trong sổ đăng ký, bạn sẽ cần quyền quản trị viên. Ngoài ra một số công cụ định hình thôi thúc bạn khởi chạy lại VS với tư cách quản trị viên. Vì vậy, tôi nghĩ rằng việc cung cấp cho những người ở nước ngoài của bạn những tài khoản không có quyền hạn quản trị viên sẽ khiến họ không thực hiện một số phần (có thể là nhỏ) trong công việc của họ.

Hơn nữa, với sự phát triển của UAC, ngày càng có nhiều ứng dụng có thể cài đặt mà không cần quyền hạn của quản trị viên. Họ không đặt mọi thứ vào HKLM, họ không chạm vào bất cứ thứ gì trong System32, họ đặt exe ở đâu đó trong thư mục user \ whoever và điều này giúp họ dễ dàng xóa hơn nhưng có thể không giải quyết được điểm gốc mà bạn đang cài đặt " phần mềm vô nghĩa "mà tôi cho rằng bạn có nghĩa là trò chơi, máy nghe nhạc, v.v.

Nếu bạn thực sự muốn ngăn chặn các cài đặt cục bộ, có lẽ cách tốt nhất là tầm nhìn cũ về "mạng là máy tính" từ những ngày đầu của Java. Mọi người làm việc từ một hệ thống kiểm soát phiên bản và phải đăng ký hoặc lên kệ mỗi tối trước khi về nhà. Email sống trong đám mây không phải trên máy dev. V.v. Sau đó, bất cứ khi nào bạn muốn, bạn có thể chụp ảnh lại máy dev của họ (thậm chí dễ dàng hơn nếu chúng là ảo) và những người không có gì được cài đặt thêm thậm chí sẽ không nhận thấy. Kiểu như dọn dẹp tủ lạnh văn phòng cuối tuần.

Nhưng được cảnh báo - tôi sẽ không làm việc trong môi trường đó. Tôi cài đặt các tiện ích và người trợ giúp, và thỉnh thoảng tôi chơi game và sẽ không ân cần với ai đó đã cố gắng ngăn chặn. Tôi làm việc như địa ngục. Nếu một số nhà phát triển của bạn không làm việc hiệu quả, việc lấy đi các bản cài đặt cục bộ của họ sẽ không giúp họ làm việc hiệu quả hơn hoặc tận tâm hơn. Giải quyết vấn đề đó tận gốc và bạn sẽ không nhớ rằng chúng là quản trị viên.


3

Tôi cho rằng việc xóa quyền quản trị viên khỏi các nhà phát triển sẽ đi kèm với việc chỉ định một trong những quản trị viên hệ thống cài đặt phần mềm cho nhóm. Nếu cả hai bạn đều không có quyền quản trị viên và không thể yêu cầu quản trị viên cài đặt nội dung cho bạn, bạn sẽ vô tư trước những thách thức mà bạn gặp phải. Nó giống như bạn khóa đội ngũ của bạn trong tù.


1

Nó phụ thuộc vào những gì bạn đang viết phần mềm cho.

Nếu phần mềm của bạn không cần xâm nhập vào hệ thống của bạn, thì không cần quyền hạn của quản trị viên.


Một giải pháp tốt hơn: Đối với mục đích cài đặt / thử nghiệm, người ta có thể muốn sử dụng máy ảo hoặc máy tính thử nghiệm.


0

Tôi đã thấy hai cách tiếp cận này. Một là để mọi người làm việc từ máy tính xách tay, mà họ phải chuyển sang quản trị viên khi họ về nhà. Khi quản trị viên đã có nó, họ sẽ dán vào đĩa CD để tạo lại hình ảnh cho máy. Khi nó được chụp lại, nó được đưa lên kệ, nơi nó sẽ có sẵn cho người tiếp theo cần. Chỉ cần đảm bảo rằng tất cả các máy đều giống hệt nhau, vì vậy bạn không kết thúc với việc mọi người lướt qua tất cả chúng để tìm kiếm một chiếc "tốt".

Một điều khác tôi đã thấy là để mọi người khởi động từ máy chủ Citrix. Các máy không có bộ nhớ cục bộ nào cả, chúng chỉ tải một hình ảnh tiêu chuẩn từ mạng và chạy từ đó. Điều này hoạt động tốt hơn nếu bạn có các "loại" người dùng khác nhau yêu cầu các cấu hình khác nhau (ví dụ: nhà phát triển UI có hình ảnh với Silverlight, nhà phát triển WCF có IIS và SQL Server, v.v.)

NHƯNG, với tất cả những gì đã nói, tôi nghĩ Thorbjorn [sic] đánh vào đầu: đây là vấn đề quản lý và có lẽ sẽ không được giải quyết thỏa đáng bằng một giải pháp kỹ thuật.

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.