Andy Niu �����ĵ�

Andy Niu

Andy Niu Help  1.0.0.0
用户管理

变量

 用户名和密码
 
 查询用户登录信息
 
 用户的增删改
 
 用户身份切换
 

详细描述

变量说明

查询用户登录信息
1、查询当前登陆的用户
    [root@localhost rc.d]# w
    17:49:10 up  1:31,  5 users,  load average: 0.37, 0.16, 0.23
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     :0       -                16:19   ?xdm?  23.23s  0.06s /usr/bin/gnome-session
    root     pts/1    :0.0             16:20    1:23m  0.01s  0.01s bash
    root     pts/2    192.168.1.100    16:22   52:21   0.13s  0.13s -bash
    root     pts/3    192.168.1.100    16:57   51:45   0.01s  0.00s vi aaa
    root     pts/4    192.168.1.100    16:57    0.00s  0.09s  0.09s -bash
    [root@localhost rc.d]# who
    root     :0           2015-12-28 16:19
    root     pts/1        2015-12-28 16:20 (:0.0)
    root     pts/2        2015-12-28 16:22 (192.168.1.100)
    root     pts/3        2015-12-28 16:57 (192.168.1.100)
    root     pts/4        2015-12-28 16:57 (192.168.1.100)
    [root@localhost rc.d]# whoami
    root
    [root@localhost rc.d]# who am i
    root     pts/4        2015-12-28 16:57 (192.168.1.100)
2、区别如下:
    w           show who is logged on and what they are doing
    who         show who is logged on
    whoami      print effective userid
    who am i    print actual userid
    Consider, when a user logs in as a root across the network, both the command whoami and who am i will show you root. 
    However, when a user abc logs in remotely and runs su – root, whoami will show root whereas who am i will show abc
3、lastlog 查询所有用户或者某一个用户,最后一次的登陆地址和登录时间,如果用户从来没有登录过,显示  **Never logged in**
    [root@localhost ~]# lastlog
    Username         Port     From             Latest
    root             pts/5    192.168.1.100    Tue Dec 29 10:03:18 -0800 2015
    bin                                        **Never logged in**
    daemon                                     **Never logged in**
4、last对于登录过的用户,显示登陆有关的信息。
    [root@localhost ~]# last
    root     pts/5        192.168.1.100    Tue Dec 29 10:03   still logged in   
    root     pts/4        192.168.1.100    Mon Dec 28 16:57   still logged in   
    root     pts/3        192.168.1.100    Mon Dec 28 16:57   still logged in   
    root     pts/2        192.168.1.100    Mon Dec 28 16:22   still logged in   
    root     pts/2        :0.0             Mon Dec 28 16:21 - 16:21  (00:00)    
    root     pts/1        :0.0             Mon Dec 28 16:20   still logged in   
    root     :0                            Mon Dec 28 16:19   still logged in   
    root     :0                            Mon Dec 28 16:19 - 16:19  (00:00)    
    reboot   system boot  2.6.18-194.el5   Mon Dec 28 16:18          (17:53)    
    zhanxin  pts/1        :0.0             Wed Jul  1 22:47 - down   (00:02)    
    zhanxin  :0                            Wed Jul  1 22:46 - down   (00:02)  
5、另外id和finger也能显示当前登陆的用户信息,如下:
    [root@localhost ~]# id
    uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
    [root@localhost ~]# finger
    Login     Name       Tty      Idle  Login Time   Office     Office Phone
    root      root      *:0             Dec 28 16:19
    root      root       pts/1   17:47  Dec 28 16:20 (:0.0)
    root      root       pts/2   17:15  Dec 28 16:22 (192.168.1.100)
    root      root       pts/3   17:15  Dec 28 16:57 (192.168.1.100)
    root      root       pts/4       9  Dec 28 16:57 (192.168.1.100)
    root      root       pts/5          Dec 29 10:03 (192.168.1.100)
用户名和密码
1、登录Linux主机的时候,我们使用的是用户名,而Linux使用UID和GID来标识用户的。在passwd可以看到UID和GID,如下:
    [root@2 ~]# more /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    passwd每行表示一个用户,有7个字段
