经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
linux 基础(7)账号和群组的管理
来源:cnblogs  作者:Ofnoname  时间:2023/2/10 10:26:33  对本文有异议

了解账号和群组的基本信息

账号使用

如何查看 linux 计算机上有哪些账号呢?账号的信息储存在/etc/passwd中,打开就可以看到:

  1. less /etc/passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. bin:x:1:1:bin:/bin:/sbin/nologin
  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  5. adm:x:3:4:adm:/var/adm:/sbin/nologin
  6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  7. sync:x:5:0:sync:/sbin:/bin/sync
  8. ...
  9. lighthouse:x:1000:1000::/home/lighthouse:/bin/bash
  10. ...

每一行代表一个账号的相关信息,用冒号分隔。除了安装时注册的个人账号和 root,还有 bin, daemon, adm, nobody 等各种系统账号,一般不需要管他。

第一列是账号名称,第二列是一个“x”,在老版本用来储存密码,现在密码移动到了/etc/shadow中,这一列就不再使用。

第三列代表这个用户的 UID。在 linux 中,用户名只是给人看的,机器储存用户数据都使用 UID。比如你修改了自己的 UID,而你的文件里储存的所有者还是原来的 UID,此时你的文件就不在属于你了。root 的 UID 是 0。普通用户的 UID 一般从 1000 开始。

第四列代表用户所属主要群组的群组 GID。第五列是该账号的文字说明(给人看的)。

第六列代表这个用户的主文件夹。第七列代表该用户登录后取得的 shell 是哪个。其中有个特殊的/sbin/nologin,代表没有 shell,所以这些用户即使输入了账号密码也无法登陆。

接下来再看看管理密码的/etc/shadow

  1. root:$1$GEIBZMzb$PEV.S1LMYYkII.YBGBOvL/:19370:0:99999:7:::
  2. bin:*:17834:0:99999:7:::
  3. daemon:*:17834:0:99999:7:::
  4. adm:*:17834:0:99999:7:::
  5. lp:*:17834:0:99999:7:::
  6. sync:*:17834:0:99999:7:::

在这个文件中,第一列仍然是用户名,第二列就是密码了。不过这个密码是哈希加密过的,即使能看到,你也不能反推原文(不同distribution 和版本的加密算法有所不同)。如果一般用户忘记了密码,可以让 root 进行重置;如果忘记了 root 的密码,就只能使用单人维护模式登录重置了,但你并不能知道原来的密码。

之后几列都和密码过期提示有关,第三列代表最近更改密码的日期(Unix纪日法),第四列是密码更改的冷却时间,第五列表示密码强制更改的时间,第六列代表密码强制更改的时间的提醒时间。第七列代表密码过期的宽限时间。当密码时间到期时,再登陆会要求强制修改密码才能使用,如果宽限时间也到期,那这个密码就失效,再也不能登录了。99999天是273年,相当于永不过期。

第八列是账号失效日期,账号失效日期以后这个账号将被停用。

群组使用

群组记录在/etc/groups

  1. root:x:0:
  2. bin:x:1:
  3. daemon:x:2:
  4. sys:x:3:
  5. ...

第一列代表群组名称,第二列代表群组密码(仍然用 x 代替),第三列代表这个群组的 GID,第四列代表这个群组的成员。

一个群组包含多个用户,一个用户也可以加入多个群组,在/etc/passwd里,每个用户只记录了一个 GID,这个就是用户的初始组(initial group),默认和用户名相同,只有你一个人。而/etc/groups中这个群组第四列也不需要记录这个成员。

有效群组(effective group)则表示当前使用哪一个群组工作,它控制你新创建的文件属于哪个群组。使用groups命令可以查看你属于那些群组,其中第一个就是当前的有效群组。切换有效群组使用newgrp命令,这个命令会打开一个新shell,其中你的有效群组可以变更为其他群组。

账号和群组的增删改查

增加和删除用户

各种指令可以用来创建新用户,需要 root 才能操作。useradd可以添加新用户。passwd可以给用户赋予密码

  1. useradd test # 添加账号test

useradd 会写入/etc/passwd,shadow,group并创建主文件夹。在大部分 distribution 中,新用户默认会创建一个只有自己的群组作为初始群组。

useradd的参数可以配置用户的所有信息,包括 UID GID,主文件夹,shell等。

刚创建的账号暂时不可登录,用passwd可以给用户赋予密码。

  1. passwd test
  2. # 接下来键盘输入密码,或者使用--stdin接受管线输入

用户一般只能修改自己的密码,先输入旧密码,在输入新密码,PAM验证模块会保证你的密码强度(限制密码长度,限制密码和账号相同,限制常见单词)。root无需旧密码就可以修改,且没有任何限制。

usermod用于编辑已存在的用户配置,参数和添加用户基本相同。

  1. usermod [-cdegGlsuLU] test
  2. -c: 账号说明
  3. -d: 主文件夹
  4. -L: 冻结密码
  5. ...

userdel可以删掉一个用户。移除 passwd, shadow, group里的信息,清除主文件夹。

  1. userdel test

输入id查看一个用户的信息。

  1. id root
  2. uid=0(root) gid=0(root) groups=0(root)

增加和删除群组

和用户类似,相应的命令可以添加,编辑,删除群组

  1. groupadd tgroup
  2. groupmod -n tgroupnew
  3. groupdel tgroupnew

使用 su 和 sudo 切换账号

su 和 sudo 用来切换成其他账号身份执行命令。

  1. su # 切换为 root(non-login)
  2. su - # 切换为 root(login)
  3. su test # 切换为 test(non-login)
  4. su - test # 切换为 test(login)

接下来 su 需要对应用户的密码。sudo 则只需要自己的密码

  1. sudo cat /etc/shadow # 以 root 身份执行命令
  2. # 输入自己的密码
  3. sudo -u www touch default # 以 www 身份创建文件
  4. sudo -i # 登录 root 用户

sudo又不用输入root密码,有了 sudo,岂不是就跟root没区别了?实际上,sudo 的相关信息储存在/etc/sudoer中。这里写明了“哪些用户可以用sudo,用sudo可以做哪些指令,哪些指令需要密码确认”。

  1. sudo vim /etc/sudoers
  2. root ALL=(ALL) ALL
  3. ## Allows members of the 'sys' group to run networking, software,
  4. ## service management apps and more.
  5. # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
  6. ## Allows people in group wheel to run all commands
  7. %wheel ALL=(ALL) ALL
  8. ## Same thing without a password
  9. # %wheel ALL=(ALL) NOPASSWD: ALL
  10. lighthouse ALL=(ALL) NOPASSWD: ALL

#代表注释,横排则代表一条信息。在我这里 root 可以随机执行sudo做任何事,lighthouse 也可以随意使用sudo,且不需要密码。%wheel代表 wheel 群组,这个群组的成员也可以随意执行sudo。有大量的信息被注释掉了备用,如果需要可以取消注释。

原文链接:https://www.cnblogs.com/ofnoname/p/17108046.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号