1. 概述
1.1 用户类型
- 超级用户(root)
一般情况不要使用root用户 - 系统用户
又分为两种,一种是由Linux系统安装时自行建立的系统账户,一种是用户自定义的系统账户。 - 普通用户
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
将正确和错误的输出都打印到同一个文件
将原本需要用键盘输入的数据,改由文件内容取代。