1. linux的账号与群组

1.1 账户名称:/etc/passwd:

head -n 5 /etc/password  #取前5行
  1. 账号名称,对应UID
  2. 密码,早期是在这里,后来转到了/etc/shadow中,所以这里都是x
  3. UID的范围:0系统管理员,1-99留给系统预设的账号,100-499保留给一些服务来使用 ,500-65535给一般用户
  4. GID这是用户的初始化用户组:使用这一登录系统,就拥有这个群组的相关权限。
  5. 用户说明,基本没用
  6. 用户家目录
  7. 使用的shell,bash shell是linux默认使用的shell

uname -r可以来查找系统核心

1.2 账户密码:/etc/shadow:

head -n 5 /etc/shadow  #取前5行
grep 'root' /etc/shadow |awk '{print substr($0,6,34)}' #取密码段
  1. 账号名称
  2. 密码 采用MD5进行加密的密码,含有$1$的标志的34位密码组,如果密码为*或者!,则表示这个账号无法登陆。
  3. 最近修改密码的日期,以1970年1月1日作为1
  4. 密码不可更改日期,修改之后第几天可以再次修改密码
  5. 密码需要重新更新的天数
  6. 密码需要变更期限前的警告期限
  7. 密码过期的宽限时间
  8. 账号失效日期
  9. 保留

1.3 群用户:/etc/group:

groups #查看所属的用户组,有效用户组为第一个,
newgrp 用户组 #改变用户组
exit #退出当前用户组
  1. 用户组
  2. 密码,为x
  3. 用户组的GID
  4. 该用户组所支持的用户

1.4 群用户密码:/etc/gshadow:

  1. 用户组
  2. 密码,如果为*和!则不可登录
  3. 用户组管理员的账号
  4. 该用户组所属(支持)的用户,与/etc/group内容一样

2. 账号管理

2.1 新增与移除使用者、新增与移除群组:/etc/passwd:

passwd、usermod、useradd这三个命令都是root用户使用的,普通用户不能使用。

新增用户

grep user3 /etc/passwd /etc/shadow /etc/group /etc/gshadow  #查找这四个文件中有user3的部分。

删除用户

修改账号信息

插入图2.1.4

初始化群组和有效群组的改变。

usermod -g test2 -G 502 test1 #-g修改初始化群组,-G修改有效用户组

2.2 密码管理:/etc/passwd:

passwd user #修改密码

2.3 chfn chsh finger id:/etc/passwd:

chsh -s /bin/csh #root也可以用这个改,也可以用usermod
chsh -l #显示当前可用的shell

修改自己的相关信息

chfn #会依次让你修改大名、办公室房间号码、办公室电话号码、家里电话,改变的信息是/etc/passwd的第五栏使用者的信息说明栏

读取修改的信息,也就是用chfn修改的那些东西。

也可以用来查找当前系统的登录信息

id  #uid、gid、所支持的群组。

2.4 新增和移除群组:/etc/passwd:

3. 使用者用户切换

3.1 su:

3.2 sudo visudo:

sudo如果没有制定切换的账号,则默认使用root
sudo -u "#501" touch /home/test2/3.txt#必须用""包括起来。
sudo -u "#501" -p %H ls /home/test2 #完整的主机名称
sudo -u "#501" -p %h ls /home/test2 #主机名称
sudo -u test2 -p %U ls /home/test2 #切换到的账户名称
sudo -u test2 -p %u ls /home/test2 #使用者账户的名称



visudo是用来编辑/etc/sudoers,vi只可以可读。

vigr 编辑/etc/group

vimpw 编辑/etc/passwd

find / -perm -4000 | xargs ls -lhd  #查找系统下所有包含s权限的文件。

4. 使用者的特殊shell与PAM模块

4.1 特殊的shell:

cat /etc/passwd | more

usermod -s /sbin/nologin test1  #给test1指定nologin的shell

vi /etc/nologin.txt #然后输入不可登陆的信息

记录次数

#!/bin/awk -f
BEGIN{
FS=":"
}
{
if ($7=="/bin/bash") bash=bash+1
if ($7=="/sbin/nologin") nologin=nologin+1
}
END{
print "/bin/bash times is :" bash
print "/sbin/nologin times is :" nologin
}

使用bash shell

