# linux user and group # useradd 添加用户 useradd OPTIONS UserName ## 默认值 -D, --defaults 这些默认值由/etc/default/useradd定义 只使用-D选项时,useradd将显示当前的默认值. -D和其他选项配合使用时,useradd将为指定的选项更新默认值(也会更改/etc/default/useradd) 例如: 查看useradd默认值 ``` $ useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/sh SKEL=/etc/skel CREATE_MAIL_SPOOL=no ``` 有效的“更改默认值”选项有: -b, --base-dir BASE_DIR, 对应HOME选项 新用户主目录的路径前缀, 如果创建新用户时没有使用-d 选项,那么用户的主目录名为: $(BASE_DIR)/用户名称 -e, --expiredate EXPIRE_DATE, 对应EXPIRE 禁止此用户账户的日期, -f, --inactive INSTANCE 密码过期到账户被禁用之前的天数。 ## 其他参数 -d, --home HOME_DIR 使用HOME_DIR作为用户登录的主目录. 默认值是将用户名附加到BASE_DIR后面, BASE_DIR由/etc/default/useradd中的HOME定义 也可以用useradd -D查看默认一些默认参数的值 目录不一定要存在, HOME_DIR会在需要时被创建 例: sudo useradd -d /home/test test -m 如果用户主目录不存在,则创建用户主目录. /etc/skel 中的文件和目录将会被复制到主目录。 如果没有设置此选项,并且CREATE_HOME没有设置为yes, 则不会创建主目录. -M 不创建用户主目录,即使系统在 /etc/login.defs 中的设置 (CREATE_HOME) 为 yes -g, --gid GROUP 指定用户组,这个组名必须存在, 如果没有指定,useradd的行为将依赖于/etc/login.defs 文件中的USERGROUPS_ENAB参数,如果设置为了yes(或者在命令行上指定了-U/--user-group),将为用户创建一个组,组名和登录用户相同 -G --groups GROUP1[,GROUP2,...[,GROUPN]] 指定用户还属于的附加组列表,每个组都用逗号隔开,中间没有空格. 这些组受到了 -g 选项 对给定组同样的限制.默认情况,用户只属于初始组 -c, --comment COMMENT 关于用户的描述信息,将会出现在/etc/passwd中的一个一个字段中 -s, --shell SHELL 可以指定用户登陆的shell -k, --shel SHEL_DIR 可以指定shel目录,该目录的文件和目录将会被复制到用户主目录, 这个选择只有在指定了-m(或 --create-home)选项时才有效 例如: sudo useradd -M -c "samba user" smb ## /etc/passwd 系统中所有用户的账号信息都保存在/etc/passwd中。 基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。 在早期的UNIX操作系统中,用户账号的密码信息也是保存在passwd文件中的,不法用户可以获取密码字串进行暴力破解, 这样一来账号安全就存在一定的隐患。因此后来将密码转存入专门的shadow文件中,而passwd文件中仅保留密码占位符“x”。 格式: passwd文件的每一行内容中,包括了七个用冒号“:”分隔的配置字段 * 第一字段:用户账号的名称。 * 第二字段:经过加密的用户密码字串,或者密码占位符“x”。 * 第三字段:用户账号的UID号。 * 第四字段:所属基本组账号的GID号。 * 第五字段:comment信息,可填写与用户相关的说明信息。 * 第六字段:主目录,即该用户登录后所在的默认工作目录。 * 第七字段:登录Shell等信息,用户完成登录后使用的Shell。 例如: smb:x:1001:1001:samba user:/home/smb:/sbin/nologin ## /etc/shadow shadow文件又被称为“影子文件”,其中保存有各用户账号的密码信息,因此对shadow文件的访问应该进行严格限制。 默认只有root用户能够读取文件中的内容,而不允许直接编辑该文件中的内容。 /etc/shadow文件的每行由9个字段组成,以":"作为字段分隔符。每个字段的说明: * 用户名(login name)。 * 加密后的密码(形如:`$1$2eWq10AC$NaQqalCk3InEPBrIxjaJQ1`)。 如果密码是"*"或"!",则表示这个不会用这个帐号来登录(通常是一些后台进程)。 * 密码最后修改时间,使用UNIX时间(从1970年1月1日起计算的天数)。 * 密码最短有效天数。如果是0,表示随时可修改密码。如果是N,表示N天后才能修改密码。 * 密码最长有效天数。如果设置为N,则表示N天后必须更新密码。设置为99999通常表示无需更新密码。 * 提前多少天警告用户口令即将过期,默认值为7。 * 密码过期的宽限时间,在密码过期之后的多少天内禁用此用户。 * 帐号失效时间。也是UNIX时间戳格式。默认值为空,表示账号永久可用 * 最后一个字段是保留字段。 例如: `smb:$6$y7PBUv3X$c3g/tGk2QcrKD1VYu6nSRSrHY9kUWEAWbk4r1uMiikql9VW5By0vjlppzRlMAe8tD.zXHkLkt4ug6N1L4jY4g.:16684:0:99999:7:::` shadow文件中的密码格式: `$id$salt$encrypted` id表示hash 算法 | ID | 算法 | | $1$ | MD5 | | $2a$ | Blowfish | | $5$ | SHA-256 | | $6$ | SHA-512 | # 删除账户 useradd userdel OPTIONS UserName -r, --remove 用户主目录和用户邮箱也将一起被删除 # usermod改变用户属性 usermod OPTIONS UserName 选项: -a, --append 添加用户到追加到某些组中,仅与-G选项一起使用。 -G, --groups 指定要添加到组到列表。与-a一起使用. -c, --comment 修改/etc/passwd文件中第五个字段关于账户的描述:comment -d, --home 修改用户的主目录,如果指定了-m, 则当前主目录的内容将会被移动到新的目录中,如果目录不存在,则创建。 -m, --move-home 将用户的主目录移动到新的主目录,必须和-d组合使用才有效果 例如将smb用户加入到组caodan中: sudo usermod -aG caodan smb uid=1001(smb) gid=1001(smb) 组=1001(smb),1000(caodan) # 组管理 ## groupadd添加新的组 /etc/group中的格式如下 group name : password : GID : user lists 例如: ``` smb:x:1001: nm-openconnect:x:126: git:x:1002: mysql:x:127: ``` 新建一个名为wireshark的组 groupadd wireshark $ grep -nr "wireshark" /etc/group $ 72:wireshark:x:1003: option: -g 指定gid, 但是不能与已有的gid重复 -o 如果同时指定了-g, 可以使用一个已经存在的GID 添加一个系统组== groudadd -r 组名 系统组与普通组的区别: /etc/login.defs 系统组的GID 会比/etc/login.defs. 的GID_MIN来的小 。 例如 UID_MIN 为 1000