160

Should developers have administrator permissions on their PC or is giving them power user access sufficient?

Some comments:

  • If they want to try out some new application that would need installing, then they could try it on a virtual machine and later get the network administrator to install it for them. Do you think that would work?
  • Is there anything that a developer needs to do on their PC that would require administrator permissions?

We are team of 5 developers and build web applications

Craig
  • 4,111
  • 9
  • 39
  • 49
  • 141
    If I walked into a job and found I had no admin rights to my machine, I'd not be coming back the next day. Make your developers lives easier, not harder. – annakata Apr 03 '09 at 13:44
  • 6
    Less common than one might think. In most cases the underlying issue is sensitive data - for example, Swiss banking confidentiality laws tend to preclude developers from seeing actual customer data (accounts reconciliation is left as an exercise for the reader). In this case the problem is not locking down the machines but providing sanitized data sets for development work. Most other situations are either regulatory requirements (e.g. working with classified data) or self-serving CYA. – ConcernedOfTunbridgeWells Oct 12 '09 at 14:17
  • 16
    I wonder how the same question would unfold on ServerFault... (@romandas) – Ben Mosher Aug 06 '12 at 19:57
  • 5
    @BenMosher: here's your answer: http://serverfault.com/questions/232416/should-dev-be-admin-on-their-computer – kmote Nov 18 '13 at 18:45
  • 1
    This question is irrelevant because developers should have their choice of OS too (plus virtualization options), making admin rights redundant and automatic. – Asclepius Nov 29 '16 at 20:55
  • 1
    Developers MUST have admin rights. It's literally impossible to do our job without them. Lock down your databases, lock down shared infrastructure, but DO NOT lock your developers out of their own development machines. You're asking for failure. – Triynko May 21 '21 at 19:30

22 Answers22

267

The answer is 'Yes'. Developers will need to frig with system configurations to test items, install software (if nothing else, to test the installation process of whatever they happen to be developing), poke about the registry and run software that will not work properly without admin privileges (just to list a few items). There are a host of other tasks integral to development work that require administration privileges to do.

Bearing in mind that development staff do not necessarily have root access to production systems, admin rights on a local PC does not significantly compromise security of production systems. There is almost no legitimate operational reason for restricting admin access to local PCs for staff that need it to do their job.

However, the most important reason to provide administrative access is that setting up a compromised or second rate development environment sends a message to your development staff:

'We value your work so little that we are prepared to significantly compromise your ability to do your job for no good reason. In fact, we are quite happy to do this to cover our own arse, pander to the whims of petty bureaucracy or because we simply can't be bothered. That's just the best case. The worst case is that we're really the type of control freaks that view it as our perogative to tell you how to do your job and what you do or don't need to do it. Make do with what you're given and be grateful that you've got a job at all.'

Generally, providing a second-rate (let alone fundamentally flawed) work environment for development staff is a recipe for the natural consequences of pissing off your staff - inability to retain competent people, high staff turnover, poor morale and poor quality delivery. Going out of your way to do so - particularly if there's an overtone of pandering to bureaucratic whim - is just irresponsible.

Bear in mind that your staff turnover doesn't just incur costs of replacing the staff. The most serious cost of staff turnover is that most of the ones that stick around will be the deadwood that can't get a better job. Over time this degrades the capabilities of the departments affected. If your industry is sufficiently close you can also find yourself getting a reputation.

One point to note is that administrative privileges are far less of an issue for development on unix-oid or mainframe systems than it is on Windows. On these platforms a user can do far more in their own domain without needing system-wide permissions. You will probably still want root or sudo access for developers, but not having this will get underfoot much less often. This flexibility is a significant but lesser known reason for the continuing popularity of unix-derived operating systems in Computer Science schools.

John Topley
  • 113,588
  • 46
  • 195
  • 237
ConcernedOfTunbridgeWells
  • 64,444
  • 15
  • 143
  • 197
  • 4
    There's a difference with having admin rights and running everything with admin rights :) Many developers will of course need admin rights. But running everything interactively with admin rights on a local system is not least privilege. It opens up for attacks against production systems that the developer has access to and a compromised local PC gives any attacker the same access. This is easier than you'd think. Security is a layer-on-layer problem, least privilege per process and user training issue. Respecting security of every device is the only way: https://vimeo.com/155683357 – Oskar Duveborn Aug 24 '16 at 07:17
  • 1
    I'm a proponent of giving local admin rights to developers, but saying "admin rights on a local PC does not significantly compromise security of production systems" will depend on your environment. What most IT guys are concerned with is that you will install software that contains malware/virus that can spread across the company or if someone compromises your local machine and you have sensitive data files stored locally or on a local database. In a perfect world, no developer has access to HIPAA/PCI data files & all dev databases are scrubbed clean, but we know this is not the case. – L_7337 Sep 13 '18 at 15:24
  • 1
    I think where organisations tend to go wrong is trying to bring the developers working environment into the corporate environment and hence under the same high security. If the entry points for the work a dev team does is limited to a version control system for example, then this can be targeted specifically and potentially away from the developers environment completely. No security lock down required because the organisation doesnt even care what the developer wrote code on anymore, it just cares about the code committed. – Jeremy Mar 15 '21 at 15:52
97

Developers should have full and total control of the machine they are using. Most debugging tools require admin permissions in order to hook into the runtime of the application they are building.

Further, devs frequently download and try new things. Adding additional steps such as needing a network admin to come by and install something for them simply frustrates the dev and will quickly make life hell for the network ops person.

That said, they should be an admin on THEIR box, not the network.

NotMe
  • 87,343
  • 27
  • 171
  • 245
  • 8
    The biggest problem I've run into with devs with admin permissions is that you take for granted the rights you have on your local computer resources. So much crappy software results - writes to C:\Program Files, writes to HKLM, etc. On your workstation, maybe, but require testing where you don't. – SqlRyan Mar 31 '09 at 15:45
  • 6
    @rwmnau: That doesn't apply to web development. Also, the problem becomes apparent pretty quickly when QA'ing under normal permissions. – NotMe Mar 31 '09 at 16:01
  • 3
    Making VMs available and dev-test logins without admin privileges is a good way to facilitate testing that software will run with normal user permissions. – ConcernedOfTunbridgeWells Sep 16 '09 at 12:41
  • Software that gets released with such admin-only permissions went through extremely poor (or none) QA process. The software should be tested in real-life environments, therefore QA should catch it early and the problem otherwise overlooked by devs would be fixed. Right? –  Jan 27 '12 at 16:13
  • @Hari: correct. Quite frankly if a company is considering locking down their dev stations then they are hopefully large enough to actually have a QA staff. If QA fails to catch Admin only then there is a larger problem. – NotMe Jan 27 '12 at 16:17
  • 4
    @rwmnau - Any developer worth their salt is perfectly aware of this but the answer isn't to lock down their dev machine. It's to provide them with a testing environment that they can deploy their project to at their convenience to work out these issues. – Spencer Ruport Apr 23 '12 at 17:24
52

Yes and no.

Yes, it saves lots of time bothering system support.

No, your users don't have it so don't count on it.

We develop with admin permissions and test without. Which works out right.

Toon Krijthe
  • 52,876
  • 38
  • 145
  • 202
  • 12
    My wife had to argue for a non-administrator account on her computer, so she could make sure that the users could do what she could. Your policy is exactly right (and therefore upvoted). – David Thornley Mar 31 '09 at 15:06
  • 1
    Exactly, dev should have admin, test and QA should have user. – Dr. Watson Sep 09 '09 at 16:46
  • 1
    I can't agree with you more! Admin access is great for developing, but most users won't have it (if you develop corporate software... IT locks stuff down pretty good usually). – Pulsehead Sep 15 '09 at 14:26
21

Local admin yes, for all of the reasons stated above. Network admin no, because they will inevitably be drawn into network administration tasks because "they can". Devs should be developing. Network administration is an entirely different job.

Nick Van Brunt
  • 15,244
  • 11
  • 66
  • 92
19

Developers normally need to do things that the average person wouldn't, and so should normally have administrator accounts. Making them hop through awkward hoops wastes their time and demoralizes them. There may be exceptions in high-security situations, but if you can't trust somebody with an admin account you sure can't trust their code.

