用户和用户组管理
用户相关文件
1、/etc/passwd 用户信息文件
root:x:0:0:root:/root:/bin/bash
第一列:用户名
第二列:密码位
第三列:用户ID
超级用户UID。用户UID为0,代表这个帐号是管理员帐号。Linux把普通用户升级成为管理员只需要把用户的UID修改成为0就可了,这点和windows是不同的。建议建立多个管理员帐号。
1-499 系统用户(伪用户)UID是1-499范围内的用户是不能登录系统的,而是用来运行系统或服务的。其中1-99是系统保留的帐号,系统自动创建。100-499是预留给用户创建系统帐号的。
500-65535 普通用户UID。建立的普通用户UID从500开始,最大到65535。这些用户足够用了,但是如果不够也不用害怕,2.6.x内核以后的Linux系统用户UID已经可以支持232这么多了。
第四列: 组ID GID添加用户时,如果不指定用户所属的初始组,那么会建立和用户相同的组
第五列: 用户说明
第六列: 用户家目录
第七列: 登录shell /bin/bash
2、/etc/shadow 影子文件
root:$6$QO0RNjGP$S2mJn9MlDI85lGmHykavrRN6uWjT4qZf/vzW.IuyE7VB5G41PhrB8iT7NkzdQrcOJshqkYr9FUlgBGZJZXcKH0:16566:0:99999:7:::
第一列: 用户名
第二列: 加密密码(可以在密码位前加“!”或者“*”改变加密值让密码暂时失效
使用户无法登录,达到暂时禁止用户登录的效果。注伪用户的密码都
是“!!”或“*”,代表没有密码是不能登录的)
第三列: 密码最近更改时间,1970年1月1日是作为标准时间
时间戳转日期
[root@localhost ~]# date -d "1970-01-01 15775 days"
2013年 03月 11日星期一 00:00:00 CST
日期转时间戳
[root@localhost ~]# echo $(($(date--date="2013/03/11" +%s)/86400+1))
15775
第四列: 两次密码修改时间间隔(和第3字段相比)
第五列: 密码有效期(和第3字段相比)
第六列: 密码修改到期前的警告天数(和第5字段相比)
第七列: 密码失效时间(这里同样要写时间戳,也就是1970年1月1日进行时间换算。如果时间超过了失效时间,就算密码没有失效也不能使用)
第九列: 保留
3、/etc/gshadow 组信息文件
root:::root
第一列: 组名
第二列: 组密码位
第三列: GID
第四列: 此组中支持的其他用户,附加组是此组的用户
初始组: 每个用户初始组只能有一个,一般都是和用户名相同的组作为初始组
附加组: 每个用户可以属于多个附加组。要把用户加入组,都是加附加组
4、组密码文件
如果给用户组设定了组管理员,并给该用户组设定了组密码,组密码就保存在这个文件当中。组管理员就可以利用这个密码管理这个用户了。
5、用户的家目录
[root@localhost ~]# cd /home/
6、用户邮箱目录
这个邮箱在/var/spool/mail/目录当中,例如:user用户的邮箱就是/var/spool/mail/user文件
7、用户模板目录
/etc/skel/
用户管理命令
添加用户
[root@localhost ~]# useradd 用户名(user)
手工删除用户
手工删除用户实验:手工删除,如果可以正常建立用户,证明用户删除干净。
[root@localhost ~]# vi /etc/passwd #找到user列删除整列
[root@localhost ~]# vi /etc/shadow #找到user列删除整列
[root@localhost ~]# vi /etc/group #找到user列删除整列
[root@localhost ~]# vi /etc/gshadow #找到user列删除整列
[root@localhost ~]#cd /home / #在home目录下删除user目录
[root@localhost ~]# cd /var/spool/mail/ #在mail目录下删除user目录
手工指定选项添加用户
[root@localhost ~]# groupadd wulaoer
#先手工添加wulaoer用户组,因为一会要把wulaoer用户的初始组指定过来,如果不事先建立,会报错用户不存在。
[root@localhost ~]# useradd -u 550 -g wulaoer -G root -d /home/wulaoer-c "test user" -s /bin/bash wulaoer
#建立用户wulaoer的同时指定了UID(550),初始组(wulaoer),附加组(root),家目录(/home/wulaoer),用户说明(test user)和用户登录shell(/bin/bash)
[root@localhost ~]# grep "wulaoer" /etc/passwd /etc/shadow/etc/group
#同时查看三个文件
/etc/passwd:wulaoer:x:550:500:test user:/home/wulaoer:/bin/bash
#用户的UID、初始组、用户说明、家目录、登录shell都和命令手工指定的一样
/etc/shadow:wulaoer:!!:16554:0:99999:7:::
#wulaoer用户还没有设定密码
/etc/group:root:x:0:wulaoer
#wulaoer用户加入了root组,root组是wulaoer用户发附加组
/etc/group:wulaoer:x:500:
#GID500的组是wulaoer组
[root@localhost ~]# ll -d /home/wulaoer/
drwx------. 3 wulaoer wulaoer 4096 4月 29 18:52 /home/wulaoer/
#家目录也建立了,不需要手工添加家目录
useradd命令
useradd 选项 用户名
选项:
-u 550 指定UID
-g 组名 指定初始组 不要手工指定
-G 组名 指定附加组,把用户加入组,使用附加组
-c 说明 添加说明
-d 目录 手工指定家目录,目录不需要事先建立
-s shell /bin/bash
useradd –G user1 aa 添加用户aa,指定附加组为user1
4)useradd默认值
useradd 添加用户时参考的默认值文件主要有两个,分别是/etc/default/useradd和
/etc/login.defs
/etc/default/useradd
[root@localhost ~]# vi /etc/default/useradd
1 #useradd defaults file
2GROUP=100
#这个选项是建立用户的默认组,也就是说添加每个用户时,用户的初始组就是GID为100的这个用户组。目前我们采用的机制私有用户组机制
3HOME=/home
#用户家目录默认位置,所有所有新建用户的家目录默认都是在/home/下
4INACTIVE=-1
#密码过期后宽限天数,也就是/etc/shadow文件的第七个字段。如果是天数,比如10代表密码过期后10天后失效;如果是0,代表密码过期后立即失效;如果是-1,则代表密码永远不会失效。这里是默认值是-1,所以所有新建用户的密码都不会失效。
5EXPIRE=
密码失效时间,也就是/etc/shadow文件的第八个字段。也就说用户到达这个日期后直接失效。这里也是使用时间戳来表示日期的。默认值是空,所以所有新建用户没有失效时间,永久有效。
6SHELL=/bin/bash
这个选项就是用户的默认shell的。/bin/bash是Linux的标志shell,所以所有新建立的用户默认都具备shell赋予的权限。
7SKEL=/etc/skel
这个选项是定义用户的模版目录的位置,/etc/skel/目录中的文件都会复制到新建用户的家目录当中。
8CREATE_MAIL_SPOOL=yes
这个选项定义是否给新建用户建立邮箱,默认是创建,也就是说所有的新建用户系统都会新建一个邮箱,放在/var/spool/mail/下和用户名相同。
/etc/login.defs
[root@localhost ~]# vi /etc/login.defs
#这个文件有些注释,把注释删除掉,文件内容就变成下面这个样子
MAIL_DIR /var/spool/mail
新建用户的默认邮箱位置。
PASS_MAX_DAYS 99999
密码的有效期,也就是/etc/shadow文件的第五个字段。代表多少天之后必须修改密码,默认是99999
PASS_MIN_DAYS 0
两次密码的修改间隔时间,也就是/etc/shadow文件的第四个字段。代表第一次修改密码之后,几天后才能再次修改密码。默认值是0。
PASS_MIN_LEN 5
代表密码的最小长度,默认不小于5位。但是用户登录时已经被PAM模块取代,所以这个选项并不生效。
PASS_WARN_AGE 7
密码修改到期前的警告天数,也就是/etc/shadow文件的第六个字段。代表密码到底有效期前多少天开始进行报警提醒,默认值是7天。
UID_MIN 500
UID_MAX 60000
代表创建用户时,最小UID和最大UID的范围。从2.6.x内核开始,Linux用户的UID最大支持232这么多,但是真正最大使用时最大范围是60000。还要注意如果手工指定了一个用户的UID是550,那么下一个创建的用户的UID就会从551开始,哪怕500-549之间的UID没有使用(小于500的UID是给伪用户预留的)。
GID_MIN 500
GID_MAX 60000
GID的最大值和最小值之间的范围。
CREATE_HOME yes
建立用户时是否自动建立用户的家目录,默认是建立
UMASK 077
建立是用户家目录的默认权限,因为umask值是077,所以新建的用户的家目录的权限是700,umask的具体作用和修改方法可以参考权限设定。
USERGROUPS_ENAB yes
使用userdel删除用户时,是否删除用户的初始组,默认是删除。
ENCRYPT_METHOD SHA512
指定Linux用户的密码使用SHA512散列模式加密,这是新的密码加密模式,原先是Linux只能用DES或MD5方式加密
设定密码
passwd 用户名
passwd 改变root密码
passwd root 改变root密码
passwd 选项 用户名
选项:
--stdin 允许管道符入密码 echo “123456” | passwd –stdin user2
-l 锁定用户密码,用户不允许登录
-u 解锁
3、用户信息修改 修改已经存在的用户信息
usermod -u -G -c -d -s 用户名
注意:不要修改已经存在的用户的初始组
usermod -L(大) 用户名 锁定用户
usermod -U(大) 解锁
usermod -l 新名 旧名 用户改名
4、删除用户
usermod -r 用户名
-r 连带家目录一起删除
5、添加组
groupadd 组名
6、删除组
groupdel 组名 注:必须是空组
7、把已经存在的用户加入组
usermod -G 组名 用户名
gpasswd -a 用户名 组名 用户加入组
gpasswd -d 用户名 组名 把用户从组中删除
用户相关命令
Id 用户名 显示用户发UID,初始组,和附加组
Su - 用户名 切换用户身份
连带环境变量一起切换
改变有效组的命令
假设aa用户即属于aa组,也属于group1组,如果有效组是aa组,那么aa用户建立文件时,文件默认属组是aa组。如果有效组是group1组,那么aa用户建立文件时,文件默认属组是group1组
aa身份登录:
newgrp group1 aa必须属于group1组,改变aa的有效组为group1 aa创建的新文件,默认属组是group1,而不再是aa
用户权限赋予
/test 目录,要求aa,bb,cc用户对此目录有rwx。其他人没有权限
groupaddtestgrp 建立组
gpasswd -a aa testgrp 把aa,bb,cc加入组
bb
cc
chmod 770 /test 修改组权限
chgrp testgrp /test 修改属组
本文出自 “吴老二” 博客,谢绝转载!
原文地址:http://9827789.blog.51cto.com/9817789/1656948