sudo提权配置

sudo命令配置使用
1.sudo介绍
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。

2.原理
在sudo于1980年前后被写出之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。
sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。
由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户取代超级用户作为管理帐号,例如Ubuntu、Mac OS X等。

sudo语法
sudo [ -Vhl LvkKsHPSb ] │ [ -p prompt ] [ -c class│- ] [ -a auth_type ] [-u username│#uid ] command

3.安装
检测是否安装了sudo:
[root@localhost ~]# rpm -q sudo
sudo-1.8.19p2-13.el7.x86_64
如果没有安装,下载软件包进行安装

##如果是centos下,直接执行命令安装
yum install -y sudo
1
2
4.配置
编辑配置文件命令:visudo , 等同于 vi /etc/sudoers

※注意:编辑sudo的配置文件/etc/sudoers是一般不要直接使用vi(vi /etc/sudoers)去编辑,因为sudoers配置有一定的语法,直接用vi编辑保存系统不会检查语法,如有错也保存了可能导致无法使用sudo工具,最好使用visudo命令去配置。虽然visudo也是调用vi去编辑,但是保存时会进行语法检查,有错会有提示。
默认配置文件位置:/etc/sudoers

范例1

sudo -l 列出目前的权限
若用户不在sudoers中会提示不能运行sudo命令,存在则会显示详细的权限。
sudo -V 列出 sudo 的版本
范例2

1. testuser具体sudo权限, 拥有所有权限,相当于root,需要输入testuser的密码,在/etc/sudoers中加入以下行。

testuser ALL=(ALL) ALL

2. testuser具体sudo权限, 拥有所有权限,相当于root,不需要输入testuser的密码,在/etc/sudoers中加入以下行。

testuser ALL=(ALL) NOPASSWD:ALL

3. testuser具体sudo权限,能执行命令/usr/sbin/iptables,/usr/sbin/useradd需要密码,在/etc/sudoers中加入以下行。

testuser ALL=(ALL) /usr/sbin/iptables,/usr/sbin/useradd

4. testuser具体sudo权限, 能执行命令/usr/sbin/iptables,/usr/sbin/useradd不需要密码,在/etc/sudoers中加入以下行。

testuser ALL=(ALL) NOPASSWD:/usr/sbin/iptables,/usr/sbin/useradd

5. testuser具体sudo权限, /usr/sbin/iptables不需要密码,/usr/sbin/useradd,/usr/sbin/userdel需要密码,在/etc/sudoers中加入以下行。

testuser ALL=(ALL) NOPASSWD:/usr/sbin/iptables, PASSWD:/usr/sbin/useradd,/usr/sbin/userdel

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

非交换修改密码:(两种格式

echo 123456 | passwd --stdin user002
echo "user003:123456" | chpasswd

sudo权限配置

muzlei

于 2020-11-09 17:38:52 发布

1000
收藏 6
文章标签: shell linux
版权
sudo权限配置
首先要禁止root的用户登录ssh 在ssh配置文件里面把root用户no掉,一般公司不允许用第三方软件直接root登陆。

 

 

 

 

一、linux给用户添加sudo权限:
有时候,linux下面运行sudo命令,会提示类似:
xxxis not in the sudoers file. This incident will be reported.

 

 

 


这里,xxx是用户名称,然后导致无法执行sudo命令,这时候,如下解决:

进入超级用户模式。也就是输入"su -",系统会让你输入超级用户密码,输入密码后就进入了超级用户模式。(当然,你也可以直接用root用)

添加文件的写权限。也就是输入命令"chmod u+w /etc/sudoers"。

编辑/etc/sudoers文件。也就是输入命令"vim /etc/sudoers",进入编辑模式,找到这一 行:"root ALL=(ALL) ALL"在起下面添加"xxx ALL=(ALL) ALL"(这里的xxx是你的用户名),然后保存退出。

撤销文件的写权限。也就是输入命令"chmod u-w /etc/sudoers"。
然后就行了。

 

二、设置sudo为不需要密码

有时候我们只需要执行一条root权限的命令也要su到root,是不是有些不方便?这时可以用sudo代替。默认新建的用户不在sudo组,需要编辑/etc/sudoers文件将用户加入,该文件只能使用visudo命令,

1) 首先需要切换到root, su - (注意有- ,这和su是不同的,在用命令"su"的时候只是切换到root,但没有把root的环境变量传过去,还是当前用乎的环境变量,用"su -"命令将环境变量也一起带过去,就象和root登录一样)

2) 然后visudo 或者 vi /etc/sudoers, visudo 这个和vi的用法一样:

找到一行root ALL=(ALL) ALL,进入append模式,输入

xxx ALL=(ALL) ALL

root ALL=(ALL) ALL
user1 ALL=(ALL) ALL
然后按Esc,再输入:w保存文件,再:q退出

这样就把自己加入了sudo组,可以使用sudo命令了。

3) 默认5分钟后刚才输入的sodo密码过期,下次sudo需要重新输入密码,如果觉得在sudo的时候输入密码麻烦,把刚才的输入换成如下内容即可:

xxx ALL=(ALL) NOPASSWD: ALL

root ALL=(ALL) ALL
user1 ALL=(ALL) ALL
user2 ALL=(ALL) NOPASSWD: ALL
至于安全问题,对于一般个人用户,我觉得这样也可以的。

4)如果你想设置只有某些命令可以sudo的话,

xxx ALL= (root) NOPASSWD: /sbin/mount, (root) NOPASSWD: /bin/umount, (root) NOPASSWD: /mnt/mount, (root) NOPASSWD: /bin/rm, (root) NOPASSWD: /usr/bin/make, (root) NOPASSWD: /bin/ln, (root) NOPASSWD: /bin/sh, (root) NOPASSWD: /bin/mv, (root) NOPASSWD: /bin/chown, (root) NOPASSWD: /bin/chgrp, (root) NOPASSWD: /bin/cp, (root) NOPASSWD: /bin/chmod

user3 ALL=(root)NOPASSWD:/usr/bin/ls, ALL
一般用下面得得这个格式就行:

qwer ALL=(root) NOPASSWD: /usr/sbin/lsof,/usr/sbin/dmidecode,/bin/kill,/usr/bin/killall,/usr/bin/rsync,ALL

user3 ALL=(root)NOPASSWD:/usr/bin/ls, ALL
也可以设置成输入密码的:

user3 ALL=(root) /usr/bin/ls, ALL

 

 

 

 

补充:

1、which 用来查看当前要执行的命令所在的路径。

linux下有2个命令可完成该功能:which ,whereis

which 用来查看当前要执行的命令所在的路径。

whereis 用来查看一个命令或者文件所在的路径

[user3@localhost ~]$ which ls
alias ls='ls --color=auto'
/usr/bin/ls
[user3@localhost ~]$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

 

————————————————
版权声明:本文为CSDN博主「muzlei」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/A___LEi/article/details/109582068

 

 

 

 

 

 

 

 

 

 sudo配置命令权限如上截图:

使用sudo设置权限(各种权限) 

 ##################################################################################################################

###############################################################################################################

 

 

 

 

 

 

 

 多条命令,使用逗号分隔

posted @ 2022-09-01 17:34  往事已成昨天  阅读(2155)  评论(0编辑  收藏  举报