They should also have an available account of the same permission as their users (more than one account if the pool of users has different permission statuses). Otherwise, they may just develop something cool, deploy it, and then find it won't work for the users.

There are also too many ways to screw up computers with admin accounts (yes, I've done it). The IT department needs a policy that they will re-image a developer's computer if they can't fix it quickly. At one place I contracted at, I had to sign a copy of that policy to get my admin account.

This is a pretty Windows-specific answer. In Linux and other Unix-y systems, developers can more often get by with user accounts only, often don't need another account for test (if they've got an account they can sudo with, they do know when they're using the sudo, but they may need one with the same group permissions), and can do incredible amounts of damage to the OS very easily, so the same IT policy is necessary.

David Thornley
  • 56,304
  • 9
  • 91
  • 158
  • 5
    "There may be exceptions in high-security situations, but if you can't trust somebody with an admin account you sure can't trust their code." - that is a great thought, thank you! – User Apr 03 '09 at 14:50
  • 1
    You can’t trust code either way: you should be doing peer reviewed code for everything. And I think that makes sense for installations too: get someone to “peer review” the software they’re about to install. – Tim Jun 30 '20 at 08:26
14

Having endured the pain of having to develop without admin rights on the machine my answer can only be yes, it's essential.

Jason
  • 3,599
  • 10
  • 37
  • 52
12

Yes, Half-Life 1 (and all the related mods: counter-strike, day of defeat, etc.) need administrator rights (at least for the 1st run, I think) to work properly in Windows NT, 2000, XP, etc.

And, what kind of developer doesn't play Counter Strike at lunch time? (a crappy one for sure)

fortran
  • 74,053
  • 25
  • 135
  • 175
9

The answer is, developers should have 2 machines!!

  • One development one that has admin rights and sufficient power, memory, screen size, and portability, and ADMIN privileges, with corporate antivirus software loaded but configurable by developer when required with autoreset policy..

  • One corporate one that has corporate load, policies, non-admin user privileges, etc... Developer can use this one for unit testing release mode applications as some developers have the nasty habit of doing all unit testing with administrator privileges.

  • 14
    Great idea... but most companies won't even give you one "good" machine let along two. – Matthew Whited Sep 09 '09 at 16:52
  • 1
    You can do the second machine in a VM with the 'standard' build. This is particularly useful if the development network is separated onto its own domain. A separate production VM on the main domain gives the devs access to network resources. – ConcernedOfTunbridgeWells Sep 10 '14 at 08:30
9

Absolutely! How else would I install the download manager to download movies at night?

Sometimes developers really need to install things or change something in the system to test out some idea. It will be impossible if you have to call the admin each time you need to change something.

I also have my personal observation that some admins tend to screw tight all that is possible in order to make even little things depend on them on a daily basis thus... what, securing their job? pissing off the other users? Have no answer. But common sense is not seen here.

Last time there was a problem with my PC I took an active part in restoring the system, making some suggestions working in the team with the admin, or so i thought... Admin turned to be very angry and accused me of trying to teach him or redefine the rules. I suppose it was just his ego as he was not seen that cool in our room among other colleagues.

User
  • 30,403
  • 22
  • 79
  • 107
  • I can't agree more. After being a systems enginer for 6 years it's painful to have to call the helpdesk to get something fixed. – Matthew Whited Sep 09 '09 at 16:51
7

If you invert the question I think it becomes easier to answer; should we remove administrator permissions from developers? What is the gain?

But actually, I think the answer depends on your context, your environment. Small startup will have a different answer to ISO-certified government agency.

Ed Guiness
  • 34,602
  • 16
  • 110
  • 145
5

Yes, but they need to be aware of the limitations that their users will face when running software in a more limited environment. Developers should have easy access to "typical" environments with limited resources and permissions. In the past I have incorporated deploying builds to one of these "typical" systems (often a VM on my own workstation) as part of the build process, so that I could always get a quick feel for how the software worked on an end-user's machine.

Programmers also have a responsibility to know the hard-and-fast rules of writing software for non-admin users. They should know exactly which system resources they are always allowed (or forbidden) to access. They should know the APIs that are used to acquire these resources.

"It works on my machine" is never an excuse!

John Cromartie
  • 4,184
  • 27
  • 32
5

As a systems admin I'm all for developers having local admin rights on their workstations. When possible, it's not a bad idea to do most things with a standard 'user' level account and then use another 'admin' account to make changes, install apps etc. Often you can sudo or runas to accomplish what you want without even logging out. It's also helpful to remind us of what security hurtles the end-users will have to jump through when releasing to production.

On a side note it's also advisable to have a [clean] system or VM(s) so that you can test things properly and not get into the "it looks/works fine on my system" scenario due to system tweaking.

atom255
  • 738
  • 5
  • 6
4

[apologies english is not my mother tongue, doing my best :)] Well,

