linux系统用户和组 小结

linux系统的用户和组

用户和组是操作系统的一种身份认证资源。
1.用户

  linux系统分为root用户和非root用户(普通用户);
  普通用户可以以自己用户名命名的厚home目录,地址是/home/username,root用户的home目录是 /root;
  每个用户都有用户名——uid(user id),所属组及其默认的shell,可能还有密码,家目录,附属组,注释等; 每个组也有名称,组的编号-gid(group id)。一般gid和uid是不相同的。但大部分会让它们保持一致,有点类似类的概念。
  组分为主组和辅助组(primary and secondary group),用户一定属于某个组,也可以加入多个辅助组。

用户分为三类:

1.超级管理员

    超级管理员是最高权限,它的uid=0;默认的超级管理员是root,因为uid默认是唯一的,但是超级管理员的名称不一定非要是root,
    大部分不会去修改名称,因为在后面非常多的程序中,都默认超级管理员的名称为root,一旦改动,牵一发而动全身。

2.系统用户

     有时需要一类具有某些特权但又不需要登陆操作系统的用户,这类用户称为系统用户,它们的uid范围从201到999,Centos6的是1到499,出于安全考虑,它们一般不用来登陆,所以他们的shell一般是/sbin/nologin,大多数时候没有家目录。

3.普通用户

     普通用户是权限受限的用户,默认只能执行`/bin,/usr/bin,/usr/local/bin`和自家的目录下的命令,

     超级管理员和其他类型的用户,它们的命令提示符是不一样的,uid=0的超级管理员命令提示符是“#”,其它的为“$” 。
  [root@server2`]#su renshuaixinshan
  [renshuaixinshan@server2 root]$echo $PATH
   默认root用户的家目录是/root,其它用户的家目录一般在/home
   例如renshuaixinshan这个用户的家目录为/home/renshuaixinshan,家目录是可以自定义位置和名称的 用户和组管理的相关文件。

2.1 用户文件/etc/passwd

   /etc/passwd 文件里记录的是操作系统中用户的信息,这里面记录了几行就表示有几个系统用户。

   用户的默认shell表示的是用户登陆(允许登陆)时的环境或执行的命令,例如shell为/bin/bash时,表示登陆就执行/bin/bash命令进入bash环境,shell为/sbin/nologin表示该用户不能登陆,之所以不能登陆不是因为指定了这个特殊的程序,而是由/sbin/nologin这个程序的功能实现的,例如修改linux的源代码,将/sbin/nologin这个程序变成可登陆,那么shell为/sbin/nologin时也可以登陆。

2.2 密码文件/ent/shadow

   /etc/shadow文件中存放的是用户的密码信息,该文件具有特殊性,除超级管理员,任何人都不能直接读取和修改该文件,而用户自身之所以能修改密码,是因为passwd程序的suid属性,使得修改密码是临时提升为root权限。

2.3组文件

  /etc/group/和/etc/gshado 知道这两个文件即可,内容无需关注。
  /etc/group包含了组信息,每行一组。

2.4 骨架目录/etc/skel

  骨架目录的文件是每次新建用户是,都会复制道新用户家目录里的文件,默  认只有是三个环境配置文件,可以修改内容,
  或者添加几个文件在骨架目录中,以后新建用户就会自动获取到这些环境和文件。

2.5 /etc/default/useradd

  创建用户时的配置。useradd-D修改的就是此文件

3.用户和组管理命令

3.1useradd和adduser

   adduser是useradd的一个软链接。useradd创建用户时,默认会自动创建一个和用户名相同的用户组,这个是/etc/login.defs中的USERGROUP_ENAB变量控制的。
   useradd创建普通用户时,不加任何和家目录相关的选项,是否创建家目录是由/etc/login.defs中的CREATE-HOME变量控制的。
     (软链接:类似于windows的快捷方式,给文件创建一个快速访问的路径,它依赖于原文件,与普通文件没什么不同,可用于目录,跨文件系统)

3.2groupadd

         创建一个新组。
         groupadd [optinos] group
         选项说明;
         -f:如果创建的组已经存在,默认错误退出,使用该选项则强制创建以正确状态退出,只不过gid可能不受控制,
         -g:指定gid,默认gid必须唯一,除非使用了-o选项。
         -k:修改/etc/login.defs中关于组相关的配置项,【配置方式为KEY=VALUE,例如-K GID_MIN=100 -K GID_MAX=499
         -o:允许创建一个非唯一的gid组
         -r:创建系统组


        3.3修改密码passwd
          修改密码的工具,默认passwd命令不允许为用户创建空密码。
          passwd修改密码前会通过pam认证用户,pam配置文件中于此相关的设置项如下:
   passwd password requisite pam_cracklib.so retry=3
          passwd password required pam_unix.so use_authtok
         passwd options [username]
 

命令的用法如下:

 选项说明:
-l:锁定指定用户的密码,在/etc/shadow的密码列加上前缀"!"或"!!"。这种锁定     不是完全锁定,使用ssh公钥还是能登录。要完全锁定,使用chage -E 0来设置帐户过期。
-u:解锁-l锁定的密码,解锁的方式是将/etc/shadow的密码列的前缀"!"或"!!"移除掉。但不能移除只有"!"或"!!"的项。
--stdin:从标准输入中读取密码
-d:删除用户密码,将/etc/shadow的密码列设置为空
-f:指定强制操作
-e:强制密码过期,下次登录将强制要求修改密码
-n:密码最小使用天数
-x:最大密码使用天数

3.4chage

 chage命令主要修改或查看密码时间相关的内容,具体看man文档,可能用到的两个选项如下:
       -l:列出指定用户密码相关信息
       -E:指定账户过期时间,是强制锁定的,如果指定为0;则立即过期,即锁定该用户。
  [root@server2 ~]#  chage -l renshuaixinshan
     Last password change                                    : Jun 06, 2017
     Password expires                                        : never
     Password inactive                                       : never
     Account expires                                         : never
     Minimum number of days between password change          : 0
     Maximum number of days between password change          : 99999
     Number of days of warning before password expires       : 7
 [root@server2 ~]# chage -E 0 zhangsan
    [root@server2 ~]# chage -l zhangsan 
    Last password change                                    : Jun 06, 2017
    Password expires                                        : never
    Password inactive                                       : never
    Account expires                                         : Jan 01, 1970
    Minimum number of days between password change          : 0
   Maximum number of days between password change          :           99999
     Number of days of warning before password expires       : 7

3.5 删除用户和组

  userdel命令用于删除用户

  一般不直接删除家目录,即不用-r,可以vim/etc/passwd,将不需要的用户直接注释掉。

  groupdel命令删除组,如果删除的组是某用户的主组,需要先删除主组中的用户

3.6 usermod

     修改账户属性信息,必须确保在执行该命令的时候,待修改的用户没有在执行进程。
 usermod [options] login
   选项说明:
     -l:修改用户名,仅仅只是改用户名,其他的一切都不会改动(uid、家目录等)
    -u:新的uid,新的uid必须唯一,除非同时使用了-o选项
     -g:修改用户主组,可以是以gid或组名。对于那些以旧组为所属组的文件(除      原家目录),需要重新手动修改其所属组
     -m:移动家目录内容到新的位置,该选项只在和-d选项一起使用时才生效
     -d:修改用户的家目录位置,若不存在则自动创建。默认旧的家目录不会删除
       如果同时指定了-m选项,则旧的家目录中的内容会移到新家目录
    如果当前用户家目录不存在或没有家目录,则也不会创建新的家目录
     -o:允许用户使用非唯一的UID
    -s:修改用的shell,留空则选择默认shell
    -c:修改用户注释信息
 -a:将用户以追加的方式加入到辅助组中,只能和-G选项一起使用
    -G:将用户加入指定的辅助组中,若此处未列出某组,而此前该用户又是该组      成员,则会删除该组中此成员
     -L:锁定用户的密码,将在/etc/shadow的密码列加上前缀"!""!!"
    -U:解锁用户的密码,解锁的方式是移除shadow文件密码列的前缀"!""!!"
     -e:帐户过期时间,时间格式为"YYYY-MM-DD",如果给一个空的参数,则立即禁用该帐户
     -f:密码过期后多少天,帐户才过期被禁用,0表示密码过期帐户立即禁用,-1表示禁用该功能

3.7手动创建用户

需要管理员权限
在/etc/group中添加用户和所属组的相关信息,如果用户还有辅助组则在对应组中加入该用户作为成员。

在/etc/passwd和/etc/shadow中添加用户相关信息,此时指定的家目录还不存在,密码不存在,所以/etc/shadow的密码位用“!!”代替。
创建家目录,并复制骨架目录中的文件到家目录中。
  shell> mkdir /home/user_name
    shell> cp -r /etc/skel /home/user_name。
修改家目录及子目录的所有者和属组
shell> chown -R user_name:user_name /home/user_name
  修改家目录及子目录的权限。例如设置组和其他用户无任何权限但所有者有。
shell> chmod -R 700 /home/user_name
          
  现在为止,用户已经创建完成,但没有密码,只能su,不能登陆,
  生成密码:
  使用openssl passwd生成密码,是MD5算法的,很容易破解,

直接使用passwd命令创建密码

shell> mkdir /tmp/12;cp /etc/group /etc/passwd /etc/shadow /tmp/12/ # 备份这些文件
shell> echo “userX❌666” >> /etc/group
shell> echo “userX❌666:666::/home/userX:/bin/bash” >> /etc/passwd
shell> echo ‘userX:!!:17121:0:99999::::’ >> /etc/shadow
shell> cp -r /etc/skel /home/userX
shell> chown -R userX:userX /home/userX
shell> chmod -R go= /home/userX
shell> passwd --stdin userX <<< ‘123456’

3.8 finger查看用户信息

 从Centos6版本开始就没有这个命令了,要先安装。
   yum -y install finger

3.9 id

id username
-u:得到uid
-n:得到用户名而不是uid
-z:无任何空白字符输出模式,不能在默认的格式下使用。
 shell> id root
 uid=0(root) gid=0(root) groups=0(root)
 shell> id renshuaixinshan
 uid=500(renshuaixinshan) gid=500(renshuaixinshan) groups=500(renshuaixinshan)

 shell> id -u renshuaixinshan
 500

 shell> id -u -z renshuaixinshan
 2002[root@server2 ~]#
 

4.1 users

 查看当前正在登陆的用户名
 last 查看最近登陆的用户列表,其实last 查看的是/var/log/wtmp文件。

lastb

     查看谁尝试登陆过但没有登陆成功的。即能够审核和查看谁曾经不断的登陆,那就是可能是黑客。

4.2 su 、 sudo

切换用户和指定用户运行命令
 sudo可以让一个用户以某个身份执行某些命令,它隐含的执行方式     是切换       到指定用户在执行命令,因为涉及到用户切换,

本文是我的学习linux的学习小结,大部分知识借鉴引用自博客园骏马金龙。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值