18.su 命令与 sudo 服务

     su

    Linux 系统为了安全性考虑,使得许多系统命令和服务只能被 root 管理员来使用,

         su 命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切 换到其他用户

       su 命令与用户名之间有一个减号(-),这意味着完全切 换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。强 烈建议在切换用户身份时添加这个减号(-)。

        当从 root 管理员切换到普通用户时是不需要密码验证的,而从普通用户切换成 root 管理员就需要进行密码验证(管理员root密码)

        使用 sudo 命令把特定命令的执行权限赋予指定用户,这样既 可保证普通用户能够完成特定的工作,也可以避免泄露 root 管理员密码。

sudo

使用sudo命令可以给普通用户提供额外的权限来完成原本只有 root管理员才能完成的任务,

可以限制用户执行指定的命令,记录用户执行过的每一条命令,集中管理用户与权限 (/etc/sudoers),以及可以在验证密码后的一段时间无须让用户再次验证密码。

-h 列出帮助信息

-l 列出当前用户可执行的命令

-u 用户名或 UID 值 以指定的用户身份执行命令

-k 清空密码的有效时间,下次执行 sudo 时需要再次进行密码验证

-b 在后台执行指定的命令

-p 更改询问密码的提示语

visudo

 visudo 命令用于编辑、配置用户 sudo 的权限文件,使用 visudo 命令配置权限文件时,其操作方法与 Vim 编辑器中用到的方法完全一致,只有 root 管理员才可以执行.修改存在错误会报错

谁可以使用 允许使用的主机=(以谁的身份)可执行命令的列表
        谁可以使用:稍后要为哪位用户进行命令授权。
        允许使用的主机:可以填写ALL表示不限制来源的主机,亦可填写如192.168.10.0/24这样的网段限制来源地址,使得只有从允许网段登录时才能使用sdo命令。
        以谁的身份:可以填写ALL表示系统最高权限,也可以是另外一位用户的名字。
        可执行命令的列表:可以填写ALL表示不限制命令,亦可填写如sr/bin/cat这样的文件名称来限制命令列表,多个命令文件之间用逗号(,)间隔。


[root@localhost ~]# visudo
99 ## Allow root to run any commands anywhere
    100 root    ALL=(ALL)       ALL
    101 trick ALL=(ALL) ALL

最后一行 可以看到 (ALL) ALL 

[trick@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 trick:
Matching Defaults entries for trick on localhost:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset,
    env_keep="COLORS DISPLAY HOSTNAME HISTSIZE 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 trick may run the following commands on localhost:
    (ALL) ALL

 加权成功,trick用户可以访问/root目录

[trick@localhost ~]$ sudo ls /root
111       456              backup      checkhosts.sh  hoho                  number1.sh  test1.sh
123       5                backup.acl  c.txt          initial-setup-ks.cfg  number.sh   test.sh
123.sh    66.txt           BB.conf     Desktop        ip.txt                Pictures    tmp.tar.gz
2         AA.conf          b.txt       Documents      key.sh                Public      trick.txt
20Z_file  addusers.sh      cat.sh      Downloads      linux                 sorce.sh    users.txt
3         anaconda-ks.cfg  CC.conf     example.sh     linux.txt             temp1       Videos
4         A.txt            ceshi       haha           Music                 Templates

让某个用户只能使用 root 管理员的身份执行指定的命令,切记一定要给出该命令的绝对路径, 否则系统会识别不出来。这时,可以先使用 whereis 命令找出命令所对应的保存路径。

    99 ## Allow root to run any commands anywhere
    100 root    ALL=(ALL)       ALL
    101 trick ALL=(ALL) /usr/bin/cat,/usr/sbin/reboot

可以添加 NOPASSWD 参数, 使得用户下次再执行 sudo 命令时就不用密码验证

    98 ##
    99 ## Allow root to run any commands anywhere
    100 root    ALL=(ALL)       ALL
    101 trick ALL=(ALL) NOPASSWD:/usr/bin/cat,/usr/sbin/reboot
[trick@localhost ~]$ sudo reboot

Remote side unexpectedly closed network connection

──────────────────────────────────────────────────────────────────────────

Session stopped
    - Press  to exit tab
    - Press R to restart session
    - Press S to save terminal output to file

不需要密码了。 

关闭每次sudo的密码                                    Ctrl O  回车 ctrl X 
        sudo visudo
        %sudo   ALL=(ALL:ALL) NOPASSWD:ALL
 

你可能感兴趣的:(#,RHCE,linux,运维,服务器)