#!/bin/bash
read -p "please input the /etc/passwd :" path if [ -z "$path" -o "$path" != "/etc/passwd -o ! -e "$path" ];then
fi allshell='cut -d : -f 7 "$path"'
for oneshell in $allshell
do
if [ "$oneshell" = "/bin/bash" ];then
bash=$(($bash+1))
fi
if [ "$oneshell" = "/sbin/nologin" ];then
nologin=$(($nologin+1))
fi
done echo "/bin/bash has $bash times"
echo "/sbin/nologin has $nologin times"

4.2 PAM模块:

在/etc/security/access.conf中加入

  - : test1 : ALL EXCEPT 127.0.0.0/24 #仅限本地登陆,其他的ip都不能登陆。

5. 使用者的特殊shell与PAM模块

5.1 查询使用者:

last -n 5 -d
last -f wtmp2 #默认读取/var/log/wtmp,如果需要指定读另外一个,需加上-f参数

5.2 使用者talk:

mesg y
mesg n
write test1

如果root发送广播信息,即使其他用户关闭信息接收,也会收到信息。

5.3 使用者邮箱:

stty erase ^H
mail -s "this is first test" root@localhost
this is first test

1. linux的账号与群组

6.1 常用的一些命名:

6.2 建立用户流程:

vi /etc/group    #打开/etc/group文件进行编辑
test4:x:505: #加入test4用户组
grpconv #group和gshadow同步
grep test4 /etc/gshadow #查找gshadow,确认已经同步
vi /etc/passwd #打开/etc/passwd文件进行编辑
test4:x:505:505::/home/yesy4:/bin/bash #加入test4用户
pwconv #passwd和shadow同步
grep test4 /etc/shadow #查找shadow,确认已经同步
passwd test4 #输入密码 #输入用户的密码(设置)
mkdir /home/test4 #创建使用者家目录
ls -la /etc/skel #显示/etc/skel下的所有文件
cp -a /etc/skel/.[a-z]* /home/test4 #将/etc/skel下的所有文件都拷贝到使用者家目录中
ls -la /home/test4 #显示使用者家目录的所有文件和属性
chown -R test4:test4 /home/test4 #吧家目录的属性由root改为test4
ls -la /home/test4 #显示使用者家目录的所有文件和属性

vigr /etc/group    #打开/etc/group文件进行编辑
test5:x:505: #加入test5用户组
选择y #进入编辑gshadow
test5:x:: #加入test5用户组密码
vipw /etc/passwd #打开/etc/passwd文件进行编辑
test5:x:505:505::/home/yesy4:/bin/bash #加入test5用户
选择y #进入编辑shadow
test5:!!:14519:0:99999:7:3:: #加入test5shadow密码文件
passwd test4 #输入密码 #输入用户的密码(设置)
mkdir /home/test5 #创建使用者家目录
ls -la /etc/skel #显示/etc/skel下的所有文件
cp -a /etc/skel/.[a-z]* /home/test5 #将/etc/skel下的所有文件都拷贝到使用者家目录中
ls -la /home/test5 #显示使用者家目录的所有文件和属性
chown -R test4:test5 /home/test5 #吧家目录的属性由root改为test5
ls -la /home/test5 #显示使用者家目录的所有文件和属性

6.3 批量建立用户脚本:

建立用户

vi useradd.sh

#!/bin/bash
accountfile=user:passwd
test -e "$accountfile" && rm -f "$accountfile"; touch "$accountfile" || touch "$accountfile"
read -p "please input your zhuanye:" zhuanye
read -p "please input your grade:" grade
read -p "please input the start number:" start_nu
read -p "please input the user number:" user_nu
read -p "please choice passwd stardand:1)same as usernaem 2)random" pwd if [ "$zhuanye" ="" ];then
echo "you should input the zhuanye!!"; exit 1
fi
testing1='echo $grade | grep [^0-9]'
testing2='echo $start_nu | grep [^0-9]'
testing3='echo $user_nu | grep [^0-9]'
if [ "$testing1" !="" -o "$testing2" !="" -o "$testing3" !="" ];then
echo "the grade or start number or user number has include characters!!"; exit 1
fi for ((i=$start_nu;i<$(($start_nu+$user_nu));i++))
do
account=$zhuanye$grade$i
if [ "$pwd" = "1" ];then
password="$account"
else
password=""
test_nu=0
until [ "$test_nu" = "6" ]
do
temp_nu=$(($RANDOM*50/32767+30))
until [ "$test_nu" != "60" ]
do
temp_nu=$(($RANDOM*50/32767+30))
done
temp_ch='printf "\x$temp_nu"'
password=$password$temp_ch
temp_nu=$(($temp_nu+1))
done
fi
echo "$account":"$password" >>"$accountfile"
done
cat "$accountfile" | cut -d ":" | xargs -n 1 useradd
chpasswd < "$accountfile"
pwconv
echo "OK,successful"

删除用户

vi userdel.sh

#!/bin/bash
cat "user:passwd" | cut -d : -f1 | xargs -n 1 userdel -r

linux 基础9-账号与身份管理的更多相关文章

  1. linux基础之用户及用户组管理

    本节内容 用户管理 1. 为什么需要用户? 1.linux是一个多用户系统 2.权限管理(权限最小化) 2. 用户相关文件 /etc/passwd -->用户基本信息 /etc/shadow - ...

  2. 鸟哥的Linux私房菜——第十七章:Linux 账号与身份管理

    视频链接:http://www.bilibili.com/video/av10669732/ 1. Linux 的账号与群组1.1 使用者识别: UID 与 GID1.2 使用者账号:/etc/pas ...

  3. Linux基础学习笔记5-软件管理

    包管理器 二进制应用程序的组成部分: 二进制文件.库文件.配置文件.帮助文件 程序包管理器: debian:deb文件.dpkg包管理器 redhat:rpm文件.rpm包管理器 rpm:Redhat ...

  4. Linux基础学习笔记2-文件管理和重定向

    本节内容 1)文件系统结构元素 2)创建和查看文件 3)复制.转移和删除文件 4)软和硬链接 5)三种I/O设备 6)把I/O重定向至文件 7)使用管道 文件系统和结构 文件系统 文件和目录被组织成一 ...

  5. Linux 基础教程 35-软件包管理-YUM

    YUM基础     使用RPM在Linux中安装.卸载软件或服务进会经常碰到RPM包的依赖,而我们在安装软件A时,提示依赖于软件B,安装软件B时又会出现提示依赖于软件C等一系列的依赖关系.这时大家会提 ...

  6. Linux 基础教程 34-软件包管理-RPM

        对于Linux而言管理各类软件,如安装.卸载和升级等是常有的事情和必备的技能.以CentOS为例,常用的安装包命令有rpm和yum. RPM基础     RPM(RedHat Package ...

  7. Linux基础3(用户/组管理,rpm,yum,源码安装软件)

    用户管理 与用户相关的配置文件 /etc/passwd /etc/shadow /etc/skel /etc/defalut/useradd /etc/login.defs useradd userm ...

  8. Linux基础: 网络命令和进程管理

    ​  netstat lsof ps pstree pkill/kill (了解jenkins git,排查环境) 查询服务器之间是否有链接(netstat -an) 某个服务是否启动(了解服务对应的 ...

  9. linux基础 用户(组)管理

    修改/etc/shadow文件 1.chage -m MINDAYS USERNAME#设置密码修改最小天数2.chage -M MAXDAYS USERNAME#设置密码修改最大天数3.chage ...

随机推荐

  1. iOS推送证书上传(转)

    iOS 推送证书制作(JAVA/PHP) 在使用Java或者PHP制作iOS推送服务器的时候,需要自己从开发者网站上导出的aps_developer_identity证书和Apple Developm ...

  2. maven生命周期及每个阶段自动关联的插件

    生命周期Lifecycle http://maven.apache.org/ref/3.6.1/maven-core/lifecycles.html#default_Lifecycle clean 包 ...

  3. python set集合(16)

    在python变量中除了以前文章所提到的整形int / 浮点数float / 布尔值bool / 列表list / 字典dict 之外,还有一个类型我们还没有做详细介绍,这个变量类型就是集合set. ...

  4. [转帖]hive与hbase的联系与区别:

    https://www.cnblogs.com/xubiao/p/5571176.html 原作者写的很好.. 这里面简单学习总结一下.. 都是bigdata的工具, 都是基于google的bigta ...

  5. Spring 启动加载资源到内存

    前言 在一些业务场景中,当容器初始化完成之后,需要处理一些操作,比如一些数据的加载.初始化缓存.特定任务的注册等等.我找到了三种方式解决下面的问题. 1.使用PostConstruct注解 这种解决方 ...

  6. 《Mysql - 优化器是如何选择索引的?》

    一:概念 - 在 索引建立之后,一条语句可能会命中多个索引,这时,索引的选择,就会交由 优化器 来选择合适的索引. - 优化器选择索引的目的,是找到一个最优的执行方案,并用最小的代价去执行语句. 二: ...

  7. ARTS第七周打卡

    Algorithm : 做一个 leetcode 的算法题 ////////////////////////////////////////////////////////////////////// ...

  8. Bean的三种实例化方式

    在面向对象程序中,如要使用某个对象,就需要先实例化这个对象.同样的,在Spring中,要想使用容器中的Bean,也需要实例化Bean.实例化Bean有三种方式,分别是:构造器实例化.静态工厂实例化.实 ...

  9. Django路由配置

    Django路由配置系统.视图函数 1.路由配置系统(URLconf) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是 ...

  10. S03_CH12_基于UDP的QSPI Flash bin文件网络烧写

    S03_CH12_基于UDP的QSPI Flash bin文件网络烧写 12.1概述 为了满足不同的需求,本例程在"基于TCP的QSPI Flash bin文件网络烧写"上进行修改 ...