1.su与sudo命令详解
-, -l, --login:切换至目标用户,其用户权限,环境变量都会随之切换至目标用户;若无此选项,则只有用户的权限切换至目标用户 -c, --command=COMMAND:以指定用户的身份执行一次命令,就立即退出 -m, --preserve-environment:-m和-p是一样的,表示使用目前的环境变量,而不读取新用户的配置文件 -p same as -m:同上 |
(1)若未指定用户,则表示切换至root用户 [root@www ~]# su - (2)在非交互模式,以指定用户(hadoop)的身份执行一次命令后,就立即退出 [root@www ~]# su - hadoop -c 'echo $UID' 501 (3)在非交互模式,以指定用户(hadoop)的身份执行查看hadoop的UID号,并在其家目录下创建1.txt的文件 [root@www ~]# su - hadoop -c 'echo $UID;touch /home/hadoop/1.txt' 501 [root@www ~]# ls /home/hadoop/ 1.txt |
-l:查看sudo使用者的权限; -U user:查看指定用户可以执行的sudo命令,仅能和-l选项一起使用; -u user:在非交互模式下,以指定用户的身份执行命令,命令执行完毕,就立即退出; -b:将指令放在在后台运行; -V:显示版本号 -h:显示版本号及指令的使用方式 -v:如果两次执行sudo的间隔在5分钟以内,那么再次执行sudo时,就不需要输入密码;如果两次操作间隔超过5分钟,则会提示输入密码 -k:将会强迫使用者在下一次执行sudo时问密码(不管有没有超过N分钟) |
(1)在非交互模式下,以普通用户hadoop的身份执行sudo命令ls,列出hadoop家目录下的内容 [root@www ~]# sudo -u hadoop ls /home/hadoop 执行一条命令 1.txt 2.txt [root@www ~]# sudo -u hadoop ls /home/hadoop;touch /home/hadoop/3.txt 执行多条命令,多条操作命令之间以分号分割 1.txt 2.txt [root@www ~]# sudo -u hadoop ls /home/hadoop 1.txt 2.txt 3.txt |
who which_host=(whom) command |
who:代表的是要授权的用户名,也可使用User_Alias这样的用户别名,但该用户别名必须事先在配置文件中进行定义 which_host:代表的是来源主机的地址,也可使用Host_Alias这样的来源主机别名,同样,该主机别名需事先在配置文件中进行定义 来源的地址可以是单个IP,一个或多个网段 whom:通常可以省略,若省略,则是以root用户身份运行; command:一般来说,可以使用命令绝对路径和相对路径;但我更推荐大家在这里使用命令的绝对路径; 原因:当root用户和普通用户的PATH变量不一样,而我们授权的命令的路径刚好就出现在这些不一样PATH变量中的时候,普通用户在执行某些命令的时候,可能会提示命令找不到的错误提示 ,因为普通用户是无法获取管理员的PATH径。所以强烈推荐各位在配置文件中定义command的时候,尽可能使用命令的绝对路径,避免出错。若是这种情况,使用sudo执行命令的时候,该命令也需要使用定义时使用绝对路径。 下面两个分别是我当前系统上root和普通用户的PATH变量 [hadoop@www ~]$ echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/hadoop/bin [root@www ~]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 当需要授权的用户比较多时,我们还可以在配置文件中定义用户别名、主机别名、命令别名 命令别名(Cmnd_Alias)、主机别名(Host_Alias)、用户别名(User_Alias)、Runas_Alias 别名 User_Alias:用来定义用户别名 Host_Alias:用来定义来源主机别名 Runas_Alias:用来定义以指定用户身份运行的别名 Cmnd_Alias:用来定义命令别名,即由root授权的命令的集合 别名的命名规范:(1)别名用全大写字符;(2)别名的多个值之间以逗号分割;(3)别名可以嵌套使用 执行sudo命令的默认超时时间是5分钟,5分钟后会再次提示输入密码 |
天网恢恢,疏而不漏,用户使用sudo进行的各种操作都被记录在了/var/log/secure文件中了,干了坏事,也休想抵赖,是吧。 |