当前位置: > Linux教程 > Linux学习 >

让linux用户隶属于多个组

时间:2016-05-08 23:49来源:linux.it.net.cn 作者:IT
让linux用户隶属于多个组
    usermod -g 组名 用户名:更改用户所属组,是覆盖;  小写 是 覆盖
    usermod -G 组名1[,组名2,……] 用户名:添加用户所属组;  大写 是添加   usermod -G 组名 用户名
类似于,Linux系统一个组可以包含多个用户成员,反过来,一个用户也可以隶属于多个组,其中一个方法就是使用usermod -G命令来实现。
 
在使用-g时要格外小心,因为它是覆盖,比如原来test 隶属于grp1,grp2组,你突然来一个usermod -g grp3 test,结果就是test用户只
 
属于grp3组;
 
参考:
chgrp
 
 
怎样把用户加入另一个组?    
useradd -g siradm -G sirmas,siruser   用户名  
man usermod
usermod -G group[,... ] login
useradd -g 1000 -G another-group username
 
另外看看这个chmod + x lanb 增加执行的权限。
chmod + w lanb 增加写的权限。
chmod + r lanb 增加读的权限。
chmod + rwx lanb 什么权限都有了
 
建立一个组 groupadd MySQL
useradd -g mysql mysql
 
 
useradd 命令详解
 
  功能说明:建立用户帐号。
 
  语  法:useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号] 或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ]
 
  补充说明:useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
 
  参  数:
  -c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。 
  -d<登入目录>  指定用户登入时的启始目录。
  -D  变更预设值.
  -e<有效期限>  指定帐号的有效期限。
  -f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
  -g<群组>  指定用户所属的群组。
  -G<群组>  指定用户所属的附加群组。
  -m  自动建立用户的登入目录。
  -M  不要自动建立用户的登入目录。
  -n  取消建立以用户名称为名的群组.
  -r  建立系统帐号。
  -s   指定用户登入后所使用的shell。
  -u  指定用户ID。
 
 
groups  可以显示用户所有的 组。 
 
 比如 groups  aa
 
1、linux里查看所有用户
(1)在终端里.其实只需要查看 /etc/passwd文件就行了.
(2)看第三个参数:500以上的,就是后面建的用户了.其它则为系统的用户.
或者用cat /etc/passwd |cut -f 1 -d :
2、用户管理命令
useradd 注:添加用户
adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多;
3、管理用户组(group)的工具或命令;
groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件
 
 
首先创建用户组 test和FTP的主目录
groupadd test
mkdir /tmp/test
然后创建用户
useradd -G test –d /tmp/test –M usr1
注:G:用户所在的组 d:表示创建用户的自己目录的位置给予指定
M:不建立默认的自家目录,也就是说在/home下没有自己的目录
useradd –G test –d /tmp/test –M usr2
接着改变文件夹的属主和权限
chown usr1.test /tmp/test ----这表示把/tmp/test的属主定为usr1
chmod 750 /tmp/test ----7表示wrx 5表示rx 0表示什么权限
 
 
etc/passwd
文件是一个纯文本文件,每行采用了相同的格式:
 
name:password:uid:gid:comment:home:shell
 
Name:
用户登录名
Password:用户口令。此域中的口令是加密的。当用户登录系统时,系统对输入的口令采取相同的算法,与此域中的内容进行比较。如果此域为空,表明该用户登录时不需要口令。
Uid:指定用户的 UID。用户登录进系统后,系统通过该值,而不是用户名来识别用户。
gid:GID。如果系统要对相同的一群人赋予相同的权利,则使用该值。
comment:用来保存用户的真实姓名和个人细节。
home:指定用户的主目录的绝对路径。
shell:如果用户登录成功,则要执行的命令的绝对路径放在这一区域中。它可以是任何命令。
/etc/passwd范例:
root:0:0:root:/root:/bin/bash bin:1:1:bin:/bin:/sbin/nologin daemon:2:2:daemon:/sbin:/sbin/nologin
...... desktop:80:80:desktop:/var/lib/menu/kde:/sbin/nologin
 
 
 
etc/passwd、/etc/shadow和/etc/group这三个配置文件用于系统帐号管理,都是文本文件,可用vim等文本编辑器打开。 /etc/passwd用于存放用户帐号信息,/etc/shadow 用于存放每个用户加密的密码,/etc/group用于存放用户的组信息。
 
/etc/passwd
 
sudo vim /etc/passwd
 
内容是:
 
root:0:0:root:/root:/bin/bash
 
xiaoxiaozi:1000:1000iaoxiaozi,,,:/home/xiaoxiaozi:/bin/bash
 
