Linux-用户与组群

用户

  1. 类型:
    超级用户:root拥有计算机系统的最高权限。UID和GID为0。
    系统用户:自动创建与系统服务相关的用户UID和GID为1~499。
    普通用户:由超级用户创建,只能操作拥有权限的文件和目录并管理自己启动的进程。 UID和GID从500开始。
  2. 属性:
    用户名、口令、 UID 、GID、用户主目录(/home/用户名)、全称、登录Shell

/etc

1、/etc/passwd

用户帐号信息文件/etc/passwd
用户名:加密的口令:UID:GID:用户全名或描述:主目录:登陆shell
提示:若要禁用某个用户账号,可以在该用户账号对应的行的行首添加“*”或者将用户的shell设置为nologin。

2、/etc/shadow

用户口令信息文件/etc/shadow 影子文件
username:password:lastchg:min:max:warn:inactive:expire:flag
*和!代表账号密码被锁定,不能登录。

  1. username:用户登录名
    password:加密的用户口令
    lastchg:表示从1970年1月1日起到上次修改口令所经过的天数
    max:表示口令还会有效的最大天数,如果是99999则表示永不过期
    warn:表示口令失效前多少天内系统向用户发出警告
    inactive:表示禁止登录前用户名还有效的天数
    flag:保留域,暂未使用

3、/etc/group

组群帐号信息文件 /etc/group
组群名称;组群密码; GID ;用户列表 (每个用户之间用,号分割;本字段可以为空;如果字段为空表示组群为GID的用户名; )

4、 /etc/gshadow

组群口令信息文件 /etc/gshadow
/etc/gshadow文件跟/etc/shadow文件类似,根据/etc/group文件而产生,主要用于保存加密的组群口令,只有超级用户才能查看/etc/gshadow文件的内容。

5、使用pwck和grpck命令验证用户和组文件

· 与pwck命令相类似,grpck命令的作用是检验/etc/group和/etc/gshadow数据项中每个域的格式以及数据的正确性,并对组账号文件(/etc/group)及其影子文件(/etc/gshadow)的一致性进行校验。如果发现错误,该命令将会提示用户对出现错误的数据项进行修改或删除。

管理用户和组群的Shell命令

1、用户可以使用下列指令了解用户身份

  1. who:查询当前在线的用户
  2. groups [用户名]:查询用户所属的组
  3. id:显示当前用户信息
  4. finger:查询用户信息

2、useradd命令:新建用户帐号

格式:useradd [选项] 用户名
功能:新建用户帐号,超级用户命令
-g 组群ID|组群名、
-G 组群ID|组群名、
-u 用户ID
-c 全名(comment)、
-d 主目录(directory)、
-e 有效期限(expire)、
之后可以查看/etc/passwd与/etc/group发生的变化

3、系统添加用户的标准步骤

  1. 编辑/etc/passwd与/etc/group
  2. 创建用户主目录
  3. 从/etc/skel拷贝文件与目录
  4. 让新用户获得其主目录与文件的拥有权限

4、passwd命令:设置或修改用户的口令以及口令的属性。

  1. 格式:passwd [选项] [用户]
  2. 功能:设置或修改用户的口令以及口令的属性。(与/etc/shadow结合)
  3. -d 用户名(delete)、
    -l 用户名(lock) 、
    -u 用户名(unlock)
    -S 用户名(status)
  4. 提示:超级用户使用useradd命令新建用户账号后,还必须使用passwd命令为用户设置初始口令,否则此用户账号将被禁止登录。
  5. 注意: 参数 –stdin 的使用, 适用于没有交互的环境

5、 usermod命令:修改用户的属性,超级用户命令

格式:usermod [选项] 用户名
功能:修改用户的属性,超级用户命令。
-c 全名、
-d 主目录、
-g 组群ID或组群名、
-G 组群ID或组群名、
-u 用户ID、
-l 用户名

6、userdel命令:删除指定用户帐号

格式:userdel [-r] 用户名
功能:删除指定用户帐号,超级用户命令。
选项说明 :-r 系统不仅删除此用户帐号,还将用户的主目录也一并删除。

7、su命令

格式:su [-] [用户名]
1)-选项 切换为新用户的同时使用新用户的的环境变量。
“exit”命令可返回本来的用户身份。

8、groupadd命令:新建组群

格式:groupadd [选项] 组群名
功能:新建组群,超级用户命令。
主要选项说明:-g 组群ID 指定GID

9、groupmod命令:修改指定组群属性

格式:groupmod [选项] 组群名
功能:修改指定组群属性,超级用户命令。
-g 组群ID ,指定GID
-n 组群名(name)指定组群名
注意: 不要随意改动UID与GID,容易造成系统资源的错乱。

10、groupdel命令:删除指定的组群

格式:groupdel 组群名
功能:删除指定的组群,超级用户命令。
注:
在删除指定组群之前必须保证该组群不是任何用户的主要组群,否则需要首先删除那些以此组群作为主要组群的用户才能删除这个组群。

11、chage命令

在LINUX系统上,密码时效是通过chage命令来管理的。
参数意思:
-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M 密码保持有效的最大天数。
-W 用户密码到期前,提前收到警告信息的天数。
-E 帐号到期的日期。过了这天,此帐号将不可用。
-d 上一次更改的日期
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

