osx下的useradd
今天调试bind,发现在osx中没有bind用户,粉郁闷的说。当时情急之下直接把程序中的代码改了。这会搞完了,顺手把这个问题解决了。使用的是osx内置的dscl程序。记下这些:
sudo dscl .
不要忘记最后的“.”,说明是对本机进行操作。进到dscl的交互模式下,加了bind用户:
> create /users/bind uid 53
> create /users/bind gid 53
> create /users/bind shell /usr/bin/false
> create /users/bind realname "BIND User"
> create /users/bind home /var/empty
所有的都可以使用help命令知道我干了什么。 :)
同时在网上找到一个useradd.sh脚本,写的好很多。放个纸条在这里:
#!/bin/bash
# useradd.sh v1.0.1
# (cc) 2006 Filipp Lepalaan <filipp@mac.com>
usage="sudo $(basename $0) [-u uid] [-g group] [-a] [-c] [-d home] [-s shell] [-rn realname] name"
if [ $# -eq 0 ]
then echo "Usage: $usage" >&2;
exit 1
fi
# Thnx to pea!
if [ $USER != "root" ]
then echo "$0 must be run as root" >&2
exit 1
fi
def_shell=$SHELL
def_home='/Users'
make_home=false
make_admin=false
set_home=false
new_uid=$(nireport . /users uid | tail -n 1)
new_gid=$(nireport . /groups gid | tail -n 1)
let "new_uid = $new_uid + 1"
let "new_gid = $new_gid + 1"
while getopts "u:g:acd:s:rn:" param
do
case $param in
u ) new_uid=${OPTARG:-$new_uid};;
g ) new_gid=${OPTARG:-$new_gid};;
a ) make_admin=true;;
c ) make_home=true;;
d ) set_home=true; new_home=${OPTARG:-$new_user};;
s ) new_shell=${OPTARG:-$def_shell};;
rn ) new_fn=${OPTARG:-$def_rn};;
esac
done
shift $(($# - 1)) # Get the last argument
new_user=$1
# Set to default if not given
new_home=${new_home:-"$def_home/$new_user"}
new_rn=${new_fn:-$new_user}
new_shell=${new_shell:-$def_shell}
dscl . create /users/$new_user uid $new_uid
dscl . create /users/$new_user gid $new_gid
dscl . create /users/$new_user shell $new_shell
dscl . create /users/$new_user realname "$new_rn"
dscl . create /groups/$new_user gid $new_gid;
dscl . create /groups/$new_user passwd \*
if [ $make_home == true ]
then echo "Creating $new_home"
ditto --rsrc /System/Library/User\ Template/English.lproj/ $new_home
chown -R $new_user:$new_user $new_home
set_home=true # Otherwise this'd be pretty pointless
fi
if [ $set_home == true ]
then dscl . create /users/$new_user home $new_home
fi
if [ $make_admin == true ]
then echo "Adminning $new_user"
dscl . merge /groups/admin users $new_user
fi
passwd $new_user
exit 0
最后,还是有一点点郁闷的事,加进去的用户在/etc/passwd中没有出现。。。不知道为什么 :(
引用通告 (0)
下面所列出的是引用这篇文章: osx下的useradd 的Blog链接.
这篇文章的引用通告URL: http://mt.opensource.org.cn/cgi-bin/mt/mt-tb.cgi/200

发表评论