每一行代表一个账号,是的,有几十个账号,虽然账号很多,但是你要知道,有很多账号本来就是系统中必须的,称为系统账号。例如:bin和nobody其实都是系统账号。这些账号是系统正常运行所需要的,没事不要轻易折腾他们。格式由分号分隔的字串组成,它的格式如下:
 
username:password:uid:gid:allname:homedir:shell
 
各域对应的中文说明如下:
 
用户名:密码:用户ID:组ID:用户全名:主目录:登录shell
 
以上面的结果为例,解释一下:
 
用户名称:不解释吧。
 
密码:以前Linux的密码直接存在该文件中,现在都存在/etc/shadow中了,存入后者的就用x表示,如果是“!”说明此用户不能用密码登录。这也是为什么刚装好Ubuntu时不能用ROOT账号登录的根本原因。
 
UID:就是用户识别码(ID),当UID为0时说明其账号是管理员身份,1~499是保留给系统使用的主要是一些系统服务,不过你用了也没有关系。500~65535是给一般用户的。
 
GID:与/etc/group文件有关,就是用户初始化组的ID。
 
用户信息说明栏:没啥用,就是解释这个用户的,我感觉还是重复一下用户名
 
家目录:就是该用户的“主文件夹”,一般看我的xiaoxiaozi的家目录就是/home/xiaoxiaozi
 
Shell:SHELL脚本,看,现在一般默认都是BASH,可见其流行程序。
 
二、/etc/shadow
 
sudo vi /etc/shadow
 
Unix系统最初是用明文保存密码的,后来由于安全的考虑,采用crypt()算法加密密码并存放在/etc/passwd文件。现在,由于计算机处理能力的提高,使密码破解变得越来越容易。/etc/passwd文件是所有合法用户都可访问的,大家都可互相看到密码的加密字符串,这给系统带来很大的安全威胁。现代的Unix系统使用影子密码系统,它把密码从/etc/pa sswd文件中分离出来,真正的密码保存在/etc/shadow文件中,shadow文件只能由超级用户访问。这样入侵者就不能获得加密密码串,用于破解。www.linuxidc.com使用shadow密码文件后,/etc/passwd文件中所有帐户的password域的内容为"x",如果 password域的内容为"*",则该帐号被停用。内容为:
 
root14402:0:99999:7:::
 
xiaoxiaozi6$9Dm1F/MTo$rLKI4LJEZ1m1k63zzK9M3FoNdZRUTB1pbN3Igibbo9fo.
 
W4EQl74J7oa1c3ogmDbmJQHdV2toEMXX7taEU0/.0:14402:0:99999:7:::
 
格式为:
 
username:password:last_change:min_change:max_change:warm:failed_expire:expiration:reserved
 
各个字段的含义看下面的解释:
 
账号名称:我们都不傻,肯定知道密码一定要与账号对应,所以这里的第一个字段就是账号名,很正常的。
 
密码:这是真正的密码,不过是经过加密的啊。一般高人还是可以破解出来的,所以,这里我把我的密码改了几个字符,呵呵。如果密码栏第一个字符为*或者!,表示这个号不会用来登录。
 
最近更改密码的日期:这里至于为啥会是14402这种怪异的数字。那是因为其是以1970年1月1日做为第1天,然后顺次相加。
 
密码不可更改的天数:即,你不想让某个用户频繁更改密码就可以把这个设成10000。
 
密码需要重新更改的天数:和上面的一样,有点绕,就是你的密码在多少天内必须得改了。
 
密码更改期限前的警告日期:比如说你将上一栏设为了20天,然后这个设为了5天,那么在还有5天就到20天的时候(真啰嗦),系统会自动提示“小子,还有5天啦,你必须得修改你的密码了,否则你就登录不了了”
 
密码过期的宽限时间:这个嘛,是人都有忘和懒的时候,就是你密码都过期了(到了必须更改的日子你还没改)然后你把本项设为10,那么在过期后的10天内你还可以用原密码登录。但是是否还有提示我就不清楚了,理论上是应该有的。
 
账号失效时间:这个不用说了吧?我们用WP的,在空间商那里空间都是有到期时间的,就是这个东西控制的。
 
保留:这个就是说还没想好放啥呢。不过先占个位置,也许以后要拉点啥呢?
 
三、/etc/group
 
sudo vim /etc/group
 
将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
 
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。用户组的所有信息都存放在/etc/group文件中。文件内容如下,只列举一部分
 
root:0:
 
deamon:1
 
bin:2
 
dialout:20:wangchang
 
......
 
这个文件的格式是:
 
