美文网首页
Linux用户和用户组

Linux用户和用户组

作者: weigs | 来源:发表于2019-04-18 21:08 被阅读0次

    用户管理

    用户管理主要包含着用户的增加、修改和删除,同时能够查看用户的相关信息

    查看用户所属的组

    我们可以使用groups命令来查看当前用户所属的组,下面这段代码,就是查看用户 tomcat所属的组,可以看到该用户属于多个用户组,中间用空格分开。

    tomcat@hw-hadoop1-> groups tomcat
    tomcat : tomcat szcst dockerroot docker
    tomcat@hw-hadoop1->
    

    添加账号

    添加一个账号需要我们拥有root权限,普通用户是没有权限添加新的用户。我们使用useradd命令来新增一个用户,语法如下:

    useradd 选项 用户名
    

    上面语法中包含了用户名和选项,用户名我们都理解什么意思,但是这个选项具体是什么呢!我们在系统中输入useradd命令,查看下这个命令的详细参数帮助。

    • -d:指定用户的主目录 ,如果目录不存在的话,使用-m选项,创建主目录
    • -g:指定用户所属的用户组,后面可以跟用户组名或者用户组的GID
    • -c:为用户添加一段注释性的描述
    • -G:指用户所属的附加组
    • -s:指定用户的登录 shell
    • -u:新增账号的用户ID
    • -o:允许新增的用户和已经存在的用户拥有重复的用户ID
    • -U:新增一个和用户名相同的用户组
      实例
    useradd -d /home/weigs -m -g root  -s /bin/bash weigs
    

    修改账号

    有些时候我们需要对已经存在的用户进行相关属性的修改,这时候我们可以使用usermod命令。命令语法余下:

    usermod 选项 用户名
    

    我们发现其实语法和新增命令的差不多,查看usermod的帮助发现参数和useradd基本相同。
    实例

    usermod -s /bin/ksh -d /home/wei –g wei weigs
    

    这个实例是将用户weigs的登录Shell改为ksh,用户组改为wei

    删除账号

    如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。可以使用一下命令删除

    userdel 选项 用户名
    

    常用的参数是-r,表示在删除用的同时删除用户的主目录。

     userdel -r weigs
    

    用户密码管理

    用户账号刚创建的时候是没有密码的,会被系统锁定,无法登录,所以创建完用户以后需要先指定密码方可登录。
    不论是管理员账号为其他账号指定密码还是用户为自己修改密码都是使用 passwd命令,语法格式如下:

    passwd 选项 用户名
    

    在系统中输入 passwd --help,发现命令的常用参数包括如下几个:

    • -d:删除用户的密码(仅root用户使用)
    • -l:锁定用户的密码,-u参数可以解锁密码(root用户使用)
    • -f:强迫用户下次登录时修改口令
    • -S:显示指定账号的密码状态(root用户使用)
      一般我们在新建一个用户的时候,要在root账号下面为其指定账号的密码。

    用户组管理

    每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

    新增用户组

    新增用户组我们可以使用groupadd命令添加。当然,我们也可以在新增用户的使用加上参数-U,这样就会产生一个和用户名同名的用户组。

    groupadd 选项 用户组
    

    常用的groupadd参数有两个,如下:

    • -gGID指定新用户组的ID
    • -o: 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同
      实例1
    groupadd weigs
    

    上面例子中,没有指定新用户组的组ID,所以新的组ID会在当前已有的最大组ID的基础上加1
    实例2

    groupadd -g 101 group2
    

    新增一个组名为group2的用户组,同时指定组的ID101

    修改用户组

    groupmod 选项 用户组
    

    常用的参数和新增差不太多,如下:

    • -g:为用户组指定新的用户组GID
    • -o-o-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同
    • -n:新用户组名,将用户组的名字更改为新的名字
    groupmod –g 10000 -n group3 group2
    

    将用户组group2的名字改为group3,标识号GID改为10000
    如果一个用户属于多个用户组,那么用户可以在用户组之间进行切换,以便有其他用户组的权限。可以使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组,例如:

    newgrp root
    

    系统文件

    上面对用户和用户组的操作,其实就是对系统中的某些文件的操作,linux会把与用户和用户组相关的信息放到文件中,包括/etc/passwd/etc/shadow/etc/group等。

    etc/passwd文件

    每个用户都会在这个文件中有记录,这个文件中记录了用户的一些基本属性,并且这个文件对于所有的用户都是可读的。
    下面是这个文件的大致内容:

    tomcat@hw-hadoop1-> cat /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
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
    vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
    rtkit:x:499:496:RealtimeKit:/proc:/sbin/nologin
    avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
    abrt:x:173:173::/etc/abrt:/sbin/nologin
    saslauth:x:498:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    ricci:x:140:140:ricci daemon user:/var/lib/ricci:/sbin/nologin
    haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
    gdm:x:42:42::/var/lib/gdm:/sbin/nologin
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    apache:x:48:48:Apache:/var/www:/sbin/nologin
    mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
    pulse:x:497:495:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    tcpdump:x:72:72::/:/sbin/nologin
    rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
    hadoop:x:496:492:hadoop User:/home/hadoop:/bin/bash
    

    文件中每行记录对应着一个用户,每行记录又被冒号分隔,格式和大致的含义如下所示:

    用户名:密码:用户标识号:组标识号:注释性描述:主目录:登录Shell
    

    密码一般都会隐藏加密,所以在该文件中看到的都是x,如果想看到详细的密码,需要到etc/shadow文件下面查找。

    etc/shadow文件

    该文件只能由root账号打开,其他账号没有权限打开。文件的格式和passwd的相似,由多个字段组成,每个字段之间都是用冒号隔开。

    登录名:加密密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
    

    etc/group文件

    该文件下面的内容比较简单,存储了用户组的所有信息,文件的格式和前两个比较类似,但是字段相对比较少。

    组名:口令:组标识号:组内用户列表
    

    口令是存放用户组的密码,一般来说linux的用户组都不设置密码。
    组内用户列表是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

    相关文章

      网友评论

          本文标题:Linux用户和用户组

          本文链接:https://www.haomeiwen.com/subject/wmowwqtx.html