zoukankan      html  css  js  c++  java
  • Linux入门进阶第五天——用户管理(帐号管理 )下

    一、身份切换

      为了避免 rm -rf /* 的悲剧发生,平时使用时,尽量使用一般帐号!需要环境设置等必要时才使用root

      1.su命令

        一般地,推荐使用su - / su - username的形式来切换用户(防止环境变量的混乱)

       为了方便下文的操作,创建测试账户:cc,密码为 c20171218#

    su [-lm] [-c 指令] [username]
    选项与参数:
    - :单纯使用 - 如“ su - ”代表使用 login-shell 的变量文件读取方式来登陆系统;
    若使用者名称没有加上去,则代表切换为 root 的身份。
    -l :与 - 类似,但后面需要加欲切换的使用者帐号!也是 login-shell 的方式。
    -m :-m 与 -p 是一样的,表示“使用目前的环境设置,而不读取新使用者的配置文件”
    -c :仅进行一次指令,所以 -c 后面可以加上指令喔!

      完整的su切换用户命令,参考http://linux.51yip.com/search/su

      相关实例:

    范例一:假设你原本是 dmtsai 的身份,想要使用 non-login shell 的方式变成 root
    [dmtsai@study ~]$ su <==注意提示字符,是 dmtsai 的身份喔!
    Password: <==这里输入 root 的密码喔!
    [root@study dmtsai]# id <==提示字符的目录是 dmtsai 喔!
    uid=0(root) gid=0(root) groups=0(root) context=unconf.... <==确实是 root 的身份!
    [root@study dmtsai]# env | grep 'dmtsai'
    USER=dmtsai <==竟然还是 dmtsai 这家伙!
    PATH=...:/home/dmtsai/.local/bin:/home/dmtsai/bin <==这个影响最大!
    MAIL=/var/spool/mail/dmtsai <==收到的 mailbox 是 vbird1
    PWD=/home/dmtsai <==并非 root 的主文件夹
    LOGNAME=dmtsai
    # 虽然你的 UID 已经是具有 root 的身份,但是看到上面的输出讯息吗?
    # 还是有一堆变量为原本 dmtsai 的身份,所以很多数据还是无法直接利用。
    #

    尤其是我们之前谈过很多次的 PATH 这个变量,由于没有改
    变成为 root 的环境, 因此很多 root 惯用的指令就只能使用绝对路径来执行咯。

    
    [root@study dmtsai]# exit <==这样可以离开 su 的环境!

      关于此例子中的login shell non login shell,可以参考http://blog.sina.com.cn/s/blog_59c0a56201016im6.html

                                  http://blog.csdn.net/wang_xijue/article/details/46820043

      识别非login的shell方法还是执行#echo $0命令,得到的结果如果没有'-'前缀,即为非login的。

    范例二:使用 login shell 的方式切换为 root 的身份并观察变量
    [dmtsai@study ~]$ su -
    Password: <==这里输入 root 的密码喔!
    [root@study ~]# env | grep root
    USER=root
    MAIL=/var/spool/mail/root
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    PWD=/root
    HOME=/root
    LOGNAME=root
    # 了解差异了吧?下次变换成为 root 时,记得最好使用 su - 喔!
    [root@study ~]# exit <==这样可以离开 su 的环境!
    范例三:执行一次root操作后回到本帐号
    [dmtsai@study ~]$ su - -c "head -n 3 /etc/shadow"

      2.sudo命令

      su的缺点很明显了:需要知道root的密码,这是非常不好的,于是,sudo便应运而生了!

      而且仅有规范到 /etc/sudoers 内的用户才能够执行 sudo 这个指令

    sudo [-b] [-u 新使用者帐号]
    选项与参数:
    -b :将后续的指令放到背景中让系统自行执行,而不与目前的 shell 产生影响
    -u :后面可以接欲切换的使用者,若无此项则代表切换身份为 root 。

      相关实例:

    范例一:你想要以 sshd 的身份在 /tmp 下面创建一个名为 mysshd 的文件
    [root@study ~]# sudo -u sshd touch /tmp/mysshd
    [root@study ~]# ll /tmp/mysshd
    -rw-r--r--. 1 sshd sshd 0 Jul 21 23:37 /tmp/mysshd
    # 特别留意,这个文件的权限是由 sshd 所创建的情况喔!
    范例二:你想要以 vbird1 的身份创建 ~vbird1/www 并于其中创建 index.html 文件
    [root@study ~]# sudo -u vbird1 sh -c <u>"mkdir ~vbird1/www; cd ~vbird1/www; </u>
    > <u>echo 'This is index.html file' > index.html"</u>
    [root@study ~]# ll -a ~vbird1/www
    drwxr-xr-x. 2 vbird1 vbird1 23 Jul 21 23:38 .
    drwx------. 6 vbird1 vbird1 4096 Jul 21 23:38 ..
    -rw-r--r--. 1 vbird1 vbird1 24 Jul 21 23:38 index.html
    # 要注意,创建者的身份是 vbird1 ,且我们使用 sh -c "一串指令" 来执行的!

        sudo 执行的重点是:“能否使用 sudo 必须要看 /etc/sudoers 的设置值, 而可使用sudo 者是通过输入使用者自己的密码来执行后续的指令串”喔!由于能否使用与 /etc/sudoers有关, 所以我们当然要去编辑 sudoers 文件啦!不过,因为该文件的内容是有一定的规范的,因此直接使用 vi 去编辑是不好的。 此时,我们得要通过 visudo 去修改这个文件喔!

      1.单一使用者可进行 root 所有指令

         直接修改/etc/sudoers

          注意文件的格式如下:    

    用户名  主机名=(可切换到的用户身份)  权限和命令

    ①         ②                ③                     ④

    [root@study ~]# visudo
    ....(前面省略)....
    root ALL=(ALL) ALL     #找到这一行,大约在 98 行左右
    vbird1 ALL=(ALL) ALL  #这一行是你要新增的!

      利用 wheel 群组以及免密码的功能处理 visudo

    [root@study ~]# visudo <==同样的,请使用 root 先设置
    ....(前面省略)....
    %wheel ALL=(ALL) ALL <==大约在 106 行左右,请将这行的 # 拿掉!
    # 在最左边加上 % ,代表后面接的是一个“群组”之意!改完请储存后离开
    [root@study ~]# usermod -a -G wheel pro1 <==将 pro1 加入 wheel 的支持

      当然,wheel群组名称是可以自定义的!使用id username即可看到是否成功加入啦!

      免密码处理

    [root@study ~]# visudo <==同样的,请使用 root 先设置
    ....(前面省略)....
    %wheel ALL=(ALL) NOPASSWD: ALL <==大约在 109 行左右,请将 # 拿掉!
    # 在最左边加上 % ,代表后面接的是一个“群组”之意!改完请储存后离开

      2.限制使用——只能使用部分指令!

    [root@study ~]# visudo <==注意是 root 身份
    myuser1 ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

      在设置值中加上惊叹号“ ! ”代表“不可执行”的意思。因此上面这一行会变成:可以执行“passwd 任意字符”,但是“ passwd ”与“ passwd root ”这两个指令例外! 如此一来 myuser1 就无法改变 root 的密码了!这样这位使用者可以具有 root 的能力帮助你修改其他用户的密码,而且也不能随意改变 root 的密码!很有用处的!

      并且,可以通过别名批量处理:

    [root@study ~]# visudo <==注意是 root 身份
    User_Alias ADMPW = pro1, pro2, pro3, myuser1, myuser2
    Cmnd_Alias ADMPWCOM = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
    ADMPW ALL=(root) ADMPWCOM  #注意需要大写!

     二、使用者讯息传递

      1.查询使用者——w,who,last,lastlog

    w命令用于显示已经登陆系统的用户列表
    来自: http://man.linuxde.net/w
    who命令是显示目前登录系统的用户信息。
    来自: http://man.linuxde.net/who
    last命令用于显示用户最近登录信息。
    来自: http://man.linuxde.net/last
    lastlog命令用于显示系统中所有用户最近一次登录信息。
    来自: http://man.linuxde.net/lastlog

      更多命令使用详细,参考相关手册

      2.使用者对谈——write,mesg,wall

    [root@study ~]# write 使用者帐号 [使用者所在终端接口]
    [root@study ~]# who
    vbird1 tty3 2015-07-22 01:55 <==有看到 vbird1 在线上
    root tty4 2015-07-22 01:56
    [root@study ~]# write vbird1 pts/2
    Hello, there:
    Please don't do anything wrong... <==这两行是 root 写的信息!
    # 结束时,请按下 [crtl]-d 来结束输入。此时在 vbird1 的画面中,会出现:
    Message from root@study.centos.vbird on tty4 at 01:57 ...
    Hello, there:
    Please don't do anything wrong...
    EOF

       3.邮件使用——mail

      待补充

  • 相关阅读:
    在eclipse 中添加 Tomcat
    eclipse启动报错:code13
    基础_cup给出的内存地址
    巫师3_战斗_水中水鬼
    git checkout
    git学习
    Linux软件包管理之yum在线管理
    Vagrant入门1
    mvn java项目README.md文件范例
    深入理解yum工作原理
  • 原文地址:https://www.cnblogs.com/jiangbei/p/8059525.html
Copyright © 2011-2022 走看看