Personal experience (I'm a c++/SQL dev):

I used to be admin of my windows machine in my previous job. I also had dbo ( not dba ) rights on databases, including production environment databases. In 2 and a half year with 8 people having these crazy high rights... we never had any trouble. Actually we solved a lot of problems by updating db manually. We could do many things really fast for hot fixes and devs.

Now I changed job. I managed ( crying a lot ) to be admin of my windows machine. But the dev server is a red hat server to which we connect using ssh. Trying to install Qt was a torture, Quota limits, space limits, execution and write rights. We finally gave up and asked the admin to do it for us. 2 weeks later still nothing is installed. I'm getting really fast at newspaper reading and alt+tab hitting.

I asked for admin rights, as only the dev of my soft use this machine.

--> Answer: "If there are processes its for you not to do whatever you want. It has to run fine once in prod".

--> Trying to explain to a non technical manager: "I shall have no admin rights whatsoever in production or UAT environments. But my dev machine is different. If I were to build chairs instead of softwares, would you tell me that I can't put whatever tools I want in my workshop because my workshop needs to look like the place the chair will be used ? I give an executable package to uat. The libs and tools I used to build them are invisible to the end user or to the dude installing the package."

I'm still waiting today. I found a solution, open a dev environement, go to your favorite online judge, challenge yourself. when somebody look at your screen, he'll be seing you programming. ;)

4

No Power User

First of all, Power User is basically an administrator - so "limiting" a user to Power User does not provide any increase in security to the system - you might as well be administrator.

Log on interactively as a normal user

Second, of course a developer needs administrative access to their developer machine (and servers and second boxes and so on) but of course noone should interactively log on as administrator during normal development or testing. Use a normal user account for this and most applications.

You seriously do not want to run [insert any browser, plugin, IM, E-mail client and so on] as an administrator.

You don't normally log onto your Linux box as root either, even if you likely have root access when you need it.

Use a separate personal administrator account

Provide the developer with a separate personal administrator account to his/her machine (domain account preferably) that is also a valid administrator on other dev/test servers and boxes that person needs administrative access to.

Utilize "run as" and in Vista+ UAC to prompt or request prompt and enter the administrative credentials for tasks and processes only when needed. PKI with smartcards or similar can greatly reduce the strain in entering credentials often.

Everyone is happy (or? ;)

Then audit access. This way there's traceability, and an easy way to find out who is using the terminal services sessions on a particular dev/test server you have to access right now...

Granted, there's definitely development work that will never require local administrator privileges - like most web development where deployment is tested against a separate server or virtual machine and where cassini or whatever is used for local debugging actually runs well as a normal user.

Community
  • 1
  • 1
