Linux用户和组管理

1. 概述

1.1 用户类型

  1. 超级用户(root)
    一般情况不要使用root用户
  2. 系统用户
    又分为两种,一种是由Linux系统安装时自行建立的系统账户,一种是用户自定义的系统账户。
  3. 普通用户

UID作为账户的唯一标识,root的UID为0,系统账户为1~499,以及65534,普通用户UID从1000开始编号。

1.2 Ubuntu的超级用户权限

超级用户权限解决方案:
为了避免超级用户的权限太高,而普通用户某些操作又需要root权限的问题。为此Linux提供特殊的机制,让普通用户临时具有root权限

Ubuntu默认禁用root账户,并且让系统安装时创建的第一个账户自动成为Ubuntu管理员。
Ubuntu将普通用户分为两种:标准用户和管理员。管理员有权删除用户,安装软件和驱动。

cat /etc/passwd 查看账户信息
cat /etc/shallow 查看密码

useradd -d /home/liuyansong -m liuyansong
passwd liuyansong

问题1

linux添加用户出现错误/usr/bin/xauth: file /home/chenwi/.Xauthority does not exist

解决1

chown username:username -R /home/user_dir
给用户的目录授权

问题2

Linux系统,切换用户后只显示$问题

解决2

找到/etc目录,查看passwd,将sh改成bash就可以了

更改自己密码

passwd
然后输入自己的登录密码即可

root用户更改别的用户密码

脚本处理

输入的是 sh changePass.sh sun shuwei,
即两个参数,分别是姓和名

echo ${1}${2}"!@"${1}${2} | passwd --stdin ${1}${2}
echo ${1}${2}"!@"${2}${1}

但是该命令对于不同版本的Ubuntu系统不一定可执行

[root@asswei bin]# passwd --help
Usage: passwd [OPTION...] <accountName>
  -k, --keep-tokens       keep non-expired authentication tokens
  -d, --delete            delete the password for the named account (root only)
  -l, --lock              lock the password for the named account (root only)
  -u, --unlock            unlock the password for the named account (root only)
  -e, --expire            expire the password for the named account (root only)
  -f, --force             force operation
  -x, --maximum=DAYS      maximum password lifetime (root only)
  -n, --minimum=DAYS      minimum password lifetime (root only)
  -w, --warning=DAYS      number of days warning users receives before password expiration (root only)
  -i, --inactive=DAYS     number of days after password expiration when an account becomes disabled (root only)
  -S, --status            report password status on the named account (root only)
  --stdin                 read new tokens from stdin (root only)

Help options:
  -?, --help              Show this help message
  --usage                 Display brief usage message

在另一个版本的服务器中,

sunshuwei@oem-PowerEdge-T640:~$ passwd --help
用法:passwd [选项] [登录名]

选项:
  -a, --all                     报告所有帐户的密码状态
  -d, --delete                  删除指定帐户的密码
  -e, --expire                  强制使指定帐户的密码过期
  -h, --help                    显示此帮助信息并退出
  -k, --keep-tokens             仅在过期后修改密码
  -i, --inactive INACTIVE       密码过期后设置密码不活动为 INACTIVE
  -l, --lock                    锁定指定的帐户
  -n, --mindays MIN_DAYS        设置到下次修改密码所须等待的最短天数
                                为 MIN_DAYS
  -q, --quiet                   安静模式
  -r, --repository REPOSITORY   在 REPOSITORY 库中改变密码
  -R, --root CHROOT_DIR         chroot 到的目录
  -S, --status                  报告指定帐户密码的状态
  -u, --unlock                  解锁被指定帐户
  -w, --warndays WARN_DAYS      设置过期警告天数为 WARN_DAYS
  -x, --maxdays MAX_DAYS        设置到下次修改密码所须等待的最多天数
                                为 MAX_DAYS

并没有–stdin这个参数,需要采用另一种方法。

echo ${1}${2}:${1}${2}"!@"${2}${1} | chpasswd
echo ${1}${2}"!@"${2}${1}

但是这样仍然需要手动地输每一个人的名字,还是比较麻烦。
下面采取更好的一种方法。
从/etc/passwd中得到所有用户名的名字,然后自动化地处理。

原本的方案不可行

原本的方案是

awk '{print $0}' username.txt | sh changePass.sh
sh changePass.sh `awk '{print $0}' username.txt`

第一个直接报错,没有将前面命令的输出传输到管道后面
第二个命令只能处理第一行,其余行无法处理
所以改用下面的方法

获取用户名输入到文件当中

首先查看/etc/passwd
第一个用户名是谁,比如是sunshuwei

awk '/sunshuwei/{print NR}' /etc/passwd

得到这是第25行,然后将这行之下的输出到文件当中

awk -F: 'NR>24{print $1}' /etc/passwd > ~/username.txt

读取文件中的内容作为参数执行命令

for line in `cat username.txt`
do
echo ${line}:${line}"!@"${line} | chpasswd
echo ${line}:${line}"!@"${line}
done

即可批量更改密码

job control命令相关

cp file1 file2 &
&表示在背景中执行,在执行该任务后,仍然可以在该终端做其他的工作。
前景:可以控制的环境
背景:可以自行运作的工作,无法使用crtl+c终止它,只能fg/bg呼叫

crtl+Z将当前的工作丢到背景中暂停
jobs -l 观察所有的工作,并得到PID号
+ 代表要取出的工作,输入fg时,拿到前景处理的工作
- 代表倒数第二个工作
即+代表最近被放到背景中的工作,-代表倒数第二个放到背景的工作。

fg %1 取出代号为1 的job

让工作在背景中也能运行
bg %3
在这里插入图片描述

重定向输出输入

  • 标准输入 stdin 0 <或<<
  • 标准输出 stdout 1 >或>>
  • 标准错误输出 stderr 代码为2,使用 2>或2>>

若文件不存在,会自动建立该文件,但是若以> 输出到一个已经存在的文件中,这个文件原内容会被覆盖。若想累加的方式添加,使用>>。
在这里插入图片描述
当输入的一个命令既有正确返回,又有错误的返回,使用命令:
find /home -name .bashrc > list_right 2> list_error
在这里插入图片描述
将正确和错误的输出都打印到同一个文件

将原本需要用键盘输入的数据,改由文件内容取代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值