2、passwd每行中的第二个字段是登录密码,这里都是x,真正的密码保存在/etc/shadow,如下:
    root:$6$dC4C06mrthJsxgWE$g7SlxiQvqB7oQRLSQBInr7iNVDreRKPYxlqpq9cbW7CM14bsgF4kwKFcpiu.E8n6QyaJxMX4okJId1VEGjCkl1:16266:0:99999:7:::
    bin:*:15628:0:99999:7:::
    daemon:*:15628:0:99999:7:::
    adm:*:15628:0:99999:7:::
    shadow每行表示一个用户对应的密码,有9个字段,第二个字段是密码,并且加密了。
3、Linux如果忘记密码,怎么办?
    忘记普通用户的密码,这个很简单,root登录进去,使用passwd命令修改密码。
    忘记root用户的密码,有两个办法:
    a、重新启动进入用户维护模式,Linux系统给予root权限的bash接口,以passwd修改密码
    b、以Live CD开机挂载根目录,修改shadow文件,root的密码字段清空,重启后,root登录不需要密码,然后重置密码
4、与用户对应,用户组的信息分别在文件 /etc/group 和 /etc/gshadow
用户的增删改
1、添加用户
    useradd niu
    注意:useradd是二进制程序,而adduser是useradd的软连接。
2、设置密码
    passwd niu
    输入密码,然后确认
    使用ssh远程登录,确认 ssh [email protected]
3、删除用户
    userdel niu
4、修改用户名称
    usermod -lniu2 niu
    把用户名niu修改为niu2
用户身份切换
1、考虑下面的需求,当前以普通用户登陆,先查看shadow的内容,如下:
    -bash-3.2$ cat /etc/shadow
    cat: /etc/shadow: Permission denied
2、这个文件只有root用户才有权限,怎么办?
3、第一种方法,使用sudo,以其他用户的身份执行命令,通常是使用root的身份来执行命令。如下:
    -bash-3.2$ sudo -uroot cat /etc/shadow
    [sudo] password for niu: 
    niu is not in the sudoers file.  This incident will be reported.
4、这里报错,原因是用户niu 没有借用其他用户身份的权限,需要配置权限。
    使用visudo在root下面的一行添加niu的信息,如下:
    ## Allow root to run any commands anywhere
    root    ALL=(ALL)       ALL
    niu     ALL=(ALL)       ALL
    再次执行,sudo -uroot cat /etc/shadow 
5、第二种方法,使用su,切换到其他身份,如下:
    -bash-3.2$ env|grep -E -i 'mail|home'
    MAIL=/var/spool/mail/niu
    PWD=/home/niu
    HOME=/home/niu
    -bash-3.2$ su root
    Password: 
    bash: alais: command not found
    [root@localhost niu]# env|grep -E -i 'mail|home'
    MAIL=/var/spool/mail/niu
    PWD=/home/niu
    HOME=/root
    这个时候发现,虽然用户niu的身份已经切换到了root,但是环境变量还是用户niu的环境变量,怎么办?
6、使用su - root(中划线后面有空格),如下:
    -bash-3.2$ env|grep -E -i 'mail|home'
    MAIL=/var/spool/mail/niu
    PWD=/home/niu
    HOME=/home/niu
    -bash-3.2$ su - root
    Password: 
    -bash: alais: command not found
    [root@localhost ~]# env|grep -E -i 'mail|home'
    MAIL=/var/spool/mail/root
    HOME=/root
7、特别注意一点,使用su 改变的只是有效用户,并没有改变真实用户。whoami显示有效用户,而 who am i 显示真实用户
    -bash-3.2$ who am i
    niu      pts/3        2015-12-29 11:42 (192.168.1.101)
    -bash-3.2$ whoami
    niu
    -bash-3.2$ su root
    Password: 
    bash: alais: command not found
    [root@localhost niu]# who am i
    niu      pts/3        2015-12-29 11:42 (192.168.1.101)
    [root@localhost niu]# whoami
    root
    特别注意:用户niu的提示符是-bash-3.2$,而用户root的提示符是[root@localhost niu],这里的niu是一个目录,不要搞混淆了。
8、通过上面的测试知道,使用su,切换到root,可能会导致比较大的危险,因此建议使用sudo
Copyright (c) 2015~2016, Andy Niu @All rights reserved. By Andy Niu Edit.