linux 用户和组管理相关的命令
用户管理
useradd 建立用户帐号
语 法:useradd [options] LOGIN
参 数:
- -u UID: [UID_MIN, UID_MAX]定义在/etc/login.defs
- -o 配合-u 选项,不检查UID的唯一性
- -g GID:指明用户所属基本组,可为组名,也可以GID
- -G GROUP1[,GROUP2,...]:为用户指明附加组,组必须事先存在
- -c "COMMENT":用户的注释信息
- -d HOME_DIR: 以指定的路径(不存在)为家目录
- -s SHELL: 指明用户的默认shell程序, 可用列表在/etc/shells文件中
- -m 自动建立用户的登入目录。
- -M 不要自动建立用户的登入目录。
- -N 不创建私用组做主组,使用users组做主组
- -r: 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000
例如:创建testuser uid 1234,主组:bin,辅助组:root,ftp,shell:/bin/csh home:/testdir/testuser [[email protected] ~]# useradd testuser -u 1234 -g bin -G root,ftp -s /bin/csh -d /testdir/testuser [[email protected] ~]# getent passwd testuser testuser:x:1234:1::/testdir/testuser:/bin/csh [[email protected] ~]# groups testuser testuser : bin root ftp
补充
默认值设定:/etc/default/useradd文件中
显示或更改默认设置:
/etc/default/useradd
useradd -D
useradd –D -s SHELL类型[[email protected] ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes其中SKEL 家目录中的文件来源 模板文件夹
创建新的用户就会自动copy中的内容
系统账号的家目录和邮箱不会自动创建
usermod 修改用户参数的各项设定
用 法:usermod [选项] 登录
参 数:
- -u UID: 新UID
- -g GID: 新基本组
- -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append;
- -s SHELL:新的默认SHELL;
- -c ‘COMMENT‘:新的注释信息;
- -d HOME: 新家目录不会自动创建,原家目录中的文件不会同时移动至新的家目录;若要创建新家目录并移动原家数据,同时使用-m选项
- -l login_name: 新的名字;
- -L: lock指定用户,在/etc/shadow 密码栏的增加 !
- -U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
- -e YYYY-MM-DD: 指明用户账号过期日期;
- -f INACTIVE: 设定非活动期限
补充:默认新创建的用户不设密码时密码栏为"!!"
例如:修改testuser uid:4321,主组:root,辅助组:nobody,loginname:test,home:/home/test 家数据迁移
[[email protected] ~]# usermod testuser -u 4321 -g root -G nobody,loginname,test -md /home/test [[email protected] ~]# getent passwd testuser testuser:x:4321:0::/home/test:/bin/csh [[email protected] ~]# groups testuser testuser : root nobody loginname test
userdel 删除用户
选 项
- -r: 删除用户家目录;
用户组管理
groupadd创建用户组
语法:groupadd [OPTION]... group_name
选项:
- -g GID: 指明GID号;[GID_MIN, GID_MAX](默认上一个ID号加 1)
- -r: 创建系统组;
- CentOS 6: ID<500
- CentOS 7: ID<1000
groupmod 修改用户组
语 法:groupmod [OPTION]... group
选 项:
- -n group_name: 新名字
- -g GID: 新的GID
groupdel 删除组
用 法:groupdel 组名
groupmems 更改组成员
语法:groupmems [options] [action]
选项:
-g, --group groupname 更改为指定组 (只有root)
第二选项
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有除主组的成员
-l, --list 显示组成员列表添加用户hello至qzx组 [[email protected] ~]# groupmems -g qzx -a hello [[email protected] ~]# groups hello hello : hello qzx 从qzx组中指定删除hello用户 [[email protected] ~]# groupmems -g qzx -d hello [[email protected] ~]# groups hello hello : hello 显示组中其他成员列表 [[email protected] ~]# groupmems -l -g qzx hello
groups 查看用户所属的组列表
用法:groups 用户名
[[email protected] ~]$ groups oracle oracle : oinstall dba oper asmadmin
newgrp 临时切换基本组
如果用户本不属于此组,则需要组密码一般组没有组密码的话就不能切换
[[email protected] ~]$ touch qzxss [[email protected] ~]$ ll 总用量 4 -rw-rw-r--. 1 qzx qzx 121 7月 28 19:43 help.test -rw-rw-r--. 1 qzx qzx 0 8月 2 11:01 qzxss [[email protected] ~]$ newgrp gentoo 密码: [[email protected] ~]$ touch qazxs [[email protected] ~]$ ll 总用量 4 -rw-rw-r--. 1 qzx qzx 121 7月 28 19:43 help.test -rw-r--r--. 1 qzx gentoo 0 8月 2 11:01 qazxs -rw-rw-r--. 1 qzx qzx 0 8月 2 11:01 qzxss
密码管理
passwd 设置密码
一般用法:
passwd [OPTIONS] UserName: 修改指定用户的密码,仅root用户
passwd: 修改自己的密码
常用选项:
- -l:锁定指定用户
- -u:解锁指定用户
- -e:强制用户下次登录修改密码
- -n mindays: 指定最短使用期限
- -x maxdays:最大使用期限
- -w warndays:提前多少天开始警告
- -i inactivedays:非活动期限;
- --stdin:从标准输入接收用户密码;
- echo "PASSWORD" | passwd --stdin USERNAME
passwd和group的编写与检查
编写时验证vipw和vigr
编写后验证pwck和grpck
chage 修改用户密码策略
语法:chage [OPTION]... LOGIN
选项:
- -d LAST_DAY
- -E, --expiredate EXPIRE_DATE
- -I, --inactive INACTIVE
- -m, --mindays MIN_DAYS
- -M, --maxdays MAX_DAYS
- -W, --warndays WARN_DAYS
- –l,显示密码策略
下一次登录强制重设密码 hage -d 0 tom chage -m 0 –M 42 –W 14 –I 7 tom chage -E 2016-09-10 tom
gpasswd 更改用户的组密码
语法:gpasswd [OPTION] GROUP
选项:
- -a user: 将user添加至指定组中;
- -d user: 从指定组中移除用户user
- -A user1,user2,...: 设置有管理权限的用户列表
另外个常用命令 getent 和 id
gentent 用法
getent [passwd,shadow group gshadow] 用户或组名
用来提取/etc下passwd,shadow group gshadow中对应用户或组的那一行!!
[[email protected] ~]# getent group qzx qzx:x:500:hello [[email protected] ~]# getent passwd hello hello:x:4322:4322::/home/hello:/bin/bash
id 查看用户相关的ID信息
选项:
- -u: UID 查看用户的UID
- -g: GID 查看用户的基本组id
- -G: Groups 查看用户的所有属组id
- -n: Name
直接 id 用户名查看用户的相关信息 [[email protected] ~]# id qzx uid=1000(qzx) gid=1000(qzx) 组=1000(qzx),1(bin),4001(gentoo) 查看qzx用户的所有属组ID [[email protected] ~]# id -G qzx 1000 1 4001
批量创建用户
newusers passwd格式文件
批量创建用户
cat p.txt | chpasswd
批量修改用户口令
用户相关的其它命令
finger 命令格式:
finger [-lmsp] [user ...] [[email protected] ...]
说明:
描述
The finger 显示关于系统用户的信息
参数:
-s Finger 显示用户的登录名, 真名, 终端名 以及写状态(如果写被禁止,在终端名后显示一个``*‘‘), 空闲时间,登录时间,办公地点和电话等。
登录时间显示为月,天,小时和分钟,如果是超过6个月以前,则显示年份,而不是小时和分钟。
不明设备以及不存在的空闲时间和登录时间显示为一个星号。
-l 产生一个多行显示来描述信息 -s 关于用户家目录,家庭电话,登录脚本, 邮件状态和文件的内容.plan‘‘ 和
.project‘‘ 和.forward‘‘ 从用户的家目录. 11位数字电话号码显示为
+N-NNN-NNN-NNNN‘‘. 十位或七位数字可以显示为它的子集。五位数字电话号码显示为xN-NNNN‘‘. 四位数字电话号码显示为
xNNNN‘‘.
如果对设备写被禁止, 短语(messages off)‘‘ 被附加在有此设备的行后边. 每一个用户有一个条目,用 -l 选项; 如果一个用户多次登录, 终端信息按每次登录重复显示。 如果什么邮件都没有,邮件信息显示为
No Mail.‘‘, 如果当新邮件来后,已经查看过信箱,为Mail last read DDD MMM ## HH:MM YYYY (TZ)‘‘ 如果有新邮件,则为
New mail received ...‘‘,Unread since ...‘‘ -p 防止 finger -l 选项显示
.plan‘‘和.project‘‘ 文件的内容。 -m 防止 user 名字的匹配. User 通常是一个登录名; 可是, 也会对用户的真实名字进行匹配, 除非提供 -m 选项. 所有由 finger 进行的名字匹配是区分大小写的 不指定 finger 的选项如果提供操作者的话,缺省设为 -l 输出风格,否则为 -s风格. 注意在两种格式中,如果信息不足,都有一些域可能丢失,如果没有指定参数 finger 会为当前登录的每个用户打印一个条目. Finger 可以用来查看远地机器上的用户信息格式是指定 user 为
[email protected]‘‘,或 ``@host‘‘, 前者的缺省输出为 -l 风格, 后者的缺省输出为 -s 风格. -l 是唯一的向远地机器传递的选项.
这里引用了http://blog.sina.com.cn/s/blog_7acf472901011m33.html
[[email protected] ~]# finger qzx Login: qzx Name: qzx Directory: /home/qzx Shell: /bin/bash Office: qqqwqq, 123456789 Home Phone: 987654321 Last login 二 8月 2 10:56 (CST) on pts/1 New mail received 四 7月 28 19:30 2016 (CST) Unread since 三 7月 20 00:52 2016 (CST) No Plan.
其他一些切换信息
chvt
chsh:切换用户的默认shell
chfn:指定个人信息
[[email protected] ~]# chfn qzx Changing finger information for qzx. 名称 [qzx]: qzx 办公 []: qqqwqq 办公电话 []: 123456789 住宅电话 []: 987654321