groupname:password:gid:members
 
关于组格式的说明,其实上面也讲了相关,一般passwd是x,表示密码是存入/etc/shadow里面的,后面的members表示的是组内的成员,而GID,你可以把它看成一个标志,应该和etc/passwd里面一致哈。
 
之后可以涉及具体的GID,以及相关的进程知识,这里PS一个。
 
忘记密码后如何恢复,看了上面的说明,相信你已经大概明白了,live CD启动以后,修改shadow以及passwd里面的密码选项,删除相应的字段就好。
 
linux忘记root密码的三种解决办法
一、在系统进入单用户状态,直接用passwd root去更改; 1、 lilo 在出现 lilo: 提示时键入 linux single 画面显示 lilo: linux single 回车可直接进入linux命令行 #vi /etc/shadow 将第一行,即以root开头的一行中root:后和下一个:前的内容删除,第一行将类
 
一、在系统进入单用户状态,直接用passwd root去更改;
 
  1、 lilo
 
  在出现 lilo: 提示时键入 linux single
 
  画面显示 lilo: linux single
 
  回车可直接进入linux命令行
 
  #vi /etc/shadow
 
  将第一行,即以root开头的一行中root:后和下一个:前的内容删除,第一行将类似于root::...... ,保存
 
  #reboot重启,root密码为空
 
 
 
  2、grub
 
  在出现grub画面时,用上下键选中平时启动linux的那一项,然后按e键
 
  再次用上下键选中平时启动linux的那一项,然后按e键
 
  修改现在见到的命令行,加入single,结果如下:
 
  kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/
 
  回车返回,然后按b键启动,即可直接进入linux命令行
 
  #vi /etc/shadow
 
  将第一行,即以root开头的一行中root:后和下一个:前的内容删除,第一行将类似于root::......,保存
 
  #reboot重启,root密码为空
 
 
 
  二、用安装光盘引导系统,进行linux rescue状态,将原来/分区挂接上来,做法如下:
 
  cd /mnt mkdir hd mount -t auto /dev/hdaX hd cd hd chroot ./ passwd root
 
 
linux userdel 命令详解
 
  功能说明:删除用户帐号。
 
  语  法:userdel [-r][用户帐号]
 
  补充说明:userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
 
  参  数:
  -f  删除用户登入目录以及目录中所有文件。
 
如果是 userdel -r  aa  用户 和目录文件全部掉 
          userdel  aa  仅仅去掉 用户 但是 对应文件还save 的
 
 
 
如果你没有特别指定abc属于哪个组 默认的情况组的名字和用户名相同
用下面的命令设置oracle用户的附加组为abc
#/usr/sbin/usermod -G abc oracle
 
或者直接修改group文件
#cp /etc/group /etc/group.bak
#vi /etc/group
找到abc的组 然后在该行的后面追加,oracle
然后保存 就把oracle加入到abc用户组里了
linux一个用户添加到多个组里面的方法
文章分类:操作系统
 
昨天由于要把日常管理用户添加到mysql用户组读取错误日志文件,用# usermod -G mysql coomix 命令。
 
今天发现无法su - root了,出现下面情况:
[coomix@china213 wwwroot]$ su - root
口令:
su: 密码不正确
 
问了所有管理人员都说没有改密码。ssh已经禁止root登录了,系统日志也看不了,这下就感觉麻烦大了。还好已经做了Logwatch,查看每天发送到邮箱的邮件发现:
 
Added User to group:
    mysql:
       coomix
 
**Unmatched Entries**
usermod[32007]: delete `coomix' from group `wheel'
usermod[32007]: delete `coomix' from shadow group `wheel'
 
再# cat /etc/group 发现wheel:10:root,goome,goocar 即wheel管理组里面没有coomix这个帐号了。
 
网上再搜索下usermod -G 才知道添加多个组要用","号隔开而且一次性添加,分开添加只能添加最后的那个组。
 
# usermod -G wheel,mysql,coomix coomix
 
执行上面命令后
 
wheel:10:root,goome,goocar,coomix
 
mysql:500:coomix
coomix:502:coomix
 
三个组都有了,再用coomix帐号su - root可以进入了。
 
 
ps:以后进行用户权限操作在添加完成后要另开窗口测试才能关闭原来的窗口,如果没有其他帐号可以su - root就等于用ssh无法进入root了。只能到机房直接登录了再设置用户权限了(注:机房不在本市,而且进机房要写申请非常麻烦)。
 
 
 
另:usermod -g 组名 用户名 是修改用户所在组,其它组都给删除了。
(责任编辑:IT)
------分隔线----------------------------