sudo 命令
su命令和su -命令最大的本质区别就是:
前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;
而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。
su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;
而用su -命令切换以后,工作目录变成root的工作目录了。用echo $PATH命令看一下su和su -以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。如图:
一、su :Switch User 用于切换用户用
语法:
用法:su [选项]... [-] [用户 [参数]... ]
Change the effective user id and group id to that of USER. -, -l, --login make the shell a login shell
-c, --command=COMMAND pass a single COMMAND to the shell with -c
--session-command=COMMAND pass a single COMMAND to the shell with -c
and do not create a new session
-f, --fast pass -f to the shell (for csh or tcsh)
-m, --preserve-environment do not reset environment variables
-p same as -m
-s, --shell=SHELL run SHELL if /etc/shells allows it
--help 显示此帮助信息并退出
--version 显示版本信息并退出 注:单独的"-"选项隐含了-l。如果不指定用户,则假设其为root。
e.g su - USER -c 'COMMAND'
二、SUDO
2.1、什么是sudo ?
sudo 是可以让某个用户不需要拥有管理员的账号密码,可以执行管理员的权限的
作为管理员可以指派某些用户可以执行某些特定命令。
授权之后,能够让某用户以另外一个用户的身份运行命令
配置文件:sudoers
2.2、语法
## Syntax: ## user HOST=(RUNAS) TAG:COMMAND
## 用户 登录的主机=(可以变换的身份) 可以执行的命令 TAG:只支持在授权项加标签
四个字段所代表的含义分别是: who:运行命令者的身份---用户帐号,也就是我们想要配置的让哪个系统帐号可以使用sudo命令
USERNAME
#uid
User_Alias
%group
%#gid
where:通过哪些主机---允许用户从哪些地方连接到这台主机,linux作为服务器,管理员是有可能从别的主机远程连接过来的 (whom):以哪个用户的身份---允许切换的身份, which: 运行哪些命令---允许执行的命令 在命令前面加上"!"来表示不可执行的命令
2.3、Who别名:
此外sudo还支持别名的定义,我们通过引用定义好的别名可以提供工作效率:
who User_Alias
which_hosts Host_Alias
runas Runas_Alias
command Cmnd_Alias
2.3.1、别名语法:
Alias_Type NAME=item1,item2,...
注:NAME必须使用全大写字母
2.3.2、Alias_Type如下:
e.g
netuser1 ALL=(root) NETADMIN
netuser2 ALL=(root) NETADMINCMNDS
User_Alias NETADMIN = netuser1,netuser2
Cmnd_Alias NETADMINCMNDS = /usr/sbin/ip
root ALL=(ALL) ALL #允许root用户执行任意路径下的任意命令
%wheel ALL=(ALL) NOPASSWD: ALL #允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
允许wheel用户组的用户以root权限修改其他用户的密码。 前面多了一个“%”,用来表示用户组 后面的"NOPASSWD:"即表示不需要输入密码就可以执行命令
常用参数如下: (标注的须记住)
sudo [-u user] COMMAND -V: 显示版本编号
-l:查看当前用户可以使用的所有sudo命令
-b:将要执行的指令放在后台执行
-g:以指定组执行
-u username/#uid 不加此参数,代表要以root的身份执行命令,而加了此参数,可以以username的身份执行命令(#uid为该username的UID)。
-K:移除时间戳文件
-k:时间戳为元年(下次就必须输入密码)---将会强迫使用者在下次一次执行sudo时询问密码(不论有没有超过N分钟)
-v:更新时间戳,时间戳默认5分钟,五分钟到就需要再次密码,使用-v可以续5分钟。
关于时间戳这个东西。我们默认使用sudo执行命令的时候,第一次是需要输入密码的,短时间内再次执行sudo命令是不需要再次输入密码的。
这个时间是有时间戳控制的。我们可以指定-k修改时间戳为元年,下次在sudo执行命令就必须输入密码。 -p prompt 可以更改问密码的提示语,其中%u会替换为使用者的账号名称,%h会显示主机名称。
-s 执行环境变量中的 SHELL 所指定的 Shell ,或是 /etc/passwd 里所指定的 Shell。
-H 将环境变量中的HOME(宿主目录)指定为要变更身份的使用者的宿主目录。(如不加-u参数就是系统管理者root。)
要以系统管理者身份(或以-u更改为其他人)执行的命令。
E.G
a)设置了某个用户组具有sudo权限之后,只需要使用usermod命令把相应的用户添加到该用户组就可以了:
usermod -a -G wheel linuxidcuser
b)有限制的命令操作:
%users ALL=(root) /usr/bin/passwd
允许users用户组的用户以root权限修改其他用户的密码。
当用户以"sudo passwd"或者"sudo passwd root"方式运行命令的时候,可以直接把root用户的密码改掉,这真是太危险了,必须要把这两条命令禁止调,在命令前面加上"!"来表示不可执行的命令,
如下所是: %users ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
c)racle2用户可以在任何地点以root的身份执行命令useradd(无需密码)和userdel(需要密码).
oracle2 ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel d) 看到NOPASSWD不需要密码,看到PASSWD需要密码
User_Alias USERADMIN=test1,test2
USERADMIN ALL=(root) NOPASSWD:USERADMINCMNDS
Cmnd_Alias USERADMINCMNDS = /usr/sbin/useradd, /usr/sbin/usermod,/usr/bin/passwd [a-z]*,!/usr/bin/passwd root
5、便于管理
在sudoers文件的最后面有如下几行,利用include引入/etc/sudoers.d目录下的配置文件,
https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_009.html
sudo 命令的更多相关文章
- linux sudo 命令
简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码.严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色 ...
- Linux sudo 命令的应用
.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...
- 在脚本中使用sudo命令,将密码保存在脚本中,不需要手动输入密码
在脚本中使用sudo命令,将密码保存在脚本中,不需要手动输入密码. #!/bin/bash echo 'xxx密码xxx'|sudo -S service mysql start echo 'xxx密 ...
- sudo 命令情景分析
Linux 下使用 sudo 命令,可以让普通用户也能执行一些或者全部的 root 命令.本文就对我们常用到 sudo 操作情景进行简单分析,通过一些例子来了解 sudo 命令相关的技巧. 情景一:用 ...
- LINUX 如何开放端口和关闭端口/jps/sudo命令
1 在java的根目录下用java的jps查看:============================================================================ ...
- sudo命令使用的几个场景
在linux系统下,普通用户无法直接执行root用户权限下的命令,如果想让普通用户执行只有root用户才能执行的操作命令.下面罗列下经常使用sudo命令的几个场景: 1.用户无权限执行root命令普通 ...
- Linux su和sudo命令的区别,并获得root权限
su(superuser) su表示切换用户,如: 输入:su命令后回车表示切换当前的用户到root用户,或者: 输入:su - root(或者其他用户名)这里加了"-"后表示也切 ...
- 【转】sudo命令情景分析
文章转自:http://www.cnblogs.com/hazir/p/sudo_command.html Linux 下使用 sudo 命令,可以让普通用户也能执行一些或者全部的 root 命令.本 ...
- linux sudo命令
Sudo”是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他 特许用户才能完成的任务,比如:运行一些像mount,ha ...
- Ubuntu 下误修改用户组导致sudo命令无效
1.手贱地修改了当前用户的权限组,导致sudo命令无法使用,且root用户的密码尚未修改,登陆不了root用户. 2.切换到recoverymode ,使用root用户登陆 3.执行mount -o ...
随机推荐
- .net core web API使用Identity Server4 身份验证
一.新建一个.net core web项目作为Identity server 4验证服务. 选择更改身份验证,然后再弹出的对话框里面选择个人用户账户. nuget 安装Identity server相 ...
- 利用脚本一键执行脚本,创建SharePoint文档库列表
SharePoint基于文档库和列表上进行二次开发,生成新的文档库和新的列表模板 通过新的模板,创建新的文档库与列表 --定义site对象$site = SPSite http://dvt176/si ...
- Fatal error: Uncaught Error: Call to a member function bind_param() on boolean
1.2019年10月22日 PHP写mysqli 预编译查询的时候报错. Fatal error: Uncaught Error: Call to a member function bind_par ...
- AndroidStudio中Run按钮是灰色的解决方法
在model下拉框中选择app.如果下拉框中没有app,(没有工程名),那么请先去设置: Android Studio 3.3.0 File->sync project with gradles ...
- spring的Autowired、Resource、Inject的使用
基本知识:spring最底层使用的是Map,id是bean的id,value是bean的class或者是实例. 1:bean的加载顺序. @Bean("testDao") publ ...
- 【转】TCP报文格式定义详解
TCP报文是TCP层传输的数据单元,也叫报文段. 1.端口号:用来标识同一台计算机的不同的应用进程. 1)源端口:源端口和IP地址的作用是标识报文的返回地址. 2)目的端口:端口指明接收方计算机上的应 ...
- DELL R730 做raid10
1.服务器开机,在出现下图提示时,同时按着<ctrl >+ < R >键,即可进入配置界面 2.会进入下图 3.按上下键到第一项PERC H730P MINI ,按F2,选择c ...
- Windows 下的常规命令(收藏)
1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 4. explorer-------打开资源管理器 5. l ...
- IDRAC 固件升级操:
Internal Use - Confidential IDRAC 固件升级操作: R630:https://downloads.dell.com/FOLDER05590166M/1/iDRAC-wi ...
- Windows下通过SSH无密码连接Linux服务器
一.配置环境 1.本机系统:Windows 10 Pro(64位) 2.服务器:CentOS 6.10(64位) 3.SSH连接软件:SecureCRT 二.配置SSH无密码登录步骤 1.在个人PC机 ...