FreeBSD账户管理

FreeBSD account management

FreeBSD账户管理
Page content

1. 账户类型

  • 系统账户

和linux一样,用来运行系统进程的用户,不允许登录系统

  • 用户账户

和某个人关联的账户,用来日常发邮件,写代码等工作的账户 另外,系统默认有个nobody账户,虽然看似该用户没有太多 权限,但是不应该将大量的任务或者进程交给nobody,一旦 它管辖的范围增大,那么它的权限也就越大了,基于系统安全 考虑,不应该使用nobody做重要的事情。

  • 超级用户账户

超级用户即是root用户,root账户,用来对系统进行无障碍 的管理的拥有所有权限的账户,普通用户一般无法执行类似 安装软件和编译软件等更改系统的命令,但是将用户加入到 wheel组后,就可以通过su命令到继承root的权限和环境变量 来执行管理命令,另外还要提供root密码才能执行命令。

% configure
% make
% su -
Password:
# make install
# exit
%
  • 用户组

freeBSD中默认有个wheel组,root默认属于该组,可以视为root的主 组,凡是加入到该组的用户就具有了管理员权限,可以使用su命令 变身为root,另外还有个operator组,可以将执行基本系统管理 和日常操作的用户加入到该组中。

root@freebsd:~ # groups stevenux
operator
root@freebsd:~ # groups 0
wheel operator
root@freebsd:~ # groups root
wheel operator

2. 账户管理命令

命令 说明
adduser 推荐的用来创建新用户的命令
rmuser 推荐的用来删除已有用户的命令
chpass 用来更改用户信息的数据库记录
passwd 更改用户密码
pw pw可以完成所有用户管理的功能

2.1 adduser

使用adduser添加新用户时,会自动更新/etc/passwd和/etc/group,并为用户 创建一个家目录/usr/home/userhome,并把默认的配置文件从/usr/share/skel 拷贝到用户家目录(freebsd中/home是指向/usr/home的软连接),执行adduser 的用户必须位于wheel组中,并知道root密码,例如:

# adduser
Username: jru
Full name: J. Random User
Uid (Leave empty for default):
Login group [jru]:
Login group is jru. Invite jru into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]: zsh
Home directory [/home/jru]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username   : jru
Password   : ****
Full Name  : J. Random User
Uid        : 1001
Class      :
Groups     : jru wheel
Home       : /home/jru
Shell      : /usr/local/bin/zsh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (jru) to the user database.
Add another user? (yes/no): no
Goodbye!
#

2.2 rmuser

su到超级用户来运行该命令,该命令将进行如下操作:

  1. 如果该用户有crontab条目,则移除
  2. 移除任何属于该用户的at任务
  3. 终止任何该用户拥有的进程
  4. 从密码文件中移除该用户的条目/etc/passwd
  5. 可选的移除该用户的加目录
  6. 移除/tmp下该用户拥有的所有文件
  7. 将该用户从其加入的所有组中移除/etc/group
  8. 如果某个用户组没有了任何用户,将会被自动移除

例如:

# rmuser jru
Matching password entry:
jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh
Is this the entry you wish to remove? y
Remove user's home directory (/home/jru)? y
Removing user (jru): mailspool home passwd.
#

2.3 chpass

例如:

# chpass jru  # 以超级用户来修改其它用户的信息
#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1001
Gid [# or name]: 1001
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:

$ chpass  # 用户自己修改自己的信息
#Changing user database information for jru.
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:

2.4 passwd

任何用户都可以使用该命令来修改自己的密码,如:

% passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: done

root可以改任何用户的密码:

# passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: done

2.5 pw

pw命令可以创建,删除,修改,显示用户和组,即作为系统管理 用户和组的文件的前端,其提供很多子命令很适合在脚本中使用。

3. 管理组

freeBSD中组名和GID的映射文件和linux一样,在/etc/group, 也使用”:“分割每个域:

[root@freebsd ~]# cat /etc/group
# $FreeBSD: releng/12.0/etc/group 336525 2018-07-19 23:55:29Z ian $
# 组名:密码:组ID:逗号隔开的用户列表
wheel:*:0:root,lisuo
daemon:*:1:
...
operator:*:5:root
www:*:80:
...
nobody:*:65534:
postgres:*:770:
chronyd:*:849:

管理员可以直接编辑该文件,将用户加到最后一个域,使用都好分隔 也可以通过pw命令:

## 创建一个组
# pw groupadd teamtwo
# pw groupshow teamtwo
teamtwo:*:1100:


## 添加用户到一个新组
# pw groupmod teamtwo -M jru
# pw groupshow teamtwo
teamtwo:*:1100:jru

## 添加一个新用户到某个组
# pw groupmod teamtwo -m db
# pw groupshow teamtwo
teamtwo:*:1100:jru,db