开发者社区> 时间之弧> 正文

LINUX用户和用户组(二)

简介: 系统环境:CentOS Linux release 7.3.1611 x86_64 GNU/Linux 查看所有用户信息 $ cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin .
+关注继续查看

系统环境:CentOS Linux release 7.3.1611 x86_64 GNU/Linux

查看所有用户信息

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
rethink:x:1001:1001::/home/rethink:/bin/bash
jenkins:x:1002:1002::/home/jenkins:/bin/bash

$ cat /etc/passwd | grep jenkins
jenkins:x:1002:1002::/home/jenkins:/bin/bash
#字段格式说明:
`用户名:密码:用户UID:用户组GID:备注:用户家目录:用户默认shell`

/etc/passwd 所有用户都有读权限,但只有管理员有写权限,每一行都表示一个用户。第三个字段表示用户UID,0表示管理员root,1~500表示系统用户,501-65535表示普通用户,不同的Linux发行版,可能会有所差别。最后一个字段表示用户默认shell的路径,系统用户默认shell一般为/sbin/nologin,表示该用户不可登录。

第二个字段是用户的密码,x是占位符,用户真正的密码是密文保存在/etc/shadow文件中的,这个文件只有管理员可读。

# cat /etc/shadow
root:$1$7TJOo0N3$jWOx8FmXcEMN88gdGISg0/::0:99999:7:::
rethink:$6$/XN/F6Eu$yAwE5WN811EnmyLEa.k02MbYCDVw/vWlqn57QItruVRWMpVQGL1LLcg3xbOKhLGpiQ8f/6S7DKt.GJntPu7Kn/:17620:0:99999:7:::
jenkins:$6$oIK6zhjM$GVOCRHB4X1XU.iUhEHi5LHmuv06HFWub7dz7IRT7hHTanKffyBFXyGGZ5mIXt8gD40kB18KdHTZEH4xbOXjFP1:17645:0:99999:7:::

/etc/shadow文件中各个字段对应的含义,可以通过man 5 shadow命令来查看。

img_78ce559d576a0314d7bbbc0cee404e09.png

用户管理命令

使用--help参数,可查看命令更多详细介绍;

  • 添加新用户:useradd
# useradd test
# cat /etc/passwd | grep test
test:x:1004:1004::/home/test:/bin/bash

以上可以看到,useradd命令确实新增了一个新用户:test,并且系统会自动设置用户的一些属性,如UID,GID,HOME,SHELL HOME等。我们也可以创建新用户时指定这些信息:

useradd -u UID:指定新用户的UID,这个UID必须大于500,并且没有被其他用户占用;
useradd -g GID/GROUP_NAME:指定用户所属组,可以是GID或GROUPNAME,用户组必须是真实存在的;
useradd -G GROUPS:指定附属用户组;
useradd -c COMMENT:指定用户的备注信息
useradd -d PATH:指定用户的家目录
useradd -s SHELL:指定用户的默认shell
useradd -s /sbin/nologin:该用户不可登录,和系统用户最后一个字段的值相同
  • 设置用户的认证信息: passwd,包括用户密码、密码过期时间等

普通用户只能修改自己的密码,直接运行passwd即可 。新建用户后,若要为新用户创建密码,可使用 passwd USERNAME

# passwd test
Changing password for user test.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
  • 删除用户: userdel
# userdel USERNAME
`删除用户的同时删除用户HOME目录`
# userdel -r USERNAME 
  • 修改用户属性信息: usermod
Usage: usermod [options] LOGIN

Options:
  -c, --comment COMMENT         new value of the GECOS field
  -d, --home HOME_DIR           new home directory for the user account
  -e, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
  -f, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -g, --gid GROUP               force use GROUP as new primary group
  -G, --groups GROUPS           new list of supplementary GROUPS
  -a, --append                  append the user to the supplemental GROUPS
                                mentioned by the -G option without removing
                                him/her from other groups
  -h, --help                    display this help message and exit
  -l, --login NEW_LOGIN         new value of the login name
  -L, --lock                    lock the user account
  -m, --move-home               move contents of the home directory to the
                                new location (use only with -d)
  -o, --non-unique              allow using duplicate (non-unique) UID
  -p, --password PASSWORD       use encrypted password for the new password
  -R, --root CHROOT_DIR         directory to chroot into
  -s, --shell SHELL             new login shell for the user account
  -u, --uid UID                 new UID for the user account
  -U, --unlock                  unlock the user account
  -Z, --selinux-user SEUSER     new SELinux user mapping for the user account
  • 检索用户属性信息: id
