Why is su world executable?using sudo on GUI applicationsHow to create an executable bash script for these commands?What exactly differentiates the root user from every other user?How to give users or group in linux sudo permission with limited permission on certain filesSSH + Change password using rootWhy is sudo required for every sudo executed executable?Why is /etc/sudoers not world-readable?
Problem with GFCI at start of circuit with both lights and two receptacles
Is this bar slide trick shown on Cheers real or a visual effect?
Output with the same length always
How do I answer an interview question about how to handle a hard deadline I won't be able to meet?
Why does this image of cyclocarbon look like a nonagon?
Does Medium Armor's Max dex also put a cap on the negative side?
What would cause a nuclear power plant to break down after 2000 years, but not sooner?
How to gracefully leave a company you helped start?
What's the point of writing that I know will never be used or read?
Resource is refusing to do a handover before leaving
Short comic about alien explorers visiting an abandoned world with giant statues that turn out to be alive but move very slowly
Why do aircraft leave cruising altitude long before landing just to circle?
Do I need to start off my book by describing the character's "normal world"?
Change the default Bookmarks Folder In Firefox
Will some rockets really collapse under their own weight?
Can I use my OWN published papers' images in my thesis without Copyright infringment
Has there ever been a truly bilingual country prior to the contemporary period?
Why does Japan use the same type of AC power outlet as the US?
How to train a replacement without them knowing?
Is the Microsoft recommendation to use C# properties applicable to game development?
When does The Truman Show take place?
Unconventional examples of mathematical modelling
Will Force.com stop working on salesforce Lightning?
What should we do with manuals from the 80s?
Why is su world executable?
using sudo on GUI applicationsHow to create an executable bash script for these commands?What exactly differentiates the root user from every other user?How to give users or group in linux sudo permission with limited permission on certain filesSSH + Change password using rootWhy is sudo required for every sudo executed executable?Why is /etc/sudoers not world-readable?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I have a headless server that is logged into remotely by multiple users. None of the other users are in the sudoers file, so they cannot obtain root via sudo
. However, since the permissions on su
are -rwsr-xr-x
there's nothing stopping them from attempting to brute force the root password.
One could argue that if a user knows the root password they can compromise the system anyway, but I don't think this is the case. OpenSSH is configured with PermitRootLogin no
and PasswordAuthentication no
, and none of the other users have physical access to the server. As far as I can tell, the world execute permission on /usr/bin/su
is the only avenue for users attempting to gain root on my server.
What's further puzzling to me in that it doesn't even seem useful. It allows me to run su
directly instead of needing to do sudo su
, but this is hardly an inconvenience.
Am I overlooking something? Is the world execute permission on su
just there for historic reasons? Are there any downsides to removing that permission that I haven't encountered yet?
sudo su headless
add a comment |
I have a headless server that is logged into remotely by multiple users. None of the other users are in the sudoers file, so they cannot obtain root via sudo
. However, since the permissions on su
are -rwsr-xr-x
there's nothing stopping them from attempting to brute force the root password.
One could argue that if a user knows the root password they can compromise the system anyway, but I don't think this is the case. OpenSSH is configured with PermitRootLogin no
and PasswordAuthentication no
, and none of the other users have physical access to the server. As far as I can tell, the world execute permission on /usr/bin/su
is the only avenue for users attempting to gain root on my server.
What's further puzzling to me in that it doesn't even seem useful. It allows me to run su
directly instead of needing to do sudo su
, but this is hardly an inconvenience.
Am I overlooking something? Is the world execute permission on su
just there for historic reasons? Are there any downsides to removing that permission that I haven't encountered yet?
sudo su headless
add a comment |
I have a headless server that is logged into remotely by multiple users. None of the other users are in the sudoers file, so they cannot obtain root via sudo
. However, since the permissions on su
are -rwsr-xr-x
there's nothing stopping them from attempting to brute force the root password.
One could argue that if a user knows the root password they can compromise the system anyway, but I don't think this is the case. OpenSSH is configured with PermitRootLogin no
and PasswordAuthentication no
, and none of the other users have physical access to the server. As far as I can tell, the world execute permission on /usr/bin/su
is the only avenue for users attempting to gain root on my server.
What's further puzzling to me in that it doesn't even seem useful. It allows me to run su
directly instead of needing to do sudo su
, but this is hardly an inconvenience.
Am I overlooking something? Is the world execute permission on su
just there for historic reasons? Are there any downsides to removing that permission that I haven't encountered yet?
sudo su headless
I have a headless server that is logged into remotely by multiple users. None of the other users are in the sudoers file, so they cannot obtain root via sudo
. However, since the permissions on su
are -rwsr-xr-x
there's nothing stopping them from attempting to brute force the root password.
One could argue that if a user knows the root password they can compromise the system anyway, but I don't think this is the case. OpenSSH is configured with PermitRootLogin no
and PasswordAuthentication no
, and none of the other users have physical access to the server. As far as I can tell, the world execute permission on /usr/bin/su
is the only avenue for users attempting to gain root on my server.
What's further puzzling to me in that it doesn't even seem useful. It allows me to run su
directly instead of needing to do sudo su
, but this is hardly an inconvenience.
Am I overlooking something? Is the world execute permission on su
just there for historic reasons? Are there any downsides to removing that permission that I haven't encountered yet?
sudo su headless
sudo su headless
asked 9 hours ago
Altay_HAltay_H
505 bronze badges
505 bronze badges
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
One point that is missing from @ilkkachu's answer is that elevating to root is only one specific use for su
. The general purpose of su is to open a new shell under another user's login account. That other user could be root
(and perhaps most often is), but su
can be used to assume any identity the local system can authenticate.
For example, if I'm logged in as user jim
, and I want to investigate a problem that mike
has reported, but which I am unable to reproduce, I might try logging in as mike
, and running the command that is giving him trouble.
13:27:20 /home/jim> su -l mike
Password:(I type mike's password (or have him type it) and press Enter)
13:27:22 /home/mike> id
uid=1004(mike) gid=1004(mike) groups=1004(mike)
13:27:25 /home/mike> exit # this leaves mike's login shell and returns to jim's
13:27:29 /home/jim> id
uid=1001(jim) gid=1001(jim) groups=1001(jim),0(wheel),5(operator),14(ftp),920(vboxusers)
Using the -l
option of su
causes it to simulate a full login (per the man
page).
The above requires knowledge of mike
's password, however. If I have sudo
access, I can log in as mike
even without his password.
13:27:37 /home/jim> sudo su -l mike
Password:(I type my own password, because this is sudo asking)
13:27:41 /home/mike>
In summary, the reason the permissions on the su
executable are as you show, is because su
is a general-purpose tool that is available to all users on the system.
That makes a lot of sense. Since I'm in the habit of usingsudo
I forgot thatsu
can be used for more than justsudo -s
. And without being a sudoer this would be the only way to switch users without altering ssh keys. For my use case this is another reason to remove the permission, but I understand now why the world execute permission is set by default. Thanks!
– Altay_H
7 hours ago
add a comment |
However, since the permissions on
su
are-rwsr-xr-x
there's nothing stopping them from attempting to brute force the root password.
Yes. Assuming your usual Linux system, the pam_unix.so
module does delay a failed authentication attempt by ~two seconds, but I don't think there's anything to stop simultaneous attempts.
Failed attempts are logged of course:
Aug 16 22:52:33 somehost su[17387]: FAILED su for root by ilkkachu
Brute-forcing a password should show up prominently in the logs, if you have any kind of system for monitoring them. And if you have untrusted local users, maybe you should. Untrusted local users could also attempt to use any local-only privilege escalation exploits, and they're much more common than remote privilege escalation.
What's further puzzling to me in that it doesn't even seem useful.
Of course it's useful, it allows you to elevate yourself to root
, if you know the password.
It allows me to run
su
directly instead of needing to dosudo su
, but this is hardly an inconvenience.
sudo su
is somewhat redundant. There's no need to use two programs that are meant to allow you to run programs as another user, one is quite enough. Just use sudo -i
or sudo -s
(or sudo /bin/bash
etc.) if you want to run shell.
Am I overlooking something? Is the world execute permission on su just there for historic reasons?
See above. Well, not all systems have sudo
as an alternative, I'm not sure if you consider that historic.
Are there any downsides to removing that permission that I haven't encountered yet?
Not really, no as far as I know. I think some systems have su
set so that only members of a particular group ("wheel
") can run it. You can do the same to sudo
if you like (chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo
).
Or you could just remove either or both of the programs if you don't need them. Though on Debian, su
comes with the login
package, so it's probably not a good idea to remove the package as a whole. (And pairing login
and su
together like that does seem somewhat historic.)
BSD systems require users to be in thewheel
group to usesu
. There are some BSD systems (I can only speak for OpenBSD) that does not ship withsudo
at all (it's a 3rd-party package). OpenBSD hasdoas
which is a reimplementation of the basics ofsudo
, but it's disabled by default upon installing a fresh system.
– Kusalananda♦
8 hours ago
@Kusalananda You only have to be inwheel
if you want tosu
to root. Any account cansu
to any non-root account for which they have the password, regardless of their membership in thewheel
group.
– Jim L.
7 hours ago
I run 'sudo su -' to ensure that the root shell I get is a full root login, without a polluted environment from my user account. The default sudoers on RHEL includes quite a few environment variables that are executable (such as PS1).
– jsbillings
5 hours ago
add a comment |
You already have some good answers, but there's one part of your post they don't address.
As far as I can tell, the world execute permission on /usr/bin/su is the only avenue for users attempting to gain root on my server.
That's a dangerous assumption. If you've set a good password for root, then it in most cases is far more likely that a successful privilege escalation will be due to the exploitation of a bug in the kernel or a setuid binary (you can of course also remove the setuid bit from those, but passwd
is setuid, and if you want to high security you should also offer that to your users, and denying them the option of changing their password is not compatible with that).
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f535936%2fwhy-is-su-world-executable%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
One point that is missing from @ilkkachu's answer is that elevating to root is only one specific use for su
. The general purpose of su is to open a new shell under another user's login account. That other user could be root
(and perhaps most often is), but su
can be used to assume any identity the local system can authenticate.
For example, if I'm logged in as user jim
, and I want to investigate a problem that mike
has reported, but which I am unable to reproduce, I might try logging in as mike
, and running the command that is giving him trouble.
13:27:20 /home/jim> su -l mike
Password:(I type mike's password (or have him type it) and press Enter)
13:27:22 /home/mike> id
uid=1004(mike) gid=1004(mike) groups=1004(mike)
13:27:25 /home/mike> exit # this leaves mike's login shell and returns to jim's
13:27:29 /home/jim> id
uid=1001(jim) gid=1001(jim) groups=1001(jim),0(wheel),5(operator),14(ftp),920(vboxusers)
Using the -l
option of su
causes it to simulate a full login (per the man
page).
The above requires knowledge of mike
's password, however. If I have sudo
access, I can log in as mike
even without his password.
13:27:37 /home/jim> sudo su -l mike
Password:(I type my own password, because this is sudo asking)
13:27:41 /home/mike>
In summary, the reason the permissions on the su
executable are as you show, is because su
is a general-purpose tool that is available to all users on the system.
That makes a lot of sense. Since I'm in the habit of usingsudo
I forgot thatsu
can be used for more than justsudo -s
. And without being a sudoer this would be the only way to switch users without altering ssh keys. For my use case this is another reason to remove the permission, but I understand now why the world execute permission is set by default. Thanks!
– Altay_H
7 hours ago
add a comment |
One point that is missing from @ilkkachu's answer is that elevating to root is only one specific use for su
. The general purpose of su is to open a new shell under another user's login account. That other user could be root
(and perhaps most often is), but su
can be used to assume any identity the local system can authenticate.
For example, if I'm logged in as user jim
, and I want to investigate a problem that mike
has reported, but which I am unable to reproduce, I might try logging in as mike
, and running the command that is giving him trouble.
13:27:20 /home/jim> su -l mike
Password:(I type mike's password (or have him type it) and press Enter)
13:27:22 /home/mike> id
uid=1004(mike) gid=1004(mike) groups=1004(mike)
13:27:25 /home/mike> exit # this leaves mike's login shell and returns to jim's
13:27:29 /home/jim> id
uid=1001(jim) gid=1001(jim) groups=1001(jim),0(wheel),5(operator),14(ftp),920(vboxusers)
Using the -l
option of su
causes it to simulate a full login (per the man
page).
The above requires knowledge of mike
's password, however. If I have sudo
access, I can log in as mike
even without his password.
13:27:37 /home/jim> sudo su -l mike
Password:(I type my own password, because this is sudo asking)
13:27:41 /home/mike>
In summary, the reason the permissions on the su
executable are as you show, is because su
is a general-purpose tool that is available to all users on the system.
That makes a lot of sense. Since I'm in the habit of usingsudo
I forgot thatsu
can be used for more than justsudo -s
. And without being a sudoer this would be the only way to switch users without altering ssh keys. For my use case this is another reason to remove the permission, but I understand now why the world execute permission is set by default. Thanks!
– Altay_H
7 hours ago
add a comment |
One point that is missing from @ilkkachu's answer is that elevating to root is only one specific use for su
. The general purpose of su is to open a new shell under another user's login account. That other user could be root
(and perhaps most often is), but su
can be used to assume any identity the local system can authenticate.
For example, if I'm logged in as user jim
, and I want to investigate a problem that mike
has reported, but which I am unable to reproduce, I might try logging in as mike
, and running the command that is giving him trouble.
13:27:20 /home/jim> su -l mike
Password:(I type mike's password (or have him type it) and press Enter)
13:27:22 /home/mike> id
uid=1004(mike) gid=1004(mike) groups=1004(mike)
13:27:25 /home/mike> exit # this leaves mike's login shell and returns to jim's
13:27:29 /home/jim> id
uid=1001(jim) gid=1001(jim) groups=1001(jim),0(wheel),5(operator),14(ftp),920(vboxusers)
Using the -l
option of su
causes it to simulate a full login (per the man
page).
The above requires knowledge of mike
's password, however. If I have sudo
access, I can log in as mike
even without his password.
13:27:37 /home/jim> sudo su -l mike
Password:(I type my own password, because this is sudo asking)
13:27:41 /home/mike>
In summary, the reason the permissions on the su
executable are as you show, is because su
is a general-purpose tool that is available to all users on the system.
One point that is missing from @ilkkachu's answer is that elevating to root is only one specific use for su
. The general purpose of su is to open a new shell under another user's login account. That other user could be root
(and perhaps most often is), but su
can be used to assume any identity the local system can authenticate.
For example, if I'm logged in as user jim
, and I want to investigate a problem that mike
has reported, but which I am unable to reproduce, I might try logging in as mike
, and running the command that is giving him trouble.
13:27:20 /home/jim> su -l mike
Password:(I type mike's password (or have him type it) and press Enter)
13:27:22 /home/mike> id
uid=1004(mike) gid=1004(mike) groups=1004(mike)
13:27:25 /home/mike> exit # this leaves mike's login shell and returns to jim's
13:27:29 /home/jim> id
uid=1001(jim) gid=1001(jim) groups=1001(jim),0(wheel),5(operator),14(ftp),920(vboxusers)
Using the -l
option of su
causes it to simulate a full login (per the man
page).
The above requires knowledge of mike
's password, however. If I have sudo
access, I can log in as mike
even without his password.
13:27:37 /home/jim> sudo su -l mike
Password:(I type my own password, because this is sudo asking)
13:27:41 /home/mike>
In summary, the reason the permissions on the su
executable are as you show, is because su
is a general-purpose tool that is available to all users on the system.
edited 6 hours ago
answered 7 hours ago
Jim L.Jim L.
1,6413 silver badges9 bronze badges
1,6413 silver badges9 bronze badges
That makes a lot of sense. Since I'm in the habit of usingsudo
I forgot thatsu
can be used for more than justsudo -s
. And without being a sudoer this would be the only way to switch users without altering ssh keys. For my use case this is another reason to remove the permission, but I understand now why the world execute permission is set by default. Thanks!
– Altay_H
7 hours ago
add a comment |
That makes a lot of sense. Since I'm in the habit of usingsudo
I forgot thatsu
can be used for more than justsudo -s
. And without being a sudoer this would be the only way to switch users without altering ssh keys. For my use case this is another reason to remove the permission, but I understand now why the world execute permission is set by default. Thanks!
– Altay_H
7 hours ago
That makes a lot of sense. Since I'm in the habit of using
sudo
I forgot that su
can be used for more than just sudo -s
. And without being a sudoer this would be the only way to switch users without altering ssh keys. For my use case this is another reason to remove the permission, but I understand now why the world execute permission is set by default. Thanks!– Altay_H
7 hours ago
That makes a lot of sense. Since I'm in the habit of using
sudo
I forgot that su
can be used for more than just sudo -s
. And without being a sudoer this would be the only way to switch users without altering ssh keys. For my use case this is another reason to remove the permission, but I understand now why the world execute permission is set by default. Thanks!– Altay_H
7 hours ago
add a comment |
However, since the permissions on
su
are-rwsr-xr-x
there's nothing stopping them from attempting to brute force the root password.
Yes. Assuming your usual Linux system, the pam_unix.so
module does delay a failed authentication attempt by ~two seconds, but I don't think there's anything to stop simultaneous attempts.
Failed attempts are logged of course:
Aug 16 22:52:33 somehost su[17387]: FAILED su for root by ilkkachu
Brute-forcing a password should show up prominently in the logs, if you have any kind of system for monitoring them. And if you have untrusted local users, maybe you should. Untrusted local users could also attempt to use any local-only privilege escalation exploits, and they're much more common than remote privilege escalation.
What's further puzzling to me in that it doesn't even seem useful.
Of course it's useful, it allows you to elevate yourself to root
, if you know the password.
It allows me to run
su
directly instead of needing to dosudo su
, but this is hardly an inconvenience.
sudo su
is somewhat redundant. There's no need to use two programs that are meant to allow you to run programs as another user, one is quite enough. Just use sudo -i
or sudo -s
(or sudo /bin/bash
etc.) if you want to run shell.
Am I overlooking something? Is the world execute permission on su just there for historic reasons?
See above. Well, not all systems have sudo
as an alternative, I'm not sure if you consider that historic.
Are there any downsides to removing that permission that I haven't encountered yet?
Not really, no as far as I know. I think some systems have su
set so that only members of a particular group ("wheel
") can run it. You can do the same to sudo
if you like (chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo
).
Or you could just remove either or both of the programs if you don't need them. Though on Debian, su
comes with the login
package, so it's probably not a good idea to remove the package as a whole. (And pairing login
and su
together like that does seem somewhat historic.)
BSD systems require users to be in thewheel
group to usesu
. There are some BSD systems (I can only speak for OpenBSD) that does not ship withsudo
at all (it's a 3rd-party package). OpenBSD hasdoas
which is a reimplementation of the basics ofsudo
, but it's disabled by default upon installing a fresh system.
– Kusalananda♦
8 hours ago
@Kusalananda You only have to be inwheel
if you want tosu
to root. Any account cansu
to any non-root account for which they have the password, regardless of their membership in thewheel
group.
– Jim L.
7 hours ago
I run 'sudo su -' to ensure that the root shell I get is a full root login, without a polluted environment from my user account. The default sudoers on RHEL includes quite a few environment variables that are executable (such as PS1).
– jsbillings
5 hours ago
add a comment |
However, since the permissions on
su
are-rwsr-xr-x
there's nothing stopping them from attempting to brute force the root password.
Yes. Assuming your usual Linux system, the pam_unix.so
module does delay a failed authentication attempt by ~two seconds, but I don't think there's anything to stop simultaneous attempts.
Failed attempts are logged of course:
Aug 16 22:52:33 somehost su[17387]: FAILED su for root by ilkkachu
Brute-forcing a password should show up prominently in the logs, if you have any kind of system for monitoring them. And if you have untrusted local users, maybe you should. Untrusted local users could also attempt to use any local-only privilege escalation exploits, and they're much more common than remote privilege escalation.
What's further puzzling to me in that it doesn't even seem useful.
Of course it's useful, it allows you to elevate yourself to root
, if you know the password.
It allows me to run
su
directly instead of needing to dosudo su
, but this is hardly an inconvenience.
sudo su
is somewhat redundant. There's no need to use two programs that are meant to allow you to run programs as another user, one is quite enough. Just use sudo -i
or sudo -s
(or sudo /bin/bash
etc.) if you want to run shell.
Am I overlooking something? Is the world execute permission on su just there for historic reasons?
See above. Well, not all systems have sudo
as an alternative, I'm not sure if you consider that historic.
Are there any downsides to removing that permission that I haven't encountered yet?
Not really, no as far as I know. I think some systems have su
set so that only members of a particular group ("wheel
") can run it. You can do the same to sudo
if you like (chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo
).
Or you could just remove either or both of the programs if you don't need them. Though on Debian, su
comes with the login
package, so it's probably not a good idea to remove the package as a whole. (And pairing login
and su
together like that does seem somewhat historic.)
BSD systems require users to be in thewheel
group to usesu
. There are some BSD systems (I can only speak for OpenBSD) that does not ship withsudo
at all (it's a 3rd-party package). OpenBSD hasdoas
which is a reimplementation of the basics ofsudo
, but it's disabled by default upon installing a fresh system.
– Kusalananda♦
8 hours ago
@Kusalananda You only have to be inwheel
if you want tosu
to root. Any account cansu
to any non-root account for which they have the password, regardless of their membership in thewheel
group.
– Jim L.
7 hours ago
I run 'sudo su -' to ensure that the root shell I get is a full root login, without a polluted environment from my user account. The default sudoers on RHEL includes quite a few environment variables that are executable (such as PS1).
– jsbillings
5 hours ago
add a comment |
However, since the permissions on
su
are-rwsr-xr-x
there's nothing stopping them from attempting to brute force the root password.
Yes. Assuming your usual Linux system, the pam_unix.so
module does delay a failed authentication attempt by ~two seconds, but I don't think there's anything to stop simultaneous attempts.
Failed attempts are logged of course:
Aug 16 22:52:33 somehost su[17387]: FAILED su for root by ilkkachu
Brute-forcing a password should show up prominently in the logs, if you have any kind of system for monitoring them. And if you have untrusted local users, maybe you should. Untrusted local users could also attempt to use any local-only privilege escalation exploits, and they're much more common than remote privilege escalation.
What's further puzzling to me in that it doesn't even seem useful.
Of course it's useful, it allows you to elevate yourself to root
, if you know the password.
It allows me to run
su
directly instead of needing to dosudo su
, but this is hardly an inconvenience.
sudo su
is somewhat redundant. There's no need to use two programs that are meant to allow you to run programs as another user, one is quite enough. Just use sudo -i
or sudo -s
(or sudo /bin/bash
etc.) if you want to run shell.
Am I overlooking something? Is the world execute permission on su just there for historic reasons?
See above. Well, not all systems have sudo
as an alternative, I'm not sure if you consider that historic.
Are there any downsides to removing that permission that I haven't encountered yet?
Not really, no as far as I know. I think some systems have su
set so that only members of a particular group ("wheel
") can run it. You can do the same to sudo
if you like (chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo
).
Or you could just remove either or both of the programs if you don't need them. Though on Debian, su
comes with the login
package, so it's probably not a good idea to remove the package as a whole. (And pairing login
and su
together like that does seem somewhat historic.)
However, since the permissions on
su
are-rwsr-xr-x
there's nothing stopping them from attempting to brute force the root password.
Yes. Assuming your usual Linux system, the pam_unix.so
module does delay a failed authentication attempt by ~two seconds, but I don't think there's anything to stop simultaneous attempts.
Failed attempts are logged of course:
Aug 16 22:52:33 somehost su[17387]: FAILED su for root by ilkkachu
Brute-forcing a password should show up prominently in the logs, if you have any kind of system for monitoring them. And if you have untrusted local users, maybe you should. Untrusted local users could also attempt to use any local-only privilege escalation exploits, and they're much more common than remote privilege escalation.
What's further puzzling to me in that it doesn't even seem useful.
Of course it's useful, it allows you to elevate yourself to root
, if you know the password.
It allows me to run
su
directly instead of needing to dosudo su
, but this is hardly an inconvenience.
sudo su
is somewhat redundant. There's no need to use two programs that are meant to allow you to run programs as another user, one is quite enough. Just use sudo -i
or sudo -s
(or sudo /bin/bash
etc.) if you want to run shell.
Am I overlooking something? Is the world execute permission on su just there for historic reasons?
See above. Well, not all systems have sudo
as an alternative, I'm not sure if you consider that historic.
Are there any downsides to removing that permission that I haven't encountered yet?
Not really, no as far as I know. I think some systems have su
set so that only members of a particular group ("wheel
") can run it. You can do the same to sudo
if you like (chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo
).
Or you could just remove either or both of the programs if you don't need them. Though on Debian, su
comes with the login
package, so it's probably not a good idea to remove the package as a whole. (And pairing login
and su
together like that does seem somewhat historic.)
answered 8 hours ago
ilkkachuilkkachu
67k10 gold badges111 silver badges193 bronze badges
67k10 gold badges111 silver badges193 bronze badges
BSD systems require users to be in thewheel
group to usesu
. There are some BSD systems (I can only speak for OpenBSD) that does not ship withsudo
at all (it's a 3rd-party package). OpenBSD hasdoas
which is a reimplementation of the basics ofsudo
, but it's disabled by default upon installing a fresh system.
– Kusalananda♦
8 hours ago
@Kusalananda You only have to be inwheel
if you want tosu
to root. Any account cansu
to any non-root account for which they have the password, regardless of their membership in thewheel
group.
– Jim L.
7 hours ago
I run 'sudo su -' to ensure that the root shell I get is a full root login, without a polluted environment from my user account. The default sudoers on RHEL includes quite a few environment variables that are executable (such as PS1).
– jsbillings
5 hours ago
add a comment |
BSD systems require users to be in thewheel
group to usesu
. There are some BSD systems (I can only speak for OpenBSD) that does not ship withsudo
at all (it's a 3rd-party package). OpenBSD hasdoas
which is a reimplementation of the basics ofsudo
, but it's disabled by default upon installing a fresh system.
– Kusalananda♦
8 hours ago
@Kusalananda You only have to be inwheel
if you want tosu
to root. Any account cansu
to any non-root account for which they have the password, regardless of their membership in thewheel
group.
– Jim L.
7 hours ago
I run 'sudo su -' to ensure that the root shell I get is a full root login, without a polluted environment from my user account. The default sudoers on RHEL includes quite a few environment variables that are executable (such as PS1).
– jsbillings
5 hours ago
BSD systems require users to be in the
wheel
group to use su
. There are some BSD systems (I can only speak for OpenBSD) that does not ship with sudo
at all (it's a 3rd-party package). OpenBSD has doas
which is a reimplementation of the basics of sudo
, but it's disabled by default upon installing a fresh system.– Kusalananda♦
8 hours ago
BSD systems require users to be in the
wheel
group to use su
. There are some BSD systems (I can only speak for OpenBSD) that does not ship with sudo
at all (it's a 3rd-party package). OpenBSD has doas
which is a reimplementation of the basics of sudo
, but it's disabled by default upon installing a fresh system.– Kusalananda♦
8 hours ago
@Kusalananda You only have to be in
wheel
if you want to su
to root. Any account can su
to any non-root account for which they have the password, regardless of their membership in the wheel
group.– Jim L.
7 hours ago
@Kusalananda You only have to be in
wheel
if you want to su
to root. Any account can su
to any non-root account for which they have the password, regardless of their membership in the wheel
group.– Jim L.
7 hours ago
I run 'sudo su -' to ensure that the root shell I get is a full root login, without a polluted environment from my user account. The default sudoers on RHEL includes quite a few environment variables that are executable (such as PS1).
– jsbillings
5 hours ago
I run 'sudo su -' to ensure that the root shell I get is a full root login, without a polluted environment from my user account. The default sudoers on RHEL includes quite a few environment variables that are executable (such as PS1).
– jsbillings
5 hours ago
add a comment |
You already have some good answers, but there's one part of your post they don't address.
As far as I can tell, the world execute permission on /usr/bin/su is the only avenue for users attempting to gain root on my server.
That's a dangerous assumption. If you've set a good password for root, then it in most cases is far more likely that a successful privilege escalation will be due to the exploitation of a bug in the kernel or a setuid binary (you can of course also remove the setuid bit from those, but passwd
is setuid, and if you want to high security you should also offer that to your users, and denying them the option of changing their password is not compatible with that).
add a comment |
You already have some good answers, but there's one part of your post they don't address.
As far as I can tell, the world execute permission on /usr/bin/su is the only avenue for users attempting to gain root on my server.
That's a dangerous assumption. If you've set a good password for root, then it in most cases is far more likely that a successful privilege escalation will be due to the exploitation of a bug in the kernel or a setuid binary (you can of course also remove the setuid bit from those, but passwd
is setuid, and if you want to high security you should also offer that to your users, and denying them the option of changing their password is not compatible with that).
add a comment |
You already have some good answers, but there's one part of your post they don't address.
As far as I can tell, the world execute permission on /usr/bin/su is the only avenue for users attempting to gain root on my server.
That's a dangerous assumption. If you've set a good password for root, then it in most cases is far more likely that a successful privilege escalation will be due to the exploitation of a bug in the kernel or a setuid binary (you can of course also remove the setuid bit from those, but passwd
is setuid, and if you want to high security you should also offer that to your users, and denying them the option of changing their password is not compatible with that).
You already have some good answers, but there's one part of your post they don't address.
As far as I can tell, the world execute permission on /usr/bin/su is the only avenue for users attempting to gain root on my server.
That's a dangerous assumption. If you've set a good password for root, then it in most cases is far more likely that a successful privilege escalation will be due to the exploitation of a bug in the kernel or a setuid binary (you can of course also remove the setuid bit from those, but passwd
is setuid, and if you want to high security you should also offer that to your users, and denying them the option of changing their password is not compatible with that).
answered 5 hours ago
HenrikHenrik
3,7491 gold badge5 silver badges22 bronze badges
3,7491 gold badge5 silver badges22 bronze badges
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f535936%2fwhy-is-su-world-executable%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown