1.用户管理:

相关的两个配置文件: /etc/passwd   /etc/shadow

     /etc/passwd  保存用户详细信息(掌握每一列代表的含义)

     第一列    用户名

     第二列    密码控位符,以 x 表示

     第三列  uid

     第四列  gid

     第五列    用户的描述信息(姓名、办公室、手机号等信息)

     第六列    用户家目录

     第七列 用户 shell,两种 /bin/bash 用户可登录    /sbin/nologin 用户不可登录

 

    /etc/shadow    保存用户密码信息(了解每一列代表的含义)

     第一列       用户名

     第二列       加密后的密码,三种加密格式:

      $1  开头 MD5加密

      $5  开头 SHA-256加密

      $6  开头 SHA-512加密

      !!   表示用户还未被设置密码

      *   表示用户被锁定

     第三列       密码更改时距197011日有多少天

     第四列       表示要过多久才能修改密码,0表示随时可以修改

     第五列       密码失效的时间默认 99999

     第六列       密码到期前提醒的时间

     第七列       密码到期后的锁定时间,默认为空

     第八列       账号的生命周期,默认为空

     第九列       保留字段

 

     常用命令: useradd usermod  userdel   passwd

     useradd lucy           //添加 lucy 用户

     useradd –u 666 lucy    //添加 lucy 用户,并手动指定uid

     useradd –g 666 lucy    //添加 lucy 用户,并手动指定 gid,前提是该 gid 已存在

     useradd –G 667,668 lucy     //手动指定附属组,即将 lucy加入多个组中

     useradd –d /home/lily lucy   //手动指定用户家目录

     useradd –M lucy        //添加用户 lucy,不创建其家目录,此时在 /etc/passwd 中第六列仍有内容,但 /home 下不存在 lucy/目录

     如果此时 su – lucy ,可以成功切换,但会警告无法切换到用户家目录:

     -bash-4.1$ 为其 shell 形式,而非 [lucy@localhost ~]$

    如何解决这个问题:

     [root@localhost ~]# mkdir /home/lucy

     [root@localhost ~]# cp /etc/skel/.b*

     [root@localhost~]# chown –R songwei:songwei /home/songwei

    注: /etc/skel 目录下为用户登录初始化所需要的文件,如 .bashrc  .bash_profile  .bash_logout

    useradd –s /sbin/nologinlucy       //手动指定用户 shell

    usermod 修改用户配置信息,参数与添加用户时的绝大多数相同,注意两个有区别的参数:

    usermod –L lucy  //锁定 lucy 用户,使其不能登录

    usermod –U lucy  //解锁 lucy 用户

    锁定/解锁用户还有一种方式:

    pass -l lucy    //锁定 lucy 用户,使其不能登录

    passwd -u lucy    //解锁 lucy 用户

    chfn lucy      //修改用户的描述信息

    passwd lucy    //修改 lucy 用户的密码,需要重复输入以确认

    注:useradd 后的用户在设置密码前不能登录,即空密码用户不能登录,但可以在其他用户登录以后使用 su 切换来登录。

    如果在使用 passwd 命令设置密码时不想重复输入两次,有如下几种方法:

    passwd --stdin lucy                                               //或者

    echo "shiyanmima" | passwd –stdin lucy               //或者

    echo –e "shiyanmima\nshiyanmima\n" | passwd lucy  // \n Linux的换行符, echo –e 参数可以解

                                 //特殊字符

    passwd -d lucy       //使用 -d 参数,删除 lucy 用户的密码

    userdel 删除用户,想要在删除用户的同时删除用户家目录及邮箱地址,需要使用 –r 参数:

    userdel lucy //删除用户,不会删除用户家目录和邮箱地址(位于 /var/spool/mail下)

    userdel –r lucy  //删除用户及其家目录和邮箱地址

      

2.用户组管理:

常用的两个配置文件: /etc/group /etc/gshadow

     /etc/group   用户组信息

     第一列       用户组名称

     第二列       组密码控位符

     第三列       gid

     第四列       附属组

     /etc/gshadow  用户组密码信息,一般不去操作,作为了解

 

     常用命令: groupadd groupdel  groupmod

     groupadd songwei    //添加 songwei 

     groupadd –g 1000 songwei  //添加 songwei 组,并手动指定gid

     groupdel songwei  //删除 songwei 组,如果其中有用户,必须先清空,否则删除失败

      

3. 切换登录用户:

    3.1 su 命令:

      用于切换当前登录的用户,直接使用不会切换到用户家目录,PATH变量也不会改变:

      [root@localhost ~]# susongwei

      [songwei@localhost root]#

      如果想要彻底切换,添加  参数:

      [root@localhost ~]# su – songwei

      [songwei@localhost ~]#

      使用–c 参数,可以以特定用户的身份执行命令:(常用于脚本中)

      //  songwei 用户的身份执行 touch 命令

      [root@localhost ~]# su –c “touch/tmp/songwei.log” songwei

      [root@localhost ~]# ll /tmp/songwei.log

      -rw-r--r--. 1 songwei songwei 0 Mar 2223:00 /tmp/songwei.log

    3.2 sudo 命令:

    sudo 的作用是让一个用户拥有其他用户的权限(一般用于让普通用户拥有 root 权限)去执行一些命令,如何授予这种权限:

      [root@localhost ~]# visudo

      ## Allow root to run anycommandsanywhere

     root ALL=(ALL)       ALL

     songwei  ALL=(root)   NOPASSWD: /bin/ls   //新添加的一行

     解释一下新添加的这一行的作用,第一列为指定的用户,如果有多个用户,以逗号隔开,ALL 代表以所有IP登录的用户均可享受权限,=root)代表执行命令时拥有哪个用户的权限, /bin/ls 为执行的具体命令,如果有多条,以逗号隔开(这里的命令必须写绝对路径)。其中,使用 NOPASSWD可以让用户在执行 sudo ls 时不用输入自己的密码。

    不仅可以为一个或多个用户分配权限,也可以同时为一组用户分配权限,组名前加 %

     %aming  ALL=root /bin/ls

     这样就可以为用户组为 aming 的用户授予权限。

实例:

     公司为安全起见,不允许远程登录 root 用户,即便输入的 root 密码是正确的,现在需要授予 songwei aming 两个用户可以在登录后切换到 root 用户使用 root 权限,该如何做呢?

    [root@localhost ~]# visudo

    songwei, aming  ALL=(root)  NOPASSWD:   /bin/su

    [root@localhost ~]# su – songwei

    [songwei@localhost ~]# sudo su –

    [root@localhost ~]#

    如此即可完美解决该问题。那么,如何禁止 root 用户远程登录

    [root@localhost ~]# vim /etc/ssh/sshd_config

    PermitRootLogin no   // yes 修改为 no

    保存退出后,重启 sshd 服务即可:

    service sshd restart

补充:

    etc/ssh/ 目录下有两个配置文件,其中 ssh_config 为客户端的配置文件, sshd_config 为服务端的配置文件。

    有时候在使用 putty 链接 Linux,输入完用户名以后,经过三四秒钟的延迟才提示输入 password,可以通过 vim/etc/ssh/sshd_config 解决,将 UseDNS 设置为 no 

    UseDNS no