管理用户和组账户,passwd字段意义
来源:互联网 发布:美国国籍 知乎 编辑:程序博客网 时间:2024/05/18 18:21
几个重要文件 (熟记!)
- /etc/passwd 用来存放用户帐号信息 passwd-
- /etc/shadow 用来存放密码信息 shadow-
- /etc/group 存放组信息的 group-
- /etc/login.defs 存放新建用户的时候的一些默认规则(配置文件,相当于一个政策文件) default 默认、缺省
- /etc/skel 存放新建用户的时候的一些样板文件的
diff 文件差异对比命令
diff—-》-uNr
-u:统一的格式显示差异
-N:2个目录进行对比的时候,如果有不存在的文件,diff就会使用一个空文件和对方存在的文件进行一行一行的对比,生成补丁 。
-r:递归对比,因为文件夹下面还有文件,一级一级的对比,将所有的文件都对比一次。
PS:
- 一个用户可以属于多个组—》韦小宝属于朝廷、天地会、神龙教、五台山;
- 一个组内可以有多个用户 —》武当派–》武当7侠
- 每个账户有一个唯一的UID (user identifier)–》身份证
- 每个组也有一个唯一的GID (group identifier) –》组织代码
- 多个账户可以属于同一个组
问:到底是用户先存在还是组先存在?
答:先有组再有用户 !
观察系统日志:
1.在一个终端里:
# tailf /var/log/secure 查看文件末尾的信息 (tailf=tail -f)Dec 17 19:18:39 localhost useradd[8002]: new group: name=chenjialuo, GID=508Dec 17 19:18:39 localhost useradd[8002]: new user: name=chenjialuo, UID=508,GID=508, home=/home/chenjialuo, shell=/bin/bash
ctrl+c 强制终止退出
2.再开启另外一个终端:
# useradd chenjialuo
- 新建用户的时候如果不指定组,会自动新建一个与用户名同名的组 ;
- 默认情况下普通用户的家目录在/home目录下 ;
- root用户的家目录在/root 。
useradd 命令
- -g 指定用户属于哪个组
# useradd -g chaoting weixiaobao 指定用户属于那个组,组要已建立。
id 命令
# id weixiaobao 查看weixiaobao的用户信息uid=509(weixiaobao) gid=509(chaoting) groups=509(chaoting)
是不是所有的组,都需要新建?
答:并不是。系统里的内置组(root bin 等) 就不需要。
/etc/group
# diff /etc/passwd /etc/passwd-55d54< fengdeyong:x:808:808::/home/fengdeyong:/bin/bash
- 新建用户的时候,会把这个用户之前新建的其他用户的信息保存到passwd-和shadow-文件里,但是,最新新建的用户不写到passwd-和shadow-文件里。
- 在系统里真正识别用户的是看用户的UID和GID。
# useradd chenzhinan新建用户的时候没有指定属于那个初始组,系统会自动建立一个和用户名同名的组。并且将这个用户加入到同名组。# id chenzhinanuid=505(chenzhinan) gid=505(chenzhinan) 组=505(chenzhinan)
useradd 添加注释信息 -c
# useradd zhangwuji -c "mingjiao zhangmen shuaige" 添加用户zhangwuji,并且添加注释信息
/etc/passwd文件详解(☆☆☆☆☆)
# cat /etc/passwdzhangwuji:x:520:521:mingjiao zhangmen shuaige:/home/zhangwuji:/bin/bash
- 字段1:用户帐号的名称;
- 字段2:用户密码字串或者密码占位符“x”;
- 字段3:用户帐号—》UID号;
- 字段4:用户所属基本组帐号—》GID号;
- 字段5:用户注释说明;
- 字段6:宿主目录(家目录);
- 字段7:登录Shell信息。
# echo $SHELL 查看系统里默认的shell/bin/bash# cat /etc/shells 查看系统里其他的shell/bin/sh/bin/bash/sbin/nologin 如果哪个用户的shell是此shell,那个用户是不能登录系统的/bin/dash/bin/tcsh/bin/csh# sh --》使用sh 这个shellsh-4.1#sh-4.1# exitexit
用户类型
- ①超级用户:root,uid是0
- ②程序用户:实现特定的功能(开启ftp服务、http服务、关机、mysql服务等),但是一般不能登录系统。uid在1-499之间。程序用户体现价值所在:启动服务和访问服务 。
- ③普通用户:使用useradd命令新建的用户,一般uid从500开始,每新建一个用户,uid会自动加1 。
挂载系统光盘安装软件
1.检查系统的版本
# cat /etc/issueRed Hat Enterprise Linux Server release 6.5 (Santiago)Kernel \r on an \m
2.将对应系统的镜像文件放入虚拟机的光驱里
3.挂载镜像文件到/mnt
# mount /dev/cdrom /mntmount: block device /dev/sr0 is write-protected, mounting read-only# ll /dev/cdromlrwxrwxrwx 1 root root 3 Dec 16 00:08 /dev/cdrom -> sr0
4.进入/mnt挂载点目录
# cd /mnt# cd Packages/# rpm -ivh ftp-0.17-54.el6.x86_64.rpm# rpm -ivh lftp-4.0.9-1.el6.x86_64.rpm# rpm -ivh tree-1.5.3-2.el6.x86_64.rpmwarning: tree-1.5.3-2.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEYPreparing... ########################################### [100%] 1:tree ########################################### [100%]rpm 是安装软件的命令-ivh 安装选项 installftp-0.17-54.el6.x86_64.rpm 需要安装的软件包的名字
例子
shell是/sbin/nologin 的用户是不能登录系统的# cat /etc/passwd|grep yyyyyy:x:518:519::/home/yyy:/sbin/nologin
PS:
正常能登录系统的用户需要设置密码,并且shell不是/sbin/nologin /sbin/shutdown 应该推荐的shell为/bin/bash
ssh远程和su两种方式切换用户的区别
①远程ssh方式登录系统,需要输入用户的密码。
# ssh xiaoniu@127.0.0.1
使用xiaoniu这个用户登录本机127.0.0.1代表本地回环接口ip
xiaoniu@127.0.0.1’s passwo$exit 退出登录置密码的用户也是不能登录系统的
②# su - xiaoniu
本地直接切换用户登录系统,不需要密码,因为你是从管理员切换到xiaoniu的
$ ls$ exitlogout
开启一个进程会打开一个端口号,一直监听这个端口号的进程,就叫守护进程
查看端口
# lsof -i :80 查看80端口被那个程序占用(apache用户启动httpd进程)
/etc/shadow 用来存放密码信息(☆☆☆☆☆)
- 字段1:用户帐号的名称 *
- 字段2:加密的密码字串信息 *
- 字段3:上次修改密码的时间 以1970-1-1基准日期;
- 字段4:密码的最短有效天数,默认值为0;
- 字段5:密码的最长有效天数,默认值为99999;
- 字段6:提前多少天警告用户口令将过期,默认值为7;
- 字段7:在密码过期之后多少天禁用此用户;
- 字段8:帐号失效时间,默认值为空;
- 字段9:保留字段(未使用)
# tail -2 /etc/shadowzhangwuji:!!:15843:0:99999:7:::xuzhu:!!:15843:0:99999:7:::!!说明zhangwuji和xuzhu没有设置密码* 也是说明没有设置密码如果密码字段前加入!! 就是禁用此用户。禁用的用户是不能登录系统的。但是可以使用root用户su 方式切换过去。
怎么查看用户xiaoniu所属的组??
答:
①cat /etc/passwd |grep xiaoniu②id xiaoniuuid=508(aochuanfei) gid=508(shaolin) 组=508(shaolin)
组:
主要组(初始组)
次要组(附属组)
一个用户可以属于多个组
用户的主要组的名称和GID相关
# groupadd shaolin 新建组shaolin# groupadd futoubang 新建组futoubang# useradd -g shaolin -G futoubang aochuanfei--》新建用户aochuanfei (-g)指定初始组为shaolin (-G)附属组为futoubang
/etc/gshadow (存放组密码的,很少使用)
/etc/login.defs 配置文件(相当于一个政策文件)
对账户初始的属性设置
设置普通用户的UID和GID范围等
uid范围默认500-60000,除非指定99999,否则超不过默认最高60000;gid范围同uid
扩展知识:
用户量特别大的时候?多台linux服务器集中认证,用户可以在任何台机器上登录?
答:集中认证—》Ldap技术(现有的技术,开源、非常成熟的解决方案)–》采用数据库存储用户名和密码。
/etc/login.defs 文件详解
# cat /etc/login.defs |grep -v ^#|grep -v ^$MAIL_DIR /var/spool/mail --》用户的邮箱目录,邮箱名字与用户名同名PASS_MAX_DAYS 99999 --》/etc/shadow文件里的内容已经在这里定义了PASS_MIN_DAYS 0PASS_MIN_LEN 5PASS_WARN_AGE 7UID_MIN 500 --》/etc/passwd文件UID已经安排了范围UID_MAX 60000GID_MIN 500GID_MAX 60000CREATE_HOME yes --》默认情况下给用户新建家目录---》/homeUMASK 077USERGROUPS_ENAB yes --》删除组的时候,要求组里没有用户存在ENCRYPT_METHOD SHA512 --》采用SHA512这种加密算法进行密码的加密
# cd /var/spool/mail/ 邮箱目录
/etc/skel/*(样板文件和目录) (解决误删除家目录)
作用:存放用户登录系统需要的最基本的一些配置文件。
- .gnome2 -》是用来存放与图像界面相关程序文件信息的;
- .bash_logout -》每次系统注销的时候,会执行这个文件里的命令。
- .bashrc -》用户登录系统以后,每次打开终端都会执行这个文件里的命令(run command);
- .bash_profile -》用户每次登录时执行。
.bashrc文件内容:
alias rm=’rm -i’
alias cp=’cp -i’
alias mv=’mv -i’
alias c=clear
#定义别名,系统重新启动后,照样可以使用,因为root用户登录系统的时候会执行这个脚本文件里的命令# Source global definitionsif [ -f /etc/bashrc ]; then --》判断/etc/bashrc文件是否存在 . /etc/bashrc --》执行/etc/bashrc这个脚本文件fi# User specific environment and startup programs
PATH=$PATH:$HOME/bin #定义PATH变量export PATH #输出PATH为全局变量,所有的程序都可以使用
.emacs 是emacs文本编辑器的一个配置文件(gedit、emacs、vim、vi),打开emacs编辑器的时候会加载此文件里的配置[root@localhost skel]# vim /root/.vimrc[root@localhost skel]# cat /root/.vimrc vim编辑器每次打开的时候,都会运行这个文件里的配置set nuset cursorline[root@localhost skel]#
TTY(终端类型)
TTY (terminal type) 银行 公务员 (正式 临时工)
每次新建用户的时候,都会从/etc/skel目录下复制全部文件到用户的家目录下
# useradd madehua# cd /home/madehua/# ls -a. .bash_logout .bashrc .mozilla.. .bash_profile .gnome2
误删除家目录文件后。。。
删除家目录下的所有配置文件# cd /home/madehua/# ls -a. .bash_logout .bashrc .mozilla.. .bash_profile .gnome2# rm -rf .* 删除rm: cannot remove directory: `.'rm: cannot remove directory: `..'# su - madehua 切换用户登录系统-bash-4.1$ 就是没有执行.bashrc .bash_profile脚本导致的-bash-4.1$-bash-4.1$# ssh madehua@10.0.0.253 远程登录madehua@10.0.0.253's password:-bash-4.1$ pwd/home/madehua 进入家目录了,没有执行用户配置文件,没有加载相关的环境变量-bash-4.1$ 临时分配的shell
history 命令
查看最近1000条使用过的命令。
- history 命令只是查看当前用户的历史操作命令。
- .bash_history
用来存放历史命令的,上一次注销前在系统里使用的命令,可以通过这个文件查看别的用户登录系统时,使用过的命令。只要它一注销linux,系统就会把用户使用过的命令自动存到它的家目录下的 .bash_history。
为什么是只能存1000条?
/etc/profile --->HISTSIZE=1000 定义了系统里很多的环境变量
history -c 清除历史命令
常用在 .bash_logout 文件中添加
打扫行踪,不让人家知道你使用过那些命令
- history -c
- rm -rf /root/.bash_history
- 在/root/.bash_logout 文件里添加 history -c
[baigujing@chinaitsoft ~]$ cat .bash_logout# ~/.bash_logoutrm -rf ~/.bash_historyhistory -c
解决误删除方法
[root@teacher madehua]# cp /etc/skel/.bash* ./ 拷贝模板文件到家目录下[root@teacher madehua]# ls -a. .. .bash_history .bash_logout .bash_profile .bashrc[root@teacher madehua]# su - madehua[madehua@teacher ~]$ 显示正常的提示符号了
useradd命令
格式:useradd [选项]. .. 用户名
常用命令选项
- -u:指定 UID 标记号
- -d:指定宿主目录,缺省为 /home/用户名
- -e:指定帐号失效时间
- -g:指定用户的基本组名(或UID号)(初始组) –》 主要组
- -G:指定用户的附加组名(或GID号) —》次要组
- -M:不为用户建立并初始化宿主目录(家目录)
- -s:指定用户的登录Shell
- -m, –create-home 创建家目录
- -c, –comment COMMENT 用户注释信息
- -r 新建一个系统用户 (uid 1-499) —》程序用户 —》不建家目录 新建的系统用户和-M选项建立的用户都没有家目录
备份文件:
/etc/passwd-
/etc/shadow-
/etc/group-
练习:手动新建用户
1.修改/etc/passwd
[root@teacher ~]# tail -1 /etc/passwdzhugeliang:x:888:888:liubei junshi:/xiangyang/liongzhong:/bin/bash[root@teacher ~]#
2.修改/etc/shadow
[root@teacher ~]# vim /etc/shadow[root@teacher ~]# tail -1 /etc/shadow #密码为空zhugeliang::15849:0:99999:7:::[root@teacher ~]#
3.修改/etc/group
[root@teacher ~]# vim /etc/group[root@teacher ~]# tail -1 !$ !$代表上一次的路径参数tail -1 /etc/group #注意和passwd文件里gid一致zhugeliang:x:888:
4.新建家目录
[root@teacher ~]# mkdir /xiangyang/liongzhong -p
5.从/etc/skel目录下复制配置文件
[root@teacher liongzhong]# cp /etc/skel/.bash* ./[root@teacher liongzhong]# ls -a. .. .bash_logout .bash_profile .bashrc
6.验证:
[root@teacher liongzhong]# su - zhugeliang[zhugeliang@teacher ~]$ pwd/xiangyang/liongzhong[zhugeliang@teacher ~]$ id zhugelianguid=888(zhugeliang) gid=888(zhugeliang) groups=888(zhugeliang)
passwd命令
格式:passwd [选项]… 用户名
常用命令选项
- -d:清空用户的密码,使之无需密码即可登录delete
- -l:锁定用户帐号 lock
- -S:查看用户帐号的状态(是否被锁定) status
- -u:解锁用户帐号unlock
- –stdin:接收标准输入作为密码
root用户可以修改所有用户密码,不要求密码复杂性。
普通用户只能改自己的密码,要求密码复杂性。
不接用户名,是给自己设置密码。
一个人有多重身份的时候:
- newgrp 改变有效组(主要组)。用户必须是要改变组的成员
- gpasswd
- -a 给用户添加一个附属组·-
- -d 给用户移除附属组
- -M 批量给用户添加到附属组
selinux –》保护系统安全的机制
getenforce 查看linux的状态①setenforce 0 临时关闭selinux的策略②SELINUX=disabledvim /etc/sysconfig/selinux (永久生效,需要重启系统才能永久生效)
userdel命令
格式:userdel [-r] 用户名
- -r 选项,表示连用户的宿主目录和邮箱一并删除
usermod命令
格式:usermod [选项]… 用户名
常用命令选项
- -l:更改用户帐号的登录名称
- -L:锁定用户账户
- -U:解锁用户账户
- -u、-d、-e、-g、-G、-s(这些选项与useradd命令中的含义相同)
groupmod :
修改组的信息,其实可以直接去修改/etc/group和/etc/passwd文件
[root@teacher home]# groupadd -g 999 zhugeliang123[root@teacher home]# usermod -u 999 -g 999 zhugeliang[root@teacher home]# id zhugelianguid=999(zhugeliang) gid=999(zhugeliang123) groups=999(zhugeliang123)[root@teacher home]#
[root@teacher home]# groupdel gaibang 删除组的时候,组内不能有用户groupdel: cannot remove the primary group of user 'zhouxingchi'
who命令
[root@teacher vnc]# whoroot tty3 2013-05-24 20:59root tty1 2013-05-24 08:29 (:0)root pts/0 2013-05-24 08:29 (:0.0)root pts/1 2013-05-24 08:29 (:3.0)root pts/2 2013-05-24 09:39 (:3.0)root pts/4 2013-05-24 20:59 (:3.0)
- tty3 tty1是登录的终端号 (ctrl+alt+F1-F6) 就是tty1-tty6
- pts/1 pts/2 是在图形界面打开的终端
- (:0) 当前图形界面下
- (:3) 在3号桌面图形界面下
w命令
查看当前系统有多少用户登录,并且正在使用的命令。
$ w 21:04:56 up 12:38, 7 users, load average: 0.07, 0.03, 0.00当前的时间 机器开机多长时间 登录用户数 cpu的平均负载 1分钟 5分钟 15分钟USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot tty3 - 20:59 4:57 0.00s 0.00s -bashroot tty1 :0 08:29 4:38m 1:41 1:41 /usr/bin/Xorg :0 -root pts/0 :0.0 08:29 12:35m 30:47 0.00s bashroot pts/1 :3.0 08:29 0.00s 51:01 0.00s ssh lirong@10.0.0.root pts/2 :3.0 09:39 1:06m 0.00s 0.00s bashroot pts/4 :3.0 20:59 5:27 0.00s 0.00s bashlirong pts/6 10.0.0.253 21:04 0.00s 0.00s 0.00s w 登录时间 登录的用户在使用什么命令
- :0 说明是本机连接0号桌面,默认情况下进入图形界面,就是0号桌面
- :3 说明是本机连接的3号桌面
- 10.0.0.253 从远程ip为10.0.0.253的机器连接到本机
查看系统开机多久: w、uptime、top
手工给用户设置密码:
[root@teacher lianxi]# cat aa.txt 编辑一个文件,里面的语法是username:passwordsxjy:123 #sxjy是用户名 123是密码[root@teacher lianxi]#[root@teacher lianxi]# chpasswd <aa.txt 将aa.txt里规划的密码写入到/etc/passwd文件里的密码字段[root@teacher lianxi]# pwconv 作用将/etc/passwd文件里的密码字段转换写到/etc/shadow里,形成相应用户的密码信息
- 管理用户和组账户,passwd字段意义
- 用户和组账户管理
- SA1-Linux管理用户和组账户
- linux入门(用户和组账户管理)
- Linux 学习(七)--- 用户和组账户管理
- 5、 Linux用户和组账户管理:用户的管理、组管理
- Linux用户和组管理 passwd和shadow,groupadd ,useradd,usermod,su,sudo用法
- linux用户和组管理,/etc/passwd 、/etc/shadow和/etc/group 文件内容解释
- 创建和管理数据库用户账户
- UNIX基础--用户和基本账户管理
- 用户账户的创建和管理
- Linux用户和用户组管理-用户管理命令passwd/usermod/chage/userdel/su***用户组管理命令
- linux 用户账户管理
- MySQL用户账户管理
- Oracle EBS的用户账户和Oracle OID中的账户关联字段
- Linux 用户管理基础 passwd shadow group
- Linux管理用户与用户组----passwd
- linux用户管理服务器的账户和邮箱
- QT程序图标和窗口图标
- mybatis延迟加载
- 设计模式的六大原则
- guava实现内存缓存
- webpack的使用
- 管理用户和组账户,passwd字段意义
- QGC地图中2点连线
- JS——面向对象实例
- 马跳日
- 1134. Vertex Cover (25)
- "页面跳转"实例详解"SpringMVC注解"的作用与用法
- iOS 处理二叉树数据 实现多级表格
- Mybatis
- 动态规划——最优二叉查找树