# id jenkins
uid=1002(jenkins) gid=1002(jenkins) groups=1002(jenkins)
`显示用户UID`
#id -u USERNAME
`显示用户默认组ID`
#id -g USERNAME
`显示用户附加组ID`
#id -G USERNAME
`显示用户/默认组/附加值的名称`
#id -n -g/-G/-u USERNAME
  • 检索用户属性信息 : finger,显示格式比id命令更加友好
`安装finger命令`
# yum install finger -y

# finger
Login     Name       Tty      Idle  Login Time   Office   Office Phone   Host
root      root       pts/0          Jun 28 16:28                         (101.81.92.18)

# finger jenkins
Login: jenkins                  Name: 
Directory: /home/jenkins                Shell: /bin/bash
Last login Wed Jun 27 19:05 (CST) on pts/0
No mail.
No Plan.

# finger -s jenkins
Login     Name       Tty      Idle  Login Time   Office     Office Phone   Host
jenkins              pts/0       *  Jun 27 19:05   

查看所有用户组信息

$ cat /etc/group
root:x:0:
bin:x:1:
...
rethink:x:1001:
jenkins:x:1002:
docker:x:1003:

#字段说明
`组名:组密码:GID:以group_name为附加组的用户列表`

# cat /etc/group | grep test:x
test:x:1005:test4,test5

Linux下,每个用户都有一个用户组,系统可以对用户组中的所有用户进行集中的权限管理。当创建用户时,如果没有为其指明所属组,则就为其定义一个私有的用户组,其名称与用户名相同。私有组可以变成普通用户组,当把其他用户加入到该组中时,其就变成了普通用户组。

用户组管理命令

  • 添加新用户组:groupadd
# groupadd bbox
# cat /etc/group|grep bbox
bbox:x:1011:
  • 删除用户组: groupdel
# groupdel bbox
# cat /etc/group|grep bbox
# 
  • 重命名用户组:groupmod
`命令格式:groupmod -n new_name old_name`
# groupmod -n test_1 test
# cat /etc/group|grep test_1
test_1:x:1005:test4,test5

补充命令

  1. who命令、whoami命令、who am i命令和w命令
# who
root     tty1         2018-06-28 18:18
root     pts/0        2018-07-03 17:43 

# who am i
root     pts/0        2018-07-03 17:43 

# su - docker
Last login: Mon Jul  2 18:51:11 CST 2018 on pts/0

$ whoami
docker

$ who am i
root     pts/0        2018-07-03 17:43 

$ who
root     tty1         2018-06-28 18:18
root     pts/0        2018-07-03 17:43 

$ w
 18:32:24 up 5 days, 15 min,  2 users,  load average: 0.00, 0.02, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      Thu18    4days  0.10s  0.10s -bash
root     pts/0    101.81.92.18     17:43    0.00s  0.00s  0.00s w

总结如下 :

  • whoami 显示的是当前操作用户的用户名
  • who am i显示的是登录时的用户名 ,此命令相当于who -m
  • who 显示当前真正登录系统中的用户(不会显示那些用su命令切换用户的登录者)
  • w 不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,并且统计数据相对who命令来说更加详细 ;
  1. Linux切换用户命令:su
    su是单词switch user的缩写。通过su命令,可以从普通用户切换到root用户,也可以从root用户切换到普通用户。从普通用户切换到root用户需要密码(该密码是普通用户的密码,但从root用户切换到普通用户不需要密码。
    susu -的区别

su - root is the same as su - just like login as root,then the shell is login shell,which mean it will expericene a login process,usually .bash_profile and .bashrc will be sourced. su root is the same as su like you open an interactive shell in root name,then only .bashrc will be sourced.
su命令只是切换到了root身份,但shell工作环境仍然是普通用户的环境;而su - 命令会将用户身份和shell环境一起切换到root,只有切换了shell环境才不会出现PATH环境变量的错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。所以要从当前用户切换到其它用户时,应该使用su -命令。如:

$ whoami
docker

$ su root
Password: 

# echo $PWD
/home/docker

# su - root
Last login: Tue Jul  3 18:54:23 CST 2018 on pts/1
[root@JDu4e00u53f7 ~]# echo $PWD
/root
`用户的HOME目录已经改变了`

【To be continued...】

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
18473 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
18967 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
11577 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
16739 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
23838 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
32410 0
+关注
时间之弧
软件测试工程师
30
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载