#Chage案例
passwd -n 10 cs12
cat shadow
chage -m 0 cs12
cat shadow

cut命令

选项与参数:
-d :后面接分隔字元。与 -f 一起使用;
-f :依据 -d 的分隔字元将一段讯息分割成为数段,用 -f 取出第几段的意思;
-c :以字元 (characters) 的单位取出固定字元区间;

范例一:

将 PATH 变数取出,我要找出第五个路径。

[root@www ~]# echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games:
# 1 |    2   |  3  |    4    |       5      |     6        |    7

[root@www ~]# echo $PATH | cut -d ':' -f 5
# 如同上面的数字显示,我们是以『 : 』作为分隔,因此会出现 /usr/local/bin 
# 那么如果想要列出第 3 与第 5 呢?,就是这样:
[root@www ~]# echo $PATH | cut -d ':' -f 3,5

范例二:

将 export 输出的讯息,取得第 12 字元以后的所有字串

[root@www ~]# export
[root@www ~]# export | cut -c 12-
# 我们还可以指定某个范围的值,例如第 12-20 的字元,就是 cut -c 12-20 等等!

xargs

[root@www ~]# xargs [-0epn] command
产生某个命令的参数.
选项与参数:
-0 :如果输入的 stdin 含有特殊字元,例如 `, , 空白键等等字元时,这个 -0 参数可以将他还原成一般字元。这个参数可以用于特殊状态喔!
-e :这个是 EOF (end of file) 的意思。后面可以接一个字串,当 xargs 分析到这个字串时,就会停止继续工作!
-p :在执行每个指令的 argument 时,都会询问使用者的意思;
-n :后面接次数,每次 command 指令执行时,要使用几个参数的意思。
当 xargs 后面没有接任何的指令时,预设是以 echo 来进行输出喔!

#cut –d’:’ –f1 /etc/passwd | xargs –n 5  finger 

批量新建多个用户帐号

第0步: 创建公用群
第1步:编辑用户信息文件。
第2步:创建用户口令文件。
第3步:利用newusers命令批量创建用户帐号。
第4步:利用pwunconv命令暂时取消shadow加密。
第5步:利用chpasswd命令为用户设置口令。
第6步:利用pwconv命令恢复shadow加密。
图1
图2
图3

批量新建账号脚本

#vim account1.sh 
#!/bin/bash 
if [ ! -f  $1 ]; then 
echo$1  not exist! ”
exit 1
fi  
usernames=$(cat  $1)
for  username in $usernames
do 
  useradd $username 
  echo $username | passwd --stdin $username
  chage -d 0  $username 
done
exit 0

批量删除账号脚本

vim  delaccount1.sh
#!/bin/bash 
if [ ! -f  $1 ]  ….
usernames=`cat  $1`
for  username in $usernames
do
  echo "$username will be deleted!"
  userdel -r $username
done
exit 0

范例三

  1. 实现shell脚本,命名“1-你的学号.sh”,功能如下:
    1) 交互式输入四个参数: 前缀 开始序号 终止序号 待生成的配置文件名(user.你的姓名拼音)
    2) 对于配置文件 “user.你的姓名拼音” 有如下要求:
    a. 如果该文件已经存在则删除原有文件。
    b. 新生成该文件,只要求有一列内容,即用户名。
    c. 用户名按照“前缀序号”生成。 例如,前缀=zhangjingyi 开始序号=110 终止序号=119,那么: 用户名依次为zhangjingyi110 zhangjingyi111 zhangjingyi112等
    3) useradd批量添加用户,使用passwd命令将所有用户的密码统一设置为“software序号”(注意密码不再跟用户名一样!)。 例如 用户名zhangjingyi110 对应密码software110; 用户名zhangjingyi111 对应密码software111等。
    4) 将/etc/passwd拷贝到工作目录,文件名改为“passwd+当前时间(年月日时分秒)”,例如passwd20150624105530。
    5) 一个复杂命令删除刚刚创建成功的这些用户。
    6) 将用户名中带有字母“r”的所有用户的详细信息输出重定向到文件“3.你的姓名拼音”中。
  2. 运行脚本,前缀=你的姓名拼音 开始序号=110 终止序号=119待生成的配置文件名=user.你的姓名拼音
#!/bin/bash
read -p "请输入前缀:" pro
read -p "请输入开始序号:" a
read -p "请输入终止序号:" b
read -p "请输入配置文件名(user.你的姓名拼音):" filename
#建立文件
if [  -f "$filename" ];then
    rm -f $filename
    touch $filename
else 
    touch $filename 
fi

#向文件里输入用户名
for (( i=$a; i<=$b; i++ ))
do
    echo $pro$i >> $filename
done

if [ ! -f  $filename ]; then 
echo$filename  not exist! ”
exit 1
fi  

#添加用户并设置密码
usernames=$(cat  $filename)
for  username in $usernames
do 
  useradd $username 
  mima=sofeware$a
  echo $mima | passwd --stdin $username
  chage -d 0  $username 
  a=$(($a+1))
done

#删除用户
for  username in $usernames
do
  echo "$username will be deleted!"
  userdel -r $username
done

#用户的详细信息输出重定向
users=$(cat /etc/passwd | cut -d ':' -f1 | grep r)
for user in $users
do
    cat /etc/passwd | grep $user >> 3.yourname
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值