暂无个人介绍
2021年11月
根据Sudo的定义,理论上Sudo是可以让用户具有管理员的大部分权限的。 但是Sudo的权限也是可以被真正的root用户进行限制的,root可以限制sudo用户使用的命令和权限,默认是(ALL ALL),所以我们有些时候可能忽视了这一点。 而有一部分系统文件,其中的典型是sudo配置文件(/etc/sudoers),此类文件权限是0440,它是不可能允许sudo用户修改的。
$sudo visudo 找到
%admin ALL=(ALL) ALL
注释之,在下面加上
%admin ALL=(ALL) NOPASSWD: ALL
意思是属于admin组的用户可以不需要输入密码执行sudo 如果是
admin ALL=(ALL) NOPASSWD: ALL
也就是去掉百分内号,容意思就是admin这个用户可以执行sudo
这样做的好处是避免了输入错误,如果出错,退出之后会提示你出错,按e重新编辑,不会出现进不了sudo的情况,安全了很多。
配置sudo的配置文件在/etc/sudoers里面,一般通过visudo命令来安全打开编辑。查看/etc/sudoers的用法可以使用命令: man 5 sudoers。在/etc/sudoers文件里面主要包括这两部分: 1. 别名设置 别名主要包括这几种:User_Alias,Host_Alias,Runas_Alias,Cmnd_Alias,分别是用户别名,主机别名,运行用户别名,命令别名。设置这几个别名的命令主要是为了配置方便,这个很类似linux用户群组或是数据库中角色的作用,有了别名便可以批量的赋予权限。 设置方法 Alias_Type alias_name = name1, name2, name3, 例如User_Alias User1 = user1, user2, user3。其他类型的alias设置方法类似。 2. 真正的sudo entry 这个就是真正配置哪些用户可以使用哪些命令了(你甚至可以不使用别名设置那部分)。 格式为:用户名(用户别名) 主机名(主机别名)=[(运行用户或是Runas_Alias)可选] [tag可选] 可以执行的命令(或Cmmd_Alias) 这样描述语法很生硬,不易理解,举例子 user1 host1 = /bin/kill # user1 可以在host1上使用命令/bin/kill user1 host1 = NOPASSWD: /bin/kill # user1 可以在host1上使用命令/bin/kill 同时可以不必输入密码(这里就是使用了NOPASSWD
user1 host1 = NOPASSWD: /bin/kill , PASSWORD: /bin/ls # user1 可以在host1上使用命令/bin/kill无需输入密码,但是使用/bin/ls则需要输入密码 user1 host1 = (opterator) /bin/kill # user1 可以在host1上使用命令/bin/kill但是必须是以operator用户运行这个命令,等价于
user1 host1 = (:group_name) /bin/kill # user1 可以在host1上使用命令/bin/kill,且必须以group_name这个用户群组里面的用户来运行。 %group_name host1 = /bin/kill # 所有group_name里面的用户都可以在host1上执行/bin/kill(linux中一般代表整个用户群组用
1.在root下执行visudo命令,等同于vi /etc/sudoers; 2.在root ALL=(ALL) ALL下
添加如下内容
test ALL=(ALL) ALL
想免除密码输入加上NOPASSWD:
test ALL=(ALL) NOPASSWD: ALL
保存并退出 3.切换到test用户进行sudo权限测试 4.如果每赋予一个用户sudo权限都这么设置那岂不是很麻烦,这里可以添加到用户组
去掉 # %wheel ALL=(ALL) ALL 前面的#
5.将test2添加到wheel组 usermod -a -G wheel test2 6.如果想免除密码输入,加上参数NOPASSWD。
(1)sudo 命令
xzm@ubuntu:~$ sudo
这样输入当前管理员用户密码就可以得到超级用户的权限。但默认的情况下5分钟root权限就失效了。
(2)sudo -i xzm@ubuntu:~$ sudo -i
通过这种方法输入当前管理员用户的密码就可以进到root用户。
(3)如果想一直使用root权限,要通过su切换到root用户。 那我们首先要重设置root用户的密码:
xzm@ubuntu:~$ sudo passwd root
这样就可以设置root用户的密码了。
(4)之后就可以自由的切换到root用户了 xzm@ubuntu:~$ su
输入root用户的密码即可。
su "king" 或者 exit回到用户权限
root用户:是系统中唯一的超级管理员,它具有等同于操作系统的权限。一些需要root权限的应用,譬如广告阻挡,是需要root权限的。可问题在于root比windows的系统管理员的能力更大,足以把整个系统的大部分文件删掉,导致系统完全毁坏,不能再次使用。所以,用root进行不当的操作是相当危险的,轻微的可以死机,严重的甚至不能开机。所以,在Unix、Linux及Android中,除非确实需要,一般情况下都不推荐使用root,root之后如果手机还在保修期内是不给保修了的。最好单独建立一个普通的用户,作为日常之用
非root用户:一般情况下在root的根目录下是无权限进行访问的,这在一定程度上增强了整个系统的安全性。
1, 由于有日志可以提高安全审计的能力 2, 操作员不需要不受限制的root特权就能完成许多任务 3, 保证root密码的安全 4, 比使用su快 5, 不需要改变root密码就能收回某些权限 6, 只需维护sudoers就可维护所以用户的特权列表 7, 降低遗留root shell的概率 8, 可以使用单个文件来控制对整个网络的访问权限 当然也有不足,比如说如果突破了能执行sudo命令的个人账户,就等同突破了root账户本身。
方法/步骤1: 切换到root用户
[linux@localhost ~]$ su root
密码:
[root@localhost ~]#
方法/步骤2: 查看/etc/sudoers文件权限,如果只读权限,修改为可写权限
[root@localhost ~]# ll /etc/sudoers
-r--r-----. 1 root root 4030 12月 10 09:55 /etc/sudoers
[root@localhost ~]# chmod 777 /etc/sudoers
[root@localhost ~]# ls -l /etc/sudoers
-rwxrwxrwx. 1 root root 4030 12月 10 09:57 /etc/sudoers
方法/步骤3: 修改/etc/sudoers文件,执行命令如下:
/username是你的用户名/
[root@localhost ~]# echo 'username ALL=(ALL) ALL' >> /etc/sudoers
或者root权限下输入Visudo 或者 vim /etc/sudoers,找到 root ALL=(ALL) ALL的字段,在下一行追加:
username ALL=(ALL) ALL
5分钟之后密码过期,下次需要重新输入,如果不想如此麻烦,可以用以下方法
username ALL=(ALL) NOPASSWD: ALL
说明:格式为{用户名 网络中的主机=(执行命令的目标用户) 执行的命令范围}
方法/步骤4: 保存退出,并恢复/etc/sudoers的访问权限为440
[root@localhost ~]# chmod 440 /etc/sudoers
[root@localhost ~]# ll /etc/sudoers
-r--r-----. 1 root root 4030 12月 10 09:59 /etc/sudoers
方法/步骤5: 切换到普通用户,测试用户权限提升功能
使用Root用户来进行你的日常运维管理操作,存在极大的安全风险
使用Root用户更容易在意外执行有高风险命令时产生不可挽回的操作; 需要对Root用户的账号信息进行分发,容易出现信息安全泄露的问题。