天天看点

学习笔记(六)——用户,用户组,切换登录用户

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加密

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

      *   表示用户被锁定

     第三列       密码更改时距1970年1月1日有多少天

     第四列       表示要过多久才能修改密码,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

补充:

继续阅读