mac下通过dscl命令对用户用户组进行增删改查操作

最近需要对系统的用户和用户组进行操作,才发现mac系统下的用户操作跟常见的Linux系统有很大的不同。
反正useraddgroupadd是用不了了。送你一句command not found
于是,查询整理了一些资料,做了记录。
相对来讲,还是比较全的,也很适合小白。网上很多的文章,要么有说怎么查,没说怎么删;要么有介绍用户操作,没有介绍用户组的操作。

查看所有的组:

1
2
3
4
5
6
7
8
9
10
11
12
13
dscl
cd /Local/Default/Groups
ls

// 或者
dscl . -list /Groups
// 如需查看各组ID
dscl . -list /Groups PrimaryGroupID

dscl . -readall /groups

// 查看指定的组
dscl . -read /Groups/admin

查看所有的用户:

1
2
3
4
5
6
7
8
9
dscl
cd /Local/Default/Users
ls

// 或者
dscl . -list /Users

// 如需查看各用户ID
dscl . -list /Users UniqueID

查看指定用户wenlie的所属组ID:

1
2
3
dscl . -read /Users/wenlie
dscl . -read /Users/wenlie PrimaryGroupID
dscl . -read /Users/wenlie PrimaryGroupID RealName

查看指定组admin中的用户:

1
2
dscl . -read /Groups/admin
dscl . -read /Groups/admin GroupMembership

创建组:

1
2
3
4
5
6
7
8
9
10
11
dscl . create /Groups/test_group
// 此处未指定gid, 那么通过dscl . -list /Groups PrimaryGroupID命令会查询不到,而应该使用dscl . -list /Groups

dscl . create /Groups/test_group gid 296

sudo dscl . -create /groups/test_group
sudo dscl . -append /groups/test_group gid 4200
sudo dscl . -append /groups/test_group passwd "nicepwd"

// 以下命令,会自动创建groupid
sudo dseditgroup -o create test_group

删除组:

1
dscl . -delete /Groups/test_group

创建指定用户test_user:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
dscl . -create /Users/test_user
dscl . -create /Users/test_user UserShell /bin/bash
dscl . -create /Users/test_user RealName "Lucius Q. User"

// 注意 UniqueID必须唯一
dscl . -create /Users/test_user UniqueID "1010"
dscl . -create /Users/test_user PrimaryGroupID 80
dscl . -create /Users/test_user NFSHomeDirectory /Users/test_user

// 修改密码
dscl . -passwd /Users/test_user 'goodpwd'

// 加入指定用户组`admin`
dscl . -append /Groups/admin GroupMembership test_user

从组中删除用户:

1
dscl . -delete /Groups/test_group GroupMembership test_user

查看dscl命令的帮助:

1
2
dscl
help

1 创建用户hadoop

创建用户:

1
dscl . -create /Users/hadoop

创建用户目录:

1
dscl . -create /Users/hadoop NFSHomeDirectory /Users/hadoop

设置bash环境:

1
dscl . -create /Users/hadoop UserShell /bin/bash

添加到用户组admin:

1
dscl . -append /Groups/admin GroupMembership hadoop

2 添加sudoer权限

1
visudo

在文中root行下添加hadoop行

1
2
root ALL=(ALL:ALL) ALL
hadoop ALL=(ALL:ALL) ALL

其中:

visudo <=> vi /etc/sudoers