Oskar Duveborn
  • 2,189
  • 16
  • 20
  • 5
    You are saying: don't allow them to log on as administrator, but give them the keys just in case they need to do something that requires it. I read this same crap on MS's site regarding UAC, and it shows a complete lack of real consideration regarding the hundred things a dev does in a day. – NotMe Apr 03 '09 at 19:56
  • 2
    UAC was put in to prevent normal people from shooting themselves in the foot. If a dev does this, shame on him. If he continually does it then he needs to find another line of work. – NotMe Apr 03 '09 at 19:56
  • If you give them the keys you actually "allow" them, us, to log in as admins. It's just that it's never a good idea to do that for everyday tasks. Why people still think this is normal or necessary just because they're geeks, coders or admins is beyond me. – Oskar Duveborn Apr 04 '09 at 01:43
  • If you ever saw what a modern systems administrator do in a day, you'd realize that the need for administrative access and entering alternative credentials are way higher than any hardcore system-level coder ever'll see. They still don't log on as administrators for day-to-day tasks, and do fine. – Oskar Duveborn Apr 04 '09 at 01:45
  • You don't normally log on as root to a unix system even when you're administering it so why would you do that on a Windows system, even if you're a developer? That makes no sense. Running all random apps like Skype or whatnot with high system privileges is ignorant to say the least - you only elevate apps that needs it. – Oskar Duveborn Mar 31 '15 at 12:06
  • I hope this absurd sentiment is on a downwards trend :) You can't exactly prevent shooting your own feet off when there's a remote execution vulnerability in your primary web browser or its addons and an ad network on a regular site is infected, as one of hundreds of examples where developer skill doesn't matter. Do NOT run your applications with administrative access unless they actually require it. Least privilege! – Oskar Duveborn Aug 24 '16 at 07:05
3

I work primarily in the *nix world and the standard model there is for developers to work in a normal, non-privileged user account with the ability (via sudo or su) to escalate to admin privileges as/when necessary.

I'm not sure what the equivalent Windows arrangement would be, but this is, in my experience, the ideal setup:

  • On the one hand, having admin rights available on demand gives the developer full power over his workstation when needed.

  • On the other, Windows software has a long, long history of assuming that all users have admin rights, to the point that many programs won't run for a non-admin user. Many of Windows' security issues stem directly from this implicit requirement that, in order to be able to reliably use the computer, all users must be admins. This must change and the most effective way to ensure that your software will run for non-admin users is for your developers to be running it themselves as non-admin users.

Dave Sherohman
  • 45,363
  • 14
  • 64
  • 102
  • I don't think I've encountered a business application that can't run as a normal user the last 5-10 years. Once I was a BOFH and all users at that place were forced to run everything as normal users since ~2001 actually - no admin privs delegated and it worked nicely and thwarted a lot of malware of that time. There are also automatic shims applied in more recent Windows versions if such a legacy app is run (fooling it in a sandbox) and in my day-to-day development work it's pretty much only Visual Studio that ever gets elevated when I need to attach to other processes for debugging. – Oskar Duveborn Mar 31 '15 at 12:11
2

You can answer this in two ways. Yes and no, or it depends. -- Can I be more vague....

It depends if it is required for them to do their job. If it is then grant them administrative powers over their computer. If not then don't. Not all software development requires an engineer to have admin rights.

Yes and no depends on your view. Some engineers view their computer as their domain and they are the rules of their domain. Others don't want the responsibility.

I have worked at one company where I did not have admin rights and whenever I needed to do something that required admin rights I had to call the help desk and they granted me temp admin rights until I rebooted. This was a pain at times, but that was the way it was so I lived with it. I have also worked at places that I have full admin rights to my computer. This was great except for the time I installed some software that hosed the OS and had to take my computer to the help desk and have them re-image the hard drive....

I personally feel that an engineer should have admin rights to their computer, but with the understanding that if they screw it up then a new baseline image can be reloaded and they will lose anything that was done since the original baseline. I don't believe that everyone in a company should have admin rights to their computer however. Accounting, administrative assistants, and other departments don't really have a need to have those rights so they should not be granted.

Mark
  • 1,368
  • 5
  • 13
  • 26
  • 2
    I was a contractor for a company once where, in order to get admin rights, I had to sign an acknowledgement that the IT staff would spend no more than ten or fifteen minutes trying to fix my computer and then would do a complete wipe and re-image. It seemed fair to me. – David Thornley Sep 15 '09 at 14:26
  • 1
    Agreed. With great power comes great responsibility. – CraigTP Nov 02 '10 at 08:58
2

https://msdn.microsoft.com/en-us/library/aa302367.aspx

