linux下sudo命令[转]
一、sudo简介:
1、概念:
sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如halt,reboot,su等等。这样不仅减少了root用户的登陆和管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。
它的特性主要有这样几点:
1、sudo能够限制用户只在某台主机上运行某些命令。
2、sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
3、sudo使用时间戳文件--日志 来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。
4、sudo的配置文件是/etc/sudoers,属性必须为0440,它允许系统管理员集中的管理用户的使用权限和使用的主机。
2、编辑配置文件命令:visudo
注意:编辑sudo的配置文件/etc/sudoers是一般不要直接使用vi(vi /etc/sudoers)去编辑,因为sudoers配置有一定的语法,直接用vi编辑保存系统不会检查语法,如有错也保存了可能导致无法使用sudo工具,最好使用visudo命令去配置。虽然visudo也是调用vi去编辑,但是保存时会进行语法检查,有错会有提示。
3、语法,参数
1
|
sudo [ -Vhl LvkKsHPSb ] │ [ -p prompt ] [ -c class │- ] [ -a auth_type ] [-u username│#uid ] command
|
参数:
1
2
3
4
5
6
7
8
9
10
11
|
-V 显示版本编号
-h 会显示版本编号及指令的使用方式说明
-l 显示出自己(执行 sudo 的使用者)的权限
-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
-b 将要执行的指令放在背景执行
-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
-H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令
|
二、实战演练
1、定义一个用户(tom)使其拥有添加用户的特殊权限,并进行创建用户操作。
①、创建tom并为其创建密码
1
2
3
4
|
[root@localhost ~] # useradd tom
[root@localhost ~] # echo "tom" | passwd --stdin tom
Changing password for user tom.
passwd : all authentication tokens updated successfully.
|
②、修改配置文件,为tom添加特殊权限useradd
1
2
3
4
|
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tom ALL=(root) /usr/sbin/useradd ##添加权限,这里的/usr/sbin/useradd表示普通用户执行时必须使用全路径,可以使用which 命令查看哦!
## Allows members of the 'sys' group to run networking, software,
|
③、切换到用户tom,验证特殊权限
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[root@localhost ~] # su - tom ##切换用户
[tom@localhost ~]$ sudo -l ##查看此用户拥有的特殊权限
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[ sudo ] password for tom: ##这里需要验证密码,以保证是用户本人执行操作
Matching Defaults entries for tom on this host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE
INPUTRC KDEDIR LS_COLORS ", env_keep+=" MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+= "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES" , env_keep+="LC_MONETARY
LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE ", env_keep+=" LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY", secure_path= /sbin \: /bin \: /usr/sbin \: /usr/bin
User tom may run the following commands on this host:
(root) /usr/sbin/useradd ##可以以root身份,使用useradd命令
|
tom执行useradd:
1
2
3
|
[tom@localhost ~]$ sudo /usr/sbin/useradd test1 ##添加用户test1
[tom@localhost ~]$ tail -1 /etc/passwd
test1:x:501:501:: /home/test1 : /bin/bash ##添加成功
|
④、查看日志/vat/log/secure
注意:要切换回root才有权限查看日志
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@localhost ~] # tail /var/log/secure
Apr 5 13:55:58 localhost su : pam_unix( su -l:session): session opened for user tom by root(uid=0)
Apr 5 13:56:11 localhost su : pam_unix( su -l:session): session closed for user tom
Apr 5 13:56:17 localhost passwd : pam_unix( passwd :chauthtok): password changed for tom
Apr 5 13:56:17 localhost passwd : gkr-pam: couldn 't update the ' login' keyring password: no old password was entered
Apr 5 13:56:23 localhost su : pam_unix( su -l:session): session opened for user tom by root(uid=0)
Apr 5 13:56:43 localhost sudo : tom : TTY=pts /0 ; PWD= /home/tom ; USER=root ; COMMAND=list
##tom以管理员身份执行了list命令
Apr 5 14:00:50 localhost sudo : tom : TTY=pts /0 ; PWD= /home/tom ; USER=root ; COMMAND= /usr/sbin/useradd test1
##tom以管理员身份执行了useradd命令,添加用户test1
Apr 5 14:00:50 localhost useradd [2128]: new group: name=test1, GID=501
Apr 5 14:00:50 localhost useradd [2128]: new user: name=test1, UID=501, GID=501, home= /home/test1 , shell= /bin/bash
Apr 5 14:07:15 localhost su : pam_unix( su -l:session): session closed for user tom
|
以后可以使用此命令日志查看主机是否遭到入侵攻击,或者查看某用户登录进来并使用特殊权限执行错误指令等等。所以我们要实时监控此文件的动向。
⑤、-k参数示例
1
2
3
4
5
6
|
[root@localhost ~] # su - tom
[tom@localhost ~]$ sudo -k ##结束密码有效期
[tom@localhost ~]$ sudo /usr/sbin/useradd test2
[ sudo ] password for tom: ##有效期结束后,执行特殊命令,需重新验证密码
[tom@localhost ~]$ tail -1 /etc/passwd
test2:x:502:502:: /home/test2 : /bin/bash #添加test2成功
|
2、别名应用,alias:
1
2
3
4
5
|
sudoers文件支持使用别名对同类对象进行分组:组名必须使用全大写字母,使用逗号将同类对象命令隔开。
Host_Alias:主机别名
User_Alias:用户别名
Runas_Alias:在哪些主机以谁的身份运行 的别名
Cmnd_Alias:命令别名
|
①、在配置文件中定义别名
1
2
3
4
5
6
|
[root@localhost ~] # visudo
Host_Alias USERHOSTS = 172.16.0.0 /16 ,127.0.0.0 /8 ,192.168.0.0 /24 ##定义主机别名,可以在哪些机器执行特殊命令
Cmnd_Alias USERADMIN= /usr/sbin/useradd , /usr/sbin/usermod , /usr/sbin/userdel ##定义命令别名
root ALL=(ALL) ALL
tom ALL=(root) USERADMIN ##此处定义tom可以执行别名USERADMIN中的所有命令
tom USERHOSTS=(ROOT) USERADMIN ##可以在别名USERHOSTS中机器上执行别名USERADMIN中的命令
|
验证:
1
2
3
4
5
|
[root@localhost ~] # su - tom
[tom@localhost ~]$ sudo /usr/sbin/userdel -r test2 ##删除用户test2
[ sudo ] password for tom:
[tom@localhost ~]$ tail -1 /etc/passwd ##删除成功
test1:x:501:501:: /home/test1 : /bin/bash
|
②、设禁止某用户执行某操作
1
2
|
tom ALL=(root) /usr/bin/passwd [a-zA-Z]*,! /usr/bin/passwd root
##tom可以以root的身份更改密码,但禁止更改root的密码。
|
③、设置执特权命了时,无需输入密码
1
2
|
tom ALL=(root) /usr/sbin/useradd ,NOPASSWD: /usr/sbin/userdel , /usr/sbin/groupdel ,PASSWD: /usr/sbin/usermod , /usr/sbin/groupmod
##这里的/usr/sbin/useradd 操作时必须使用密码;/usr/sbin/userdel, /usr/sbin/groupdel操作时可以不使用密码(跟在其后的所有操作一律不使用密码);/usr/sbin/usermod, /usr/sbin/groupmod 操作时还是要输入密码;还有PASSWD和NOPASSWD不可定义于别名中哦!
|
验证:
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@localhost ~] # su - tom
[tom@localhost ~]$ sudo /usr/sbin/useradd test3
[ sudo ] password for tom:
[tom@localhost ~]$ sudo -k
[tom@localhost ~]$ sudo /usr/sbin/useradd test4
[ sudo ] password for tom: ##useradd每次都需要输入密码
[tom@localhost ~]$ sudo -k
[tom@localhost ~]$ sudo /usr/sbin/userdel test3 ##执行userdel没有要求输入密码,NOPASSWD设置生效
[tom@localhost ~]$ tail -3 /etc/passwd
tom:x:500:500:: /home/tom : /bin/bash
test1:x:501:501:: /home/test1 : /bin/bash
test4:x:503:503:: /home/test4 : /bin/bash
|
转自:http://www.centoscn.com/CentOS/help/2014/0408/2741.html
转载于:https://www.cnblogs.com/coolgun/p/4601469.html
linux下sudo命令[转]相关推荐
- Hadoop之——Linux下sudo命令报错:hadoop is not in the sudoers file. This incident will be reported.
转载请注明出处:https://blog.csdn.net/l1028386804/article/details/93380235 当在终端执行sudo命令时,系统提示"cuser is ...
- Linux中sudo命令设置,Linux下sudo命令的配置与使用方法
sudo的字面意思是代表super user do!对Linux系统管理员或高级用户而言,它是必不可少的最重要的命令之一. 你可曾有过这样的经历:在终端中试着运行某个命令,结果却遇到"拒绝访 ...
- linux下sudo权限管理
linux下sudo权限管理 1.修改/etc/sudoers下文件 2.文件格式为 user_flag host_flag=(runlevel_flag) command_flag 分别代表用户名 ...
- linux当前时间 按格式化,Linux下date命令,格式化输出,时间设置
date命令的帮助信息 [root@localhost source]# date --help 用法:date [选项]... [+格式] 或:date [-u|--utc|--universal] ...
- Linux 下 Shell 命令的分类及用法
当你打算真正操纵好你的 Linux 系统,没有什么能比命令行界面更让你做到这一点.为了成为一个 Linux 高手,你必须能够理解 Shell命令的不同类型,并且会在终端下正确的使用它们. 在 Linu ...
- linux中sudo命令_Linux中的Sudo命令
linux中sudo命令 Sudo is one of the most widely used commands by Linux administrators and beginners alik ...
- Linux下用命令行彻底删除文件
一.Linux下用命令行彻底删除文件 Linux下一般会使用删除键或者rm命令.将文件扔到垃圾箱.但是,这些方法并没把文件从我们的电脑里彻底删除,只是把文件隐藏起来,让用户看不见而已. 1. shre ...
- Linux下useradd命令与adduser命令的区别(adduser更适合初级使用者,useradd比较适合有些高阶经验的使用者)
文章目录 Linux下useradd命令与adduser命令的区别 man useradd man adduser Linux下useradd命令与adduser命令的区别 Linux下创建用户时会用 ...
- Linux系统Sudo命令的使用说明
Linux系统Sudo命令的使用说明 2011-11-16 11:03:06| 分类:rhel5_033 |字号 订阅 一. sudo的特点 sudo扮演的角色注定了它要在安全方面格外谨慎,否则就会 ...
最新文章
- 2020年,5种将死的编程语言
- 霍夫直线检测python_opencv+python 霍夫直线检测
- Flutter开发之MVC设计模式:新建文件与导入文件(八)
- 【Android】Source Insight 基本用法 ( 导入 Android 源码 | 设置字体 | 显示行号 | 搜索功能 | 快捷键设置 )
- python找不到os模块_python之os模块
- c++大作业迷宫游戏 规定时间内完成_小学生做作业磨蹭的7个原因及对策!太准了~...
- LeetCode 163. 缺失的区间
- 论文学习9-Bidirectional LSTM-CRF Models for Sequence Tagging(LSTM,BILSTM,LSTM-CRF,BILSTM-CRF
- 贪心算法——Huffman 压缩编码的实现
- 关联分析(二)--FP-Growth算法
- CFPS数据处理:少儿代答库与成人库匹配
- 使用python将视频按照帧转为图片
- 考研小作文真题、范文及讲解
- 新华三防火墙简单配置安全域
- 数据库常用操作,会持续更新
- termux使用教程python手机_渗透测试|利用手机攻击电脑(Termux终端初体验)
- unity 字符串 小技巧
- 生成HTML表格的后台模板代码
- 2022-2027年中国安防智能化行业市场全景评估及发展战略规划报告
- FTP测试手机软件图标素材可爱,手把手教你测试FTP
热门文章
- idea创建Struts2 项目并运行
- oracle 测试数据类型,oracle修改表字段的数据类型测试
- java中http解析url,java url 编码(解析http请求汉语言地址 )
- 简单的PHP和MYSQL做投票系统_php mysql简单投票系统
- python openstack究竟能干嘛_openstack是什么,能干什么
- decode函数_decode函数的妙用网友的两个问题解答
- 开发日记-20190814 关键词 日常
- 常见的DNS攻击——偷(劫持)、骗(缓存投毒)、打(DDos)
- lucene .doc文件格式解析——见图
- Lucene默认的打分算法——ES默认