linux 账号管理学习分享

150 阅读5分钟

Linux 用户识别码: UID 与 GID

Linux 的每一个文件都会有所谓的拥有者 ID 与拥有群组 ID ,当我们有要显示文件属性的需求时,系统会依据 /etc/passwd 与 /etc/group 的内容, 找到 UID / GID 对应的帐号与群组名称再显示出来。

# UID 的帐号的保存在 /etc/passwd
# 展示 UID 信息
head -n 20 /etc/passwd
# 输出信息
root:*:0:0:System Administrator:/var/root:/bin/sh
每一行使用“:”分隔开,1.帐号名称:2.密码,保存在 /etc/gshadow :3.UID:4.GID:5.使用者信息说明栏:6.主文件夹,默认的使用者主文件夹在 /home/yourIDname

# GID 的用户组信息的保存在 /etc/group
# 展示 GID 信息
head -n 20 /etc/group
# 输出信息
root:x:0:
每一行使用“:”分隔开,1.群组名称:2.群组密码,保存在 /etc/gshadow :3.GID,群组的 ID:4.此群组支持的帐号名称

Linux 新增与删除用户

创建用户,创建用户名和密码。命令如下:

  • useradd
[root@hwsrv-965201 ~]# useradd -help
用法:useradd [选项] 登录
      useradd -D
      useradd -D [选项]

选项:
  -b, --base-dir BASE_DIR	新账户的主目录的基目录
  -c, --comment COMMENT         新账户的 GECOS 字段
  -d, --home-dir HOME_DIR       新账户的主目录
  -D, --defaults		显示或更改默认的 useradd 配置
 -e, --expiredate EXPIRE_DATE  新账户的过期日期
  -f, --inactive INACTIVE       新账户的密码不活动期
  -g, --gid GROUP		新账户主组的名称或 ID
  -G, --groups GROUPS	新账户的附加组列表
  -h, --help                    显示此帮助信息并推出
  -k, --skel SKEL_DIR	使用此目录作为骨架目录
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
  -l, --no-log-init	不要将此用户添加到最近登录和登录失败数据库
  -m, --create-home	创建用户的主目录
  -M, --no-create-home		不创建用户的主目录
  -N, --no-user-group	不创建同名的组
  -o, --non-unique		允许使用重复的 UID 创建用户
  -p, --password PASSWORD		加密后的新账户密码
  -r, --system                  创建一个系统账户
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -s, --shell SHELL		新账户的登录 shell
  -u, --uid UID			新账户的用户 ID
  -U, --user-group		创建与用户同名的组
  -Z, --selinux-user SEUSER		为 SELinux 用户映射使用指定 SEUSER
  
# 默认创建一个用户
[root@hwsrv-965201 ~]# useradd Jane
[root@hwsrv-965201 ~]# ll -d /home/Jane
drwx------ 2 Jane Jane 4096 6月  15 08:45 /home/Jane # 默认会创建使用者主文件夹,且权限为 700 !这是重点!
  • passwd 使用 useradd 创建了帐号之后,需要设置新密码,账户才能正常使用。
[root@hwsrv-965201 ~]# passwd --help
用法: passwd [选项...] <帐号名称>
  -k, --keep-tokens       保持身份验证令牌不过期
  -d, --delete            删除已命名帐号的密码(只有根用户才能进行此操作)
  -l, --lock              锁定指名帐户的密码(仅限 root 用户)
  -u, --unlock            解锁指名账户的密码(仅限 root 用户)
  -e, --expire            终止指名帐户的密码(仅限 root 用户)
  -f, --force             强制执行操作
  -x, --maximum=DAYS      密码的最长有效时限(只有根用户才能进行此操作)
  -n, --minimum=DAYS      密码的最短有效时限(只有根用户才能进行此操作)
  -w, --warning=DAYS      在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
  -i, --inactive=DAYS     当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
  -S, --status            报告已命名帐号的密码状态(只有根用户才能进行此操作)
  --stdin                 从标准输入读取令牌(只有根用户才能进行此操作)

Help options:
  -?, --help              Show this help message
  --usage                 Display brief usage message

# 1. root 给予 Jane 密码
[root@hwsrv-965201 ~]# passwd Jane
更改用户 Jane 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

# 2. 自己修改自己的密码
[Jane@hwsrv-965201 ~]$ passwd
更改用户 Jane 的密码 。
为 Jane 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
无效的密码: 密码与原来的太相似
新的 密码:
无效的密码: 密码与原来的太相似
新的 密码:
  • userdel root 删除用户的的相关数据,包括:帐号/密码相关参数:/etc/passwd, /etc/shadow;群组相关参数:/etc/group, /etc/gshadow;文件数据: /home/username, /var/spool/mail/username..等等
用法:userdel [选项] 登录

选项:
  -f, --force                   force some actions that would fail otherwise
                                e.g. removal of user still logged in
                                or files, even if not owned by the user
  -h, --help                    显示此帮助信息并推出
  -r, --remove                  删除主目录和邮件池
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -Z, --selinux-user            为用户删除所有的 SELinux 用户映射
  
# root 删除用户
[root@hwsrv-965201 home]# userdel -r Jane
  • sudo

sudo 可以让普通用户切换身份来进行某项任务,以“ sudo 指令 ”执行 root 的指令串,由于 sudo 需要事先设置妥当,且 sudo 需要输入使用者自己的密码, 因此多人共管同一部主机时, sudo 要比 su 来的好喔!至少 root 密码不会流出去。

要使用 sudo 执行属于 root 的权限指令,则 root 需要先使用 visudo 去修改 /etc/sudoers
[root@localhost home]# visudo
# 在 root 账号下添加 新的用户
root    ALL=(ALL)       ALL
aos     ALL=(ALL)       ALL
……

上面没列的意思:

  1. “使用者帐号”:系统的哪个帐号可以使用 sudo 这个指令的意思;
  2. “登陆者的来源主机名称”:当这个帐号由哪部主机连线到本 Linux 主机,意思是这个帐号可能是由哪一部网络主机连线过来的, 这个设置值可以指定用户端计算机(信任的来源的意思)。默认值 root 可来自任何一部网络主机
  3. “(可切换的身份)”:这个帐号可以切换成什么身份来下达后续的指令,默认 root 可以切换成任何人;
  4. “可下达的指令”:可用该身份下达什么指令?这个指令请务必使用绝对路径撰写。 默认 root 可以切换任何身份且进行任何指令之意