In my experience, a compromise between us (coders) and them (security) is always needed. I admit (though I hate to), there is merit in the Microsoft article above. As I have been a programmer for years, I have experienced the pain where I needed to just install a different debugger, just to get annoyed I can't. It forced me to think creatively in how to get my job done. After years of battling our security team (and several discussions), I understand their job of having to secure all areas, including my desktop. They showed me the daily vulnerabilities that come out, even on the simplest Quicktime app. I can see their frutration everytime I want to install a quick utility or tweak my local IIS that I can cause a serious security problem. I didn't fully understand this until I saw another developer get canned. He was trying to debug and ended up shutting off Symantec only to get (and then GIVE) some virus to hundreds of people. It was a mess. In talking to the one of the "secheads" (security guys) about what happened, I could see he wanted to just say, "told you so...".

I have learned that our secheads (well, at least mine) just want to protect our company. The good news is we did find a compromise, and I can get my job done and the secheads are cool with our secure network!

Creed

Philipp Claßen
  • 41,306
  • 31
  • 146
  • 239
1

Yes if you want the pentesters or some skilled malicious users to get a foothold on compromising your domain.

i.e Compromise low level account > Find where admin -> Mimikatz -> Elevate permissions -> Domain admin.

So no, normal users should not be admins.

Also Microsoft have said UAC is not a security boundary, so don't use it as such. There are various real world bypasses of UAC available.

If they need admin as part of their job role then give out separate domain local admin user accounts used for installing software only (with admin permissions on their own machine only), never for general usage or internet access. This should have a more stringent password policy (eg 15 chars minimum length). Runas functionality should be used for this.

Any environment where normal user accounts are admin is a recipe for a security disaster.

SilverlightFox
  • 32,436
  • 11
  • 76
  • 145
0

At my company, developers, engineers, and my boss (owner of the company) have local admin privilege. My boss also has network admin privilege, just in case I get hit by that wayward bus (or quit). Everyone else gets locked down.

As sysadmin, this setup has caused me a little grief from time to time, especially when unapproved software gets installed. However, coming from a developer background, I understand the need for power users to have more control over their environment and as such, am willing to put up with the occasional quirk or problem that may surface. I do perform routine backups of their workstations -- just in case.

By the way, I've had more problems with the boss tinkering around with things than with anyone else. Kind of like the old question, "Where does an elephant sit? Anywhere he wants!" But in a small firm where he is essentially the "backup" sysadmin, there isn't much choice.

Mike
  • 450
  • 3
  • 6
0

Wow, this question is certainly going to open up to some interesting answers. In reply I quote the oft used - 'It Depends' :)

In small companies this might just be simply a matter of being pragmatic. The developers are also likely to be the most technically adept, so it makes sense for them to adminster their own machines.

Personally, I'm a fan of the "admin account" which can be used when necessary - i.e. "Run As.." (I noticed this approach was very similar in principal to UAC later on).

If you are developing desktop software it's not a bad idea for developers to work within the confines that their end user's will experience - i.e. limited or restricted rights. If you build the software under limited rights, it's a good chance that you'll hit the same problems your target users would face given the same set of permissions.

Having said that, if you have a good testing lab and/or a decent QA team this might be a moot point - especially if you have a half decent ALM practice.

So finally - I develop without UAC, mainly because I trust myself and my skills. In a team environment, I'd put it to a vote. In larger organizations you might not have this freedom.. The Enterprise Admins often have the final say :)

RobS
  • 9,382
  • 3
  • 35
  • 63
-2

It depends on the developer skills and whether s/he is a consultant or not.

I think it's reasonable that a seasoned and trustworthy developer has the rights to do whatever s/he wants with her/his PC as long as it doesn't harm her/his productivity.

Manrico Corazzi
  • 11,299
  • 10
  • 48
  • 62
  • 7
    Why would you tie the hands of a consultant and not a regular employee? Aren't they both doing the same job? Do you expect less out of the consultant even though you are likely paying more for them? This sounds really dumb. Further, if a dev can't keep their own machine running they need a new job – NotMe Apr 03 '09 at 20:01
-2

No one on Windows XP should be using an administrator account for day-to-day use, and in Vista if you must be an administrator at least have UAC enabled. Especially web developers and other developers who browse the web with Internet Explorer.

What you can do is have developers use their regular user account, but give them a second account that is an administrator on their PC so they can use it as needed (Run As). I know they said web development, but for Windows development your software should be tested using a regular user account, not as an administrator.

Bratch
  • 4,103
  • 5
  • 27
  • 32