这节描述你需要知道有些程序在安装时就已经有 Shadow Suite。 大部分的信息在操作手册可以找到。
Shadow Suite 新增下列指令用来新增、修改和删除使用者。 这也是可以安装
adduser
程序。
useradd
使令可用在系统中新增使用者。 你也可以采用此指令来改变预设字串。
你应该做的第一件事是检查预设值设定和针对你的系统进行改变:
useradd -D
GROUP=1 HOME=/home INACTIVE=0 EXPIRE=0 SHELL= SKEL=/etc/skel
预设值不全是你要的,所以如果你开始新增使用者,你必须详阅每个使用者信息。 而且,我们可能和应该改变设定值。
在我的系统上:
/bin/bash
useradd -D -g100 -e60 -f0 -s/bin/bash
现在执行 useradd -D
将得到:
GROUP=100 HOME=/home INACTIVE=0 EXPIRE=60 SHELL=/bin/bash SKEL=/etc/skel
尽管依照你需要修改,预设值将存在 /etc/default/useradd
.
先在你可以使用 useradd
来新增系统使用者。举例说明,新增一使用者 fred
使用预设值方式如下:
useradd -m -c "Fred Flintstone" fred
这将在 /etc/passwd
档中的一行建立如下:
fred:*:505:100:Fred Flintstone:/home/fred:/bin/bash
且在 /etc/shadow
档中的一行建立如下;
fred:!:0:0:60:0:0:0:0
fred
的根目录将被建立且 /etc/skel
的内容将被复制因为指令句中有
-m
设定。
因为我们并未详述 UID,系统会直接寻找下一个可获得的编号。
fred
的帐号被建立啰,但是 fred
仍然不能签入直到我们不再锁住(unlock)这个帐号。
透过更改密码完成 unlock 帐号,方法如下:
passwd fred
Changing password for fred?Enter the new password (minimum of 5 characters) Please use a combination of upper and lower case letters and numbers. New Password: ******* Re-enter new password: *******
/etc/shadow
档将包含:
fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0
且 fred
将可以签入和使用该系统。
useradd
和其他附带 Shadow Suite 比较好的地方是可以自动改变
/etc/passwd
和 /etc/shadow
。 所以如果你正在新增一个使用者,
且另一个使用者正在更改密码,这两个操作都可以正确的执行。
你使用提供的指令比直接存取 /etc/passwd
和 /etc/shadow
档还好。
如果你正编辑 /etc/shadow
档,且有个使用者在你编辑时要改变他的密码,
然后你储存编辑结果,这个使用者的密码将会遗失掉。
这里是使用 useradd
和 passwd
新增使用者的一些 interactive script :
#!/bin/bash # # /sbin/newuser - A script to add users to the system using the Shadow # Suite's useradd and passwd commands. # # Written my Mike Jackson <mhjack@tscnet.com> as an example for the Linux # Shadow Password Howto. Permission to use and modify is expressly granted. # # This could be modified to show the defaults and allow modification similar # to the Slackware Adduser program. It could also be modified to disallow # stupid entries. (i.e. better error checking). # ## # Defaults for the useradd command ## GROUP=100 # Default Group HOME=/home # Home directory location (/home/username) SKEL=/etc/skel # Skeleton Directory INACTIVE=0 # Days after password expires to disable account (0=never) EXPIRE=60 # Days that a passwords lasts SHELL=/bin/bash # Default Shell (full path) ## # Defaults for the passwd command ## PASSMIN=0 # Days between password changes PASSWARN=14 # Days before password expires that a warning is given ## # Ensure that root is running the script. ## WHOAMI=`/usr/bin/whoami` if [ $WHOAMI != "root" ]; then echo "You must be root to add news users!" exit 1 fi ## # Ask for username and fullname. ## echo "" echo -n "Username: " read USERNAME echo -n "Full name: " read FULLNAME # echo "Adding user: $USERNAME." # # Note that the "" around $FULLNAME is required because this field is # almost always going to contain at least on space, and without the "'s # the useradd command would think that you we moving on to the next # parameter when it reached the SPACE character. # /usr/sbin/useradd -c"$FULLNAME" -d$HOME/$USERNAME -e$EXPIRE \ -f$INACTIVE -g$GROUP -m -k$SKEL -s$SHELL $USERNAME ## # Set password defaults ## /bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1 ## # Let the passwd command actually ask for password (twice) ## /bin/passwd $USERNAME ## # Show what was done. ## echo "" echo "Entry from /etc/passwd:" echo -n " " grep "$USERNAME:" /etc/passwd echo "Entry from /etc/shadow:" echo -n " " grep "$USERNAME:" /etc/shadow echo "Summary output of the passwd command:" echo -n " " passwd -S $USERNAME echo ""
新增使用者是用 script 比直接编辑 /etc/passwd
/ /etc/shadow
档或使用
像 Slackware 的 adduser
程序还要好。
需要更多 useradd
信息请参照线上操作手册。
usermod
程序是用在修改使用者信息。
它的参数使用和 useradd
程序类似。
如果你要更新 fred
的 shell,你要作下列步骤:
usermod -s /bin/tcsh fred
现在 fred
的 /etc/passwd
档将变成:
fred:*:505:100:Fred Flintstone:/home/fred:/bin/tcsh
如果要使 fred
的帐号到期日为 09/15/97:
usermod -e 09/15/97 fred
现在 fred
在 /etc/shadow
的栏位变成:
fred:J0C.WDR1amIt6:9559:0:60:0:0:10119:0
需要更多 usermod
信息请参照线上操作手册。
userdel
用在删除使用者,使用方法为:
userdel -r username
-r
参数可以将该使用者根目录全部移除。位在期待目录的文档则需手动移除。
如果你只是要简单的锁住帐号而没有要删除它,建议你使用 passwd
指令。
passwd
指令很明显使用在改变密码,除此之外,
可由 root 使用在:
-l
and -u
)-x
)-n
)-w
)-i
)-S
)举例说明,如果要锁死 fred
帐号:
passwd -S fred
fred P 03/04/96 0 60 0 0
这表示 fred
的密码是有效的,它在 03/04/96 被修改且任何时间都可被修改
, fred 将不会收到警告且帐号将不会因密码到期而关闭。
这表示如果 fred
在密码到期后签入,它将被要求用一个新密码签入。
如果我们决定要警告 fred
在密码过期前 14 天,且让它的帐号在到期后14天警告,
我们需要作下列步骤:
passwd -w14 -i14 fred
现在 fred
改变为:
fred P 03/04/96 0 60 14 14
需要更多 passwd
信息请参照线上操作手册。
/etc/login
档是对 login
程序的 configuration file 且 对
Shadow Suite。
/etc/login
包含从预设值密码改变的驱动设定。
/etc/login.defs
档是一个很好的文件档,然而仍有些事情要注意:
跟去上述你可以发现这是一个重要档,且你应该确认目前设定及你将对你系统的设定内容。
/etc/groups
档包括允许是用者存取群组之密码。 如果你定义
SHADOWGRP
在 /usr/src/shadow-YYMMDD/config.h
档将开启该功能。
如果你定义该常数且编译它,你需建立一个 /etc/gshadow
档来保存群组密码
和群组管理者信息。
当你建立 /etc/shadow
。你使用一个呼叫程序叫做 pwconv
,
该程序不会建立 /etc/gshadow
档,但是这没关系,只要你自行建立即可。
为了建立起始 /etc/gshadow
档要执行下列步骤:
touch /etc/gshadow
chown root.root /etc/gshadow
chmod 700 /etc/gshadow
每次你建立一个新群组,它们会被加到 /etc/group
和 /etc/gshadow
档。
如果你透过新增或移除使用者来修改群组或改变群组密码,/etc/gshadow
档都将被改变。
groups
, groupadd
, groupmod
, 和
groupdel
程序是用来供应 Shadow Suite 部分可以变更群组。
/etc/group
档格式如下:
groupname:!:GID:member,member,...
其中:
groupname
The name of the group
!
The field that normally holds the password, but that
is now relocated to the /etc/gshadow
file.
GID
The numerical group ID number
member
List of group members
/etc/gshadow
档格式如下:
groupname:password:admin,admin,...:member,member,...
其中:
groupname
The name of the group
password
The encoded group password.
admin
List of group administrators
member
List of group members
gpasswd
指令是用在新增或移除管理者和群组成员。 root
或其他在
群组管理者人员可新增或移除群组成员。
群组密码可以透过 passwd
指令改变,需透过
root 或在该群组管理者有权限的帐号方可修改。
Despite the fact that there is not currently a manual page for
gpasswd
, typing gpasswd
without any parameters gives a
listing of options. It's fairly easy to grasp how it all works once you
understand the file formats and the concepts.
pwck
程序提供在 /etc/passwd
和 /etc/shadow
档的一致性检查。
它将检查每个使用者名称且依照下列步骤确认:
它也会警告没有密码的帐号。
在安装 Shadow Suite 后执行 pwck
是一个很好的点子。
它也可以每周或每月周期性的执行。 如果你使用 -r
参数,你可以用 cron
来执行且收到电子邮件报告
grpck
检查 /etc/group
和 /etc/gshadow
档一致性的程序。
它作下列检查:
它也有 -r
参数自动产生报表。
Dial-up 密码是另一个对系统防御的选项列,该系统允许拨接存取。
如果你有一个系统允许许多人区域网路连结,但是你想限制拨接的权限,那你需使用 dial-up
密码。 为了要开启 dial-up 密码,你必须编辑 /etc/login.defs
档且确定将
DIALUPS_CHECK_ENAB
设定为 yes
.
有两个文档包括 dial-up 信息, /etc/dialups
包括 ttys
(one per line, with the leading "/dev/" removed)。
如果 tty 有被列出, dial-up 表示已经被检查。
第二个档是 /etc/d_passwd
。 这个档包括 shell 全部合法路径名称。
如果以个使用者签入一条列在 /etc/dialups
的线(line),且他的 shell 被列在
/etc/d_passwd
档,他将被允许存取透过提供正确的密码。
另一个使用 dial-up 密码的目的是设定指允许某些形式连结的线(可能是PPP 或 UUCP 连结)。 如果一个使用者试著得到另一种形式连结 (i.e. a list of shells),他必须知道使用这条线的密码。
在你可以在未来使用 dial-up 前,你密需建立一些文档。
dpasswd
指令提供对在 /etc/d_passwd
档的 shells 指派密码。
可以看操作手册的到更多信息。