linux用户和组管理

目录
用户和组概述 1
用户登录过程 1
账号信息文件/etc/passwd 1
密码文件 /etc/shadow 2
组文件/etc/group与/etc/gshadow 3
账号管理 3
用户管理 3
组管理 5


用户和组概述
用户账号:超级用户root、普通用户、程序用户
组账号:基本组、附加组
UID和GID:UID(user identity),GID(group identify)

超级用户:超级用户的UID和GID都固定为 0。
程序用户:用于维持系统或某个程序的正常运行,一般不允许登录,1~499的UID、GID默认保留给程序用户使用。
普通用户:一般只在用户自己的宿主目录中有完全权限,UID、GID号在500~65535之间。

用户登录过程
1) 使用tty1~tty7终端机提供的login接口,输入账号和密码
2) 读取账号信息文件/etc/passwd,查看账号是否存在,若存在则读取UID、GID、宿主目录、shell目录,进行下一步(早期的UNIX系统密码也在passwd文件中,后来出于安全方面的考虑,将密码数据存放到/etc/shadow文件中了)
3) 读取密码信息文件/etc/shadow,根据用户名验证密码是否一致,若一致则进入shell执行阶段。

账号信息文件/etc/passwd
/etc/passwd文件是系统能够识别用户的一份清单。在用户登录期间,系统查询这个文件,确定用户的UID并验证用户的口令(早期的密码保存在passwd的第二个字段中,后来出于安全方面的考虑,将密码信息单独保存在/etc/shadow文件中)。/etc/passwd文件的权限为644,所有者和所属组为root。这个文件中的每一行都代表一个用户,它包含7个由冒号分割的字段:
root:x:0:0:test:/root:/bin/bash
登录名:密码或占位符(x):UID:GID:GECOS字段:主目录:登录shell
1) 登录名
用户名必须是唯一的,长度一般不超过32个字符。如果使用了NIS系统,登录名的长度需要限制在8个字符以内。用户名大小写敏感。
2) 密码
早期的UNIX系统的密码存放在这个字段上,但是由于所有的程序都能读取passwd文件,这样很容易造成安全隐患,因此后来就将加密后的口令放在/etc/shadow文件中了。
如果通过手工编辑/etc/passwd文件来创建一个账号,那么要在加密口令字段添加一个星号或者一个占位符x,星号可以防止在设置一个真实的口令之前发生未经授权使用该账号的情况,如果该字段为空则不用口号就可以访问该账号,占位符x会去/etc/shadow文件中读取口令信息。
3) UID
UID是32位的无符号整数。多个账号可以有相同的UID,而一个账号只能有一个UID。比较安全的用法是保持UID的唯一性,即一个特定的UID在每台计算机上都应该指的是相同登录名和同一个用户,可以避免工作组迁移时造成账号信息混乱。同时还要避免许多账号共用一个UID,因为共用一个UID虽然多个具有不同shell和口令的登录账户似乎比较方便,但这种设置会产生更多潜在的安全隐患。
4) GID
  和UID类似,组的ID是一个32位的整数。GID 0是给超级用户root的组保留的,GID 1是名为“bin”的组,GID 2是“daemon”组。组在/etc/group文件中定义,/etc/passwd中的GID字段在登录时提供默认(或有效)GID,在判断访问权限时不是特别看重默认GID,而在创建新文件和新目录时才起作用,新文件一般由用户的有效组所有。新文件默认为父目录的组所有。
5) GECOS字段
  GECOS字段通常用来记录每个用户的个人信息。最初GECOS字段是用来保存登录信息的。使用finger命令会按特定顺序来解释哪些用逗号隔开的GECOS选项。chsh命令可以让用户修改他们自己的GECOS信息。
6) 主目录
当用户登录之后,他们的shell就进入到自己的主目录中。root用户的主目录是/root。创建用户时,linux系统默认会为新用户创建宿主目录,默认宿主目录为/home/Username,并且将/etc/skel下的所有文件拷贝到用户的宿主目录。
如果把/etc/login.defs中的DEFAULT_HOME设为no,那么就会禁止没有主目录的用户登录。否则登录后用户会处在根目录下。
7) 登录shell
  bash是默认的shell,如果/etc/passwd中没有指定一个登录shell,就会使用bash。用户可以使用chsh命令来改变自己所使用的shell,文件/etc/shells中包含了chsh命令允许用户选择使用的有效shell的列表。


密码文件 /etc/shadow
只用超级用户才可以读/etc/shadow,它用于保护加密口令的安全。还提供了无法从/etc/passwd得到的账号信息。有些发行版本采用的是隐藏口令系统,这时/etc/passwd文件中口令字段一定要包含一个x。
/etc/shadow文件的权限是400,所有者和所属组是root。
/etc/shadow中每个用户有一行信息,每行用冒号分隔为9个字段:
1) 登录名:与/etc/passwd中的登录名相同,联系用户在passwd和shadow中的记录
2) 加密的口令
3) 上次修改口令的时间
4) 两次修改口令指尖最少的天数
5) 两次修改口令指尖最多的天数
6) 提前多少天警告用户口令即将过期
7) 在口令过期之后多少天禁用账号
8) 账号过期的日期
9) 保留字段,目前为空
可以在/etc/login.defs文件中进行相关设置。


