标签:linux用户与组
配置文件和格式
/etc/passwd:login name:passwd:UID:GID:注释(finger username 查看注释):用户家目录:shell
/etc/group:群组名:群组密码(记录在gshadow):GID:以当前组为附加组的用户列表:(分隔符为逗号)
/etc/shadow: login name:passwd:last changed:min:max:warn:inact:expire
/etc/gshadow:群组名:群组密码:组管理员列表:以当前组为附加组的用户列表: (分隔符为逗号)
group与gshadow附加组应同步
用户管理
用户必须属于一个且只有一个主组,一个用户可以属于零个或多个辅助组
1.useradd命令
* -u UID; -ou 不检查uid唯一性 ; -g 指明用户基本组 ; -c 注释信息; -s shell程序; -G 附加组 ;-r 系统用户 ;-d 指定家目录与-m配合 ;-p 这个命令是需求提供md5码的加密口令,普通数字是不行的。
示例:
创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"
[root@centos6 ~]#useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo
[root@centos6 ~]#getent passwd gentoo
gentoo:x:515:515:Gentoo Distribution:/home/gentoo:/bin/csh
[root@centos6 ~]#id gentoo
uid=515(gentoo) gid=515(gentoo) groups=515(gentoo),0(root),1(bin)
创建系统用户
[root@centos7 ~]# useradd -r -s /sbin/nologin -d /etc/mysql mysql ----新增系统用户mysql shelll类型为sbin/nologin(不可交互式登陆)
系统用户 -r ----有三个特征 :
UID为1000内系统账户(centos7)
默认家目录和其家目录下配置文件.邮箱不会自动生成 要手动在home下创建配置文件,在/home 目录下创建新家目录,并修改家目录、相应的配置文件权限会将/etc/shel目录下的隐藏文件拷贝到家目录下
如果指定家目录 需加上-d -m
示例如下:
[root@centos7 ~]#useradd -r -s /sbin/nologin zab #默认不指定家目录 需要手动创建家目录并创建配置文件
zab:x:987:982::/home/zab:/sbin/nologin
[root@centos7 ~]#ll /home
total 4
drwx------. 14 beings beings 4096 Jul 14 12:51 beings
[root@centos7 ~]#cp -r /etc/skel /home/zab
[root@centos7 ~]#ls -al /home/zab
total 12
drwxr-xr-x. 3 root root 74 Jul 30 15:45 .
drwxr-xr-x. 4 root root 29 Jul 30 15:45 ..
-rw-r--r--. 1 root root 18 Jul 30 15:45 .bash_logout
-rw-r--r--. 1 root root 193 Jul 30 15:45 .bash_profile
-rw-r--r--. 1 root root 231 Jul 30 15:45 .bashrc
drwxr-xr-x. 4 root root 37 Jul 30 15:45 .mozilla
[root@centos7 ~]#chown -R zab:zab /home/zab
[root@centos7 ~]#ls -al /home/zab
total 12
drwxr-xr-x. 3 zab zab 74 Jul 30 15:45 .
drwxr-xr-x. 4 root root 29 Jul 30 15:45 ..
-rw-r--r--. 1 zab zab 18 Jul 30 15:45 .bash_logout
-rw-r--r--. 1 zab zab 193 Jul 30 15:45 .bash_profile
-rw-r--r--. 1 zab zab 231 Jul 30 15:45 .bashrc
drwxr-xr-x. 4 zab zab 37 Jul 30 15:45 .mozilla
所以上面操作最好指定家目录
[root@centos7 ~]#useradd -r -s /sbin/nologin -d -m /home/zab zab
*如果一个用户账号被删除,未被删除家目录,为了访问该以前该家目录。可以设置指定uid跟该账号一样的用户,就可以访问该被删除用户的家目录
[root@centos7 ~]# ll /home
total 8
drwx------. 14 beings beings 4096 Jul 14 12:51 beings
drwx------. 3 liu liu 74 Jul 23 10:26 liu
drwx------. 5 wang wang 4096 Jul 23 10:49 wang
drwx------. 3 1002 wang 74 Jul 23 10:14 zhang
[root@centos7 ~]# useradd -u 1002 li
[root@centos7 ~]# ll /home
total 8
drwx------. 14 beings beings 4096 Jul 14 12:51 beings
drwx------. 3 li li 74 Jul 23 11:41 li
drwx------. 3 liu liu 74 Jul 23 10:26 liu
drwx------. 5 wang wang 4096 Jul 23 10:49 wang
drwx------. 3 li wang 74 Jul 23 10:14 zhang
来看其他示例
例1:
# useradd -d /usr/sam -m sam
此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。
例2:
# useradd -s /bin/sh -g group -G adm,root gem
此命令新建了一个用户gem,该用户的登录Shell是/bin/sh,他属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
这里可能新建组:groupadd group 及 groupadd adm
注:可以有多个附加组,但主组唯一
增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件,如/etc/shadow,/etc/group等。
Linux提供了集成的系统管理工具userconf,他能用来对用户账号进行统一管理。
注:
用户帐户本身在 /etc/passwd 中定义。Linux 系统包含一个 /etc/passwd 的同伴文件,叫做 /etc/shadow。该文件不像 /etc/passwd,只有对于 root 用户来说是可读的,并且包含加密的密码信息。
2.usermod 命令
此处着重介绍 -G ; -d
*-G ----新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
*-d ----新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
常用的其他选项包括-c,-d(-m),-g,-G(-a),-s,-u,-o等,这些选项的意义和useradd命令中的相同,能为用户指定新的资源值。
示例1
[root@centos7 ~]#useradd -d /app/zab zab
[root@centos7 ~]#ls -al /app/zab
total 12
drwx------. 3 zab zab 74 Jul 30 15:52 .
drwxr-xr-x. 3 root root 16 Jul 30 15:52 ..
-rw-r--r--. 1 zab zab 18 Nov 20 2015 .bash_logout
-rw-r--r--. 1 zab zab 193 Nov 20 2015 .bash_profile
-rw-r--r--. 1 zab zab 231 Nov 20 2015 .bashrc
drwxr-xr-x. 4 zab zab 37 Jul 14 11:17 .mozilla
[root@centos7 ~]#usermod -d /home/zab -m zab
[root@centos7 ~]#ll /app
total 0
[root@centos7 ~]#ll /home
total 4
drwx------. 14 beings beings 4096 Jul 14 12:51 beings
drwx------. 3 zab zab 74 Jul 30 15:52 zab
[root@centos7 ~]#ls -al /home/zab
total 12
drwx------. 3 zab zab 74 Jul 30 15:52 .
drwxr-xr-x. 4 root root 29 Jul 30 15:53 ..
-rw-r--r--. 1 zab zab 18 Nov 20 2015 .bash_logout
-rw-r--r--. 1 zab zab 193 Nov 20 2015 .bash_profile
-rw-r--r--. 1 zab zab 231 Nov 20 2015 .bashrc
drwxr-xr-x. 4 zab zab 37 Jul 14 11:17 .mozilla
示例2
# usermod -s /bin/ksh -d /home/z -g developer -m sam
此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。
#usermod -g cheng zte1
#此命令是改动用户zte1所属的组为cheng这个组
3.userdel命令
userdel 选项 用户名
常用的选项是-r,他的作用是把用户的主目录一起删除。
例如:
# userdel -r sam
此命令删除用户sam在系统文件(主要是/etc/passwd,/etc/shadow,/etc/group等)中的记录,同时删除用户的主目录。
4.用户修改其他命令
4.1.passwd命令
代码:
passwd 选项 用户名
可使用的选项:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
例如:假设当前用户是sam,则下面的命令修改该用户自己的口令:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
如果是root用户,能用下列形式指定任意用户的口令:
# passwd sam
New password:*******
Re-enter new password:*******
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再需求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而终极 用户为用户指定口令时,就不必知道原口令。为了安全起见,用户应该选择比较复杂的口令,最佳使用不少于8位的口令,口令中包含有大写、小写字母和数字,并 且应该和姓名、生日等不相同。
为用户指定空口令时,执行下列形式的命令:
代码:
# passwd -d sam
此命令将用户sam的口令删除,这样用户sam下一次登录时,系统就不再询问口令。
passwd命令还能用-l(lock)选项锁定某一用户,使其不能登录,例如:
代码:
# passwd -l sam
echo “密码” | passwd --stdin 用户名 ----一次修改用户名密码 不用重复输入两次 root权限
4.2. chage 修改用户密码时间配置信息
[root@zab app]# chage zab ---修改密码时间配置信息
Changing the aging information for zab
Enter the new value, or press ENTER for the default
Minimum Password Age [0]:
Maximum Password Age [99999]:
Last Password Change (YYYY-MM-DD) [2017-07-22]:
Password Expiration Warning [7]:
Password Inactive [-1]:
Account Expiration Date (YYYY-MM-DD) [-1]:
也可使用命令指定如下:
[root@zab app]# chage -m 0 -M 42 -W 14 -I 7 zab
4.3. getent命令 查看用户系统数据相关记录
[root@zab app]# getent shadow zab ----getent 查看系统数据库相关记录
zab:!!:17369:0:42:14:7::
4.4. finger 命令 查看用户相关个人信息
4.5. chfn 命令 修改用户相关个人信息
[root@zab app]# chfn zab ----修改个人信息
Changing finger information for zab.
Name []:
Office []:
Office Phone []:
Home Phone []:
4.6. 修改用户shell类型
Finger information not changed.
[root@zab app]# chsh zab ----修改shell类型
Changing shell for zab.
New shell [/bin/bash]:
其它命令:
pwcov #同步用户从/etc/passwd 到/etc/shadow
pwck #pwck是校验用户配置文件/etc/passwd 和/etc/shadow文件内容是否合法或完整
newusers passwd格式文件 批量创建用户
chpasswd 批量修改用户口令
配置文件v/etc/default/useradd v/etc/skel/* v/etc/login.defs v
用户组管理
每个用户都有一个用户组,系统能对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于和他同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就对/etc/group文件的更新。
用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的;
举例:
我们为了让一些用户有权限查看某一文件,比如是个时间表,而编写时间表的人要具有读写执行的权限,我们想让一些用户知道这个时间表的内容,而不让他们修 改,所以我们能把这些用户都划到一个组(用chgrp命令),然后来修改这个文件(用chmod命令)的权限,让用户组可读(用chgrp命令将此文件归 属于这个组),这样用户组下面的每个用户都是可读的,其他用户是无法访问的。
1、增加一个新的用户组使用groupadd命令。格式如下:
代码:
groupadd 选项 用户组[用户组添加后,将用户进行组赋予用chown和chgrp指令]
能使用的选项有:
-g GID 指定新用户组的组标识号(GID)。
-o 一般和-g选项同时使用,表示新用户组的GID能和系统已有用户组的GID相同。
例1:
# groupadd group1
此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。
例2:
# groupadd -g 101 group2
此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。
例3:
.创建下面的用户、组和组成员关系
名字为admins 的组
用户natasha,使用admins 作为附属组
用户harry,也使用admins 作为附属组
用户sarah,不可交互登录系统,且不是admins 的成员,natasha,harry,sarah密码都是centos
[root@centos6 ~]#groupadd admins
[root@centos6 ~]#useradd -G admins natasha
[root@centos6 ~]#useradd -G admins harrY
[root@centos6 ~]#useradd -r -s /sbin/nologin sarah
[root@centos6 app]#vim passwd.txt
natasha:centos
harry:centos
sarah:centos
[root@centos6 app]#cat passwd.txt |chpasswd
2、如果要删除一个已有的用户组,使用groupdel命令,格式如下:
代码:
groupdel 用户组
例如:
# groupdel group1
此命令从系统中删除组group1。
3、修改用户组的属性使用groupmod命令。其语法如下:
代码:
groupmod 选项 用户组
常用的选项有:
-g GID 为用户组指定新的组标识号。
-o 和-g选项同时使用,用户组的新GID能和系统已有用户组的GID相同。
-n 新用户组 将用户组的名字改为新名字
例1:
# groupmod -g 102 group2
此命令将组group2的组标识号修改为102。
例2:
# groupmod -g 10000 -n group3 group2
此命令将组group2的标识号改为10000,组名修改为group3。
4、如果一个用户同时属于多个用户组,那么用户能在用户组之间转换,以便具有其他用户组的权限。用户能在登录后,使用命令newgrp转换到其他用户组,这个命令的参数就是目的用户组。
例如:
$ newgrp liu
这条命令将当前用户转换到liu用户组,前提条件是liu用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也能通过集成的系统管理工具来完成。
[wang@centos7 root]$ id wang
uid=1001(wang) gid=1001(wang) groups=1001(wang),1003(liu)
[wang@centos7 root]$ newgrp liu ----wang为liu组成员 临时切换不需要组密码
[wang@centos7 root]$ id
uid=1001(wang) gid=1003(liu) groups=1003(liu),1001(wang)
5.组成员查看
*groups username ----查看username属于什么组
*groupmems -l -g username----查看username组里的成员
注意:二者区别
6.其它相关命令
* groupmems [options] [action] ----参数与-g配合使用
options:
-g, --group groupname 更改为指定组 (只有root)
Actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
*gpasswd [OPTION] GROUP
-a ----将user添加至指定组中
-d user: 从指定组中移除用户user
增加附加组三种方法:
[root@zab ~]# id wang
uid=502(wang) gid=504(wang) groups=504(wang)
[root@zab ~]# usermod -aG li wang ----在wang里增加li这个组
[root@zab ~]# id wang
uid=502(wang) gid=504(wang) groups=504(wang),503(li)
[root@zab ~]# id wang
uid=502(wang) gid=504(wang) groups=504(wang)
[root@zab ~]# gpasswd -a wang li ----增加wang到li这个组里
Adding user wang to group li
[root@zab ~]# id wang
uid=502(wang) gid=504(wang) groups=504(wang),503(li)
[root@zab ~]# id wang
uid=502(wang) gid=504(wang) groups=504(wang)
[root@zab ~]# groupmems -a wang -g li ----增加wang为li这个组的成员
[root@zab ~]# id wang
uid=502(wang) gid=504(wang) groups=504(wang),503(li)
*清空附加组四种方法:
[root@centos7 ~]# id wang
uid=1001(wang) gid=1001(wang) groups=1001(wang),1002(zhang)
[root@centos7 ~]# usermod -G wang wang
[root@centos7 ~]# id wang
uid=1001(wang) gid=1001(wang) groups=1001(wang)
[root@centos7 ~]# usermod -aG liu wang ----添加liu为wang的附加组,不添加-a则原有附加组将被覆盖
[root@centos7 ~]# id wang
uid=1001(wang) gid=1001(wang) groups=1001(wang),1003(liu)
[root@centos7 ~]# usermod -G '' wang ----''表示空格
[root@centos7 ~]# id wang
uid=1001(wang) gid=1001(wang) groups=1001(wang
[root@zab ~]# id wang
uid=502(wang) gid=504(wang) groups=504(wang),500(zab)
[root@zab ~]# groupmems -d wang -g zab
[root@zab ~]# id wang
uid=502(wang) gid=504(wang) groups=504(wang)
[root@zab ~]# gpasswd -d wang zab
[root@zab ~]# id wang
uid=502(wang) gid=504(wang) groups=504(wang)
用户以及用户组管理往往涉及到权限管理chmod、chgrp、sudo、setfacl等命令。
如果要更多了解和学习用户组管理的命令,可查询man帮助!
标签:linux用户与组
原文地址:http://blog.51cto.com/13157015/2044453