组文件/etc/group与/etc/gshadow
/etc/group文件记录了与组相关的信息。/etc/group的权限为644,所有者和所属组为root。
每一行代表了一个组,其中包含4个字段:
1) 组名
2) 加密的口令或者包含一个占位符x,表明有一个/etc/gshadow文件
3) GID号
4) 成员列表,用逗号隔开
有效用户组(effective group)与初始用户组(initial group)
在/etc/passwd里面第四段列出的GID为用户的“初始用户组”,当用户登录系统时,就用户这个组的相关权限。而一个用户不但拥有私有组,还可以用户附加组,这时对于已经存在的文件用于在两个组内都有权限,如果此时要创建一个新的文件或新目录,这个新文件是属于用户的私有组还是附加组呢?这就要查看当时用户的“有效用户组”了。
  可以使用groups命令查看当前用户的有效用户组,使用newgrp命令切换“有效用户组”,你想要切换的用户组必须是你已经支持的用户组,newgrp切换有效用户组时,会以一个新用户组的shell来提供这个功能。newgrp – log in to a new group.

/etc/gshadow文件与/etc/shadow的概念类似,权限为400,拥有者和组为root,分为4个字段:
1) 用户组名
2) 密码列,如果是感叹号,则表示无合法密码,没有用户组管理员(QQ群管理员,非创建者)
3) 用户组的管理员账号
4) 该用户组的所属账号(与/etc/group内容相同)



账号管理


 用户管理
新增用户的过程包括系统要求的4个步骤,和为新用户建立环境的2个步骤。
系统所需步骤:
编辑psswd和shadow文件,定义用户账号
把用户添加到/etc/group文件里
设置一个初始口令
创建用户主目录,用chown和chmod命令改变用户主目录的属主和属性。
为用户所进行的步骤:
将默认的启动文件复制到用户的主目录中
设置用户的邮件主目录并建立邮件别名
1) adduser命令
-c 设置用户的备注信息,用finger命令显示为Name
-g 指定用户的私有组,默认组名与用户名相同,组需要已经存在
-G 指定附加组
-p 指定密码,这里指定的密码时明文的。如果没有指定,需要使用passwd 设置密码
-u 指定用户的UID
-d 设置用户的主目录
如 useradd –d /home/test –c abcde test
2) passwd设置用户密码
-l 锁定用户,被锁定用户将不能登录
-u 解除对用户的锁定
-d 删除用户密码
-S 显示用户名的简短描述,仅root用户可以使用
passwd可以改变当前用户的密码,psswd user_name修改用户的密码。
使用chage –l user_name 也可以查看密码参数的详细信息。
3)  userdel删除用户
   -f 强制删除用户,即使用户当前已登录
   -r 删除用户的同时,删除与用户相关的所有文件
   手动删除用户需要以下步骤:
   将用户从所有本地用户DB或电话簿中删除
   将用户从aliases文件中删除,或者添加一个转发地址
   删除用户的crontab文件盒所有挂起的at作业
   终止所有仍在运行的用户进程
   将用户从passwd、shadow、group、gshadow文件中删除
   删除用户的主目录
   删除用户的邮件存储文件
 然后使用find命令,查看用户的旧UID在系统中是否还拥有文件。
  find file_system –xdev –nouser 
 -xdev参数指定只在当前文件系统中查找,-nouser指定查找没有匹配用户UID的文件。
4) usermod修改用户
-c 修改用户的GECOS注释信息
-d 修改用户的主目录
-e 用户的过期日期,/etc/shadow中的第八段,格式为YYYY-MM-DD
-g 修改用户的初始用户组,/etc/passwd中的第四段,给定的组必须存在,默认GID为1.
-G 将用户添加到指定的附加组中去,/etc/group的第四段
-l 修改登录名,即/etc/passwd的第一段
-a 向组中追加用户,与-G合用增加附加组
-p 设置新的加过密的密码
-s 修改用户登录的默认shell,/etc/passwd的第七段,相当于chsh –s
-u 用户的ID
-L 锁定用户的密码,在密码字段前添加感叹号,禁止用户登录,/etc/shadow的第二段
-U 解锁用户密码,去密码字段前面的掉感叹号
5) chsh改变用户的登录shell
-s 指定新的默认shell
-l 打印当前系统支持的shell程序
6) chfn改变用户finger信息
改变/etc/passwd中的第五段
7) id
显示用户的定义信息
8) finger
-l 多行方式显示用户信息
不带参数则显示当前已登录系统的用户信息。


组管理
1) groupadd
-g 指定新建组的GID,GID在500~6000之间
-r 创建系统工作组,GID在1~499之间
-K 设置GID的最大值和最小值,覆盖/etc/login.defs中的 GID_MIN、GID_MAX
-o 允许添加GID不唯一的工作组
例如 
groupadd –g 400  test #创建GID为400的系统工作组
默认不允许创建具有相同GID的组,如果使用 –o 参数则可以创建。
2) groupdel
groupdel命令无法删除用户的主要组,如创建用户test时默认创建了主要组test,在不删除test用户的情况下,无法直接删除test组。如果test组中只有test一个用户,这时删除test用户会把test组也删除。如果向test组中追加了用户test1,则删除test用户时,不会级联删除组test。
3) groupmod
-g 指定新的GID
-n 指定新的组名
新GID和组名必须唯一。
4) gpasswd
-a 向组中添加用户
-d 从组中删除用户
-A 设置组管理员
-M 设置组成员
也可以使用usermod向组中添加用户,gpasswd –a test test1 将test用户加到test1工作组。
5) groups
默认打印当前用户所属的工作组,加上用户名则打印指定用户的所属工作组。
使用newgrp命令可以指定用户的有效工作组(新建文件或目录的所属组)。
6) chpasswd批处理模式更新密码
-e 输入的密码是加密后的密文
-m 当被支持的密码未被加密时,使用MD5加密代替DES加密
7) pwconv
基于/etc/passwd创建用户影子文件/etc/shadow
8) pwunconv
将用户的/etc/shadow还原到/etc/passwd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值