Linux系统管理之用户和组
用户和组管理
多用户操作系统和单用户操作系统
单用户操作系统只能同时一个用户在线,而多用户操作系统可以同时多人在线。Linux中多用户之间的切换alt+F1到F7,alt+f7是图形模式,其它是命令行模式。
在windows中创建用户的命令
net user zhang 123 /add
将用户添加到管理员组
net localgroup administrators zhang /add
更改用户密码
net user administrator a1!
查看用户身份
Whoami /all
用户登录身份和权限
创建用户
[root@learn ~]# useradd zhangql
查看用户id
[root@learn ~]# id zhangql
uid=502(zhangql) gid=502(zhangql) groups=502(zhangql)
创建组
[root@learn ~]# groupadd teachers
把用户加入到组
[root@learn ~]# usermod -a -G teachers zhangql
再次查看用户id会发现所属组的不同
[root@learn ~]# id zhangql
uid=502(zhangql) gid=502(zhangql) groups=502(zhangql),503(teachers)
Linux中用户和组管理
用户类别
管理员
默认名是root ; UID 是0
普通用户 UID 取值范围1-65536
系统用户UID 取值范围1-499 专门用来运行服务的账户,不需要登录系统
普通用户UID 取值范围500-1000 用来登录Linux系统
用户UID定义的文件
[root@learn ~]# cat /etc/login.defs |grep -v '^#'|grep -v '^$'
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 500
UID_MAX 60000
GID_MIN 500
GID_MAX 60000
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
组类别
管理员组
普通组
系统组
一般组
使用组简化授权
Linux中有基本组,附加组,私有组。
优先使用基本组,用户只能属于一个基本组,也是用户的默认组
基本组不能满足授权要求时创建附加组,用户可以属于多个附加组
私有组是创建用户时如果没有指定基本组,系统会创建和用户同名的一个组
管理Linux用户
passwd文件结构
Linux用户存放的位置 /etc/passwd
[root@learn ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
文件以":"分隔说明每段信息含义
account 用户登录名
password 用户密码
UID 用户的ID
GID 用户的基本组ID
comment 注释
home 用户主目录
shell 分配给用户的shell
查看linux有可用的shell
[root@learn ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
shadow文件结构
Linux的密码信息和用户信息的安全信息不一样单独用一个文件存放/etc/shadow
[root@learn ~]# tail -1 /etc/shadow
zhangql:$6$0j5kYvjn$Z6rOWcSE4oZHF1KyycmkLrnFfkMfHWdyQxh1z.DteqPpfgQRBsOr4FDXbJ.eFFgsszfuEfZnccYS0TSFxIEHS.:17349:0:99999:7:::
文件以":"号分隔说明每段信息含义
用户名
加密后的密码
从1970年到最近一次更改密码时间之间过了多少天
密码最少使用几天
密码最长使用多少天
密码到期前几天提醒用户更改密码
密码过期时间
用户过期时间
chage
修改账户相关时间
-d 设置最近一次更改密码时间
-E 设置账户过期时间
-I(大写i) 设置密码账户过期时间
-l --list 列出用户账户密码信息
-m 设置用户最短密码使用时间
-M 设置用户最大密码使用时间
-W 设置密码更改警告时间
[root@learn ~]# chage -I 5 zhangql
[root@learn ~]# chage -M 5 zhangql
[root@learn ~]# chage -m 2 zhangql
[root@learn ~]# chage -d "2017-7-3" zhangql
[root@learn ~]# chage -l zhangql
Last password change : Jul 03, 2017
Password expires : Jul 08, 2017
Password inactive : Jul 13, 2017
Account expires : never
Minimum number of days between password change : 2
Maximum number of days between password change : 5
Number of days of warning before password expires : 7
useradd
创建用户
adduser-->useradd,adduser链接到useradd本身
-u 指定用户的UID 大于500并且不能和现有用户UID重
-g 指定用户的基本组
-G 可以为用户指定多个附加组,指定多个附加组用逗号隔开
-c 为用户添加注释信息
-d 为用户指定家目录
-s 为用户指定shell的路径,最好是/etc/shells文件内的shell因为它是安全的 shell
-m 如果用户的家目录不存在,强制创建,默认执行
-M 不给用户创建家目录
-r 创建系统账户 ID号1-499之间
[root@learn ~]# useradd -u 5000 -g students -G moniter,partmember -c "The 2017 new student" -d /home/zhang -s /bin/bash
如果用户shell是/bin/nologin表示不能登录
定义创建新用户的行为文件
[root@learn ~]# grep -v "^#" /etc/login.defs
新用户家目录文件来自/etc/skel/
[root@learn ~]# ls -a /etc/skel
. .. .bash_logout .bash_profile .bashrc
usermod
修改用户user modify
-u 修改用户UID
-g 修改用户所属基本组GID
-G 修改用户附加组(默认清除原有附加组),使用逗号隔开多个附加组
-a -G 将用户添加到新的附加组
-c 修改用户的注释信息
-md 移动用户家目录到新位置
-d 指定用户家目录到新位置
-s 更改用户shell
-l 更改用户登录名
-L 锁定用户(禁用)
-U 解锁用户
chsh
更改用户shell
[root@learn ~]# chsh lisi
Changing shell for lisi.
New shell [/bin/bash]: /bin/sh
Shell changed.
finger
查询用户信息以及登录信息
需要先安装finger
1、挂载光驱
[root@learn cdrom]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
2、查找finger
root@learn cdrom]# find -name "finger*"
./Packages/finger-0.17-40.el6.x86_64.rpm
./Packages/finger-server-0.17-40.el6.x86_64.rpm
3、rpm安装finger ,-i是install
[root@learn cdrom]# rpm -i Packages/finger-0.17-40.el6.x86_64.rpm
[root@learn cdrom]# finger lisi
Login: lisi Name:
Directory: /home/lisi Shell: /bin/sh
Never logged in.
No mail.
No Plan.
chfn
修改用户扩展属性
[root@learn cdrom]# chfn lisi
Changing finger information for lisi.
Name []: li
Office []: 007
Office Phone []: 00000
Home Phone []: 0000
passwd
更改用户密码
普通用户只能更改自己的密码,管理员root能够更改任何人的密码。
使用脚本更改用户密码
[root@learn cdrom]# echo "123" |passwd --stdin lisi
Changing password for user lisi.
passwd: all authentication tokens updated successfully.
锁定用户
[root@learn cdrom]# passwd -l lisi
Locking password for user lisi.
passwd: Success
解锁用户
[root@learn cdrom]# passwd -u lisi
Unlocking password for user lisi.
passwd: Success
清除用户密码
[root@learn cdrom]# passwd -d lisi
Removing password for user lisi.
passwd: Success
pwck
检查用户完整性
[root@learn cdrom]# pwck
user 'adm': directory '/var/adm' does not exist
user 'uucp': directory '/var/spool/uucp' does not exist
user 'gopher': directory '/var/gopher' does not exist
user 'ftp': directory '/var/ftp' does not exist
user 'saslauth': directory '/var/empty/saslauth' does not exist
pwck: no changes
whoami
查看当前登录的用户
[root@learn cdrom]# whoami
root
who
查看那些用户登录了linux
[root@learn cdrom]# who
root tty1 2017-07-01 22:18
root pts/0 2017-07-04 21:07 (win-blqck1rlher.lan)
root pts/1 2017-07-04 21:20 (win-blqck1rlher.lan)
userdel
-r 删除用户相关目录
用户相关目录:
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/home/
/var/spool/mail/
[root@learn cdrom]# userdel -r li
userdel: /var/spool/mail/li not owned by li, not removing
userdel: /home/li not owned by li, not removing
管理linux组
groupadd
创建组
-g 指定组GID
-r 指定系统组
[root@learn ~]# groupadd -g 555 master
[root@learn ~]# groupadd -r sus
[root@learn ~]# tail -5 /etc/group
lisi:x:501:
zhangql:x:502:
teachers:x:503:zhangql
sus:x:499:
master:x:555:
groupmod
修改组
-g 修改组GID
-r 修改系统组
[root@learn ~]# groupmod -g 556 master
[root@learn ~]# groupmod -n masters master
[root@learn ~]# tail -5 /etc/group
lisi:x:501:
zhangql:x:502:
teachers:x:503:zhangql
sus:x:499:
masters:x:556:
groupdel
删除组
[root@learn ~]# groupdel lisi
gpasswd
给组设置密码
[root@learn ~]# gpasswd lisi
Changing the password for group lisi
New Password:
Re-enter new password:
newgrp
切换基本组身份
[root@learn ~]# newgrp lisi
[root@learn ~]# id
uid=0(root) gid=501(lisi) groups=501(lisi),0(root),502(zhangql)
[root@learn ~]# exit
exit
[root@learn ~]# id
uid=0(root) gid=502(zhangql) groups=502(zhangql),0(root),501(lisi)
管理用户工作环境
shell分类
交互式shell
等待用户输入
执行提交的命令
退出输入exit
非交互式shell
不需要等待用户输入
执行shell脚本
脚本执行结束shell退出
登录shell
需要输入用户名和密码才能进入的shell 或者加参数(-login)进入
[root@learn ~]# su --login lisi
非登录shell
不需要输入用户名和密码就能登录shell
[root@learn ~]# sh
[root@learn ~]# bash
[root@learn ~]# su lisi
可通过pstree命令查看登录shell
[lisi@learn root]$ pstree
init─┬─ManagementAgent───2*[{ManagementAgen}]
├─VGAuthService
├─abrtd
├─acpid
├─atd
├─auditd───{auditd}
├─console-kit-dae───63*[{console-kit-da}]
├─crond
├─dbus-daemon
├─dhclient
├─hald─┬─hald-runner─┬─hald-addon-acpi
│ │ └─hald-addon-inpu
│ └─{hald}
├─login───bash
├─master─┬─pickup
│ └─qmgr
├─5*[mingetty]
├─rsyslogd───3*[{rsyslogd}]
├─sshd───sshd───bash───bash───bash───bash───bash───su───bash───ps+
├─udevd───udevd
└─vmtoolsd───{vmtoolsd}
图形界面的linux登录后打开命令行终端
自定义shell环境
[lisi@learn ~]$ export PS1='[\h@\u \t]#'
[learn@lisi 21:02:30]#
永久保存个人shell环境
[lisi@learn ~]$ echo "export PS1='[\h@\]u \t]# '">> .bash_profile
[learn@lisi 21:30:12]# cat .bash_profile |grep "exp"
export PATH
export PS1='[\h@\u \t]# '
[lisi@learn ~]$ source .bash_profile
[learn@u 21:25:50]#
全局定义shell环境
[lisi@learn ~]$ cat /etc/bashrc
bash配置文件
bash的配置文件保存用户的工作环境
个人配置文件在用户家目录中
~.bash_profile ~/.bashrc
全局配置文件
/etc/profile /etc/profile.d/*.sh /etc/bashrc
profile类的文件
设定环境变量
登录前运行的脚本和文件
bashrc类的文件
设定本地变量
定义命令别名
全局配置和个人配置设置冲突以个人配置为准,不冲突都生效
登录式shell配置文件应用顺序
读取顺序
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~./bashrc --> /etc/bashrc
非登录式shell应用那些配置文件 应用顺序
读取顺序
~/.bash_profile --> /etc/bashrc --> /etc/profile.d/*.sh
文件和文件夹权限
文件权限
r 可读 用户可以使用cat查看文件的内容
w 可写 可以编辑或删除此文件
x 可执行 executable 针对命令文件可以授权用户可执行权限
文件夹权限
r 用户可以列出该文件夹内部所有文件 ls
w 用户可以在此文件夹中创建文件和文件夹
x 用户可以使用cd进入该文件夹 通过ls -l 查看内部文件的详细信息
通过二进制演变成数字权限位
000 |
--- |
无权限 |
0 |
001 |
--x |
可执行 |
1 |
010 |
-w- |
可写 |
2 |
011 |
-wx |
写和执行 |
3 |
100 |
r-- |
可读 |
4 |
101 |
r-x |
读和执行 |
5 |
110 |
rw- |
读和写 |
6 |
111 |
rwx |
读写执行 |
7 |
访问文件和文件夹的三类用户
u 属主
g 属组
o 其它账户
chown
更改文件和文件夹属主和属组
同时更改文件夹的属主和属组
[root@learn ~]# chown root:lisi 123
[root@learn ~]# ll 123
-rw-r--r-- 1 root lisi 193 Jan 28 10:24 123
同时更改文件夹及文件夹内文件和文件夹的属主和属组
[root@learn ~]# chown lisi:lisi -R 11/
[root@learn ~]# ll 11
total 0
-rw-r--r-- 1 lisi lisi 0 Jul 12 19:39 ppt
更改文件夹属主
[root@learn ~]# chown lisi: 123
[root@learn ~]# ll 123
-rw-r--r-- 1 lisi lisi 193 Jan 28 10:24 123
更改文件夹属组
[root@learn ~]# chown :root 123
[root@learn ~]# ll 123
-rw-r--r-- 1 lisi root 193 Jan 28 10:24 123
参照文件夹的属性设置文件的属性
[root@learn ~]# chown --reference=11/ 11/ppt
[root@learn ~]# ll 11/
total 0
-rw-r--r-- 1 root lisi 0 Jul 12 19:39 ppt
chmod
修改文件和文件夹权限
三类用户
u 属主
g 属组
o 其他用户
a 所有人
三类权限
r w x
修改属主的访问权限
[root@learn ~]# chmod u=rwx 123
[root@learn ~]# ll 123
-rwxr--r-- 1 lisi root 193 Jan 28 10:24 123
[root@learn ~]# chmod u+x 123
[root@learn ~]# ll 123
-rwxr--r-- 1 lisi root 193 Jan 28 10:24 123
[root@learn ~]# chmod u-x 123
[root@learn ~]# ll 123
-rw-r--r-- 1 lisi root 193 Jan 28 10:24 123
修改属组的访问权限
[root@learn ~]# chmod g=rwx 123
[root@learn ~]# ll 123
-rw-rwxr-- 1 lisi root 193 Jan 28 10:24 123
[root@learn ~]# chmod g-x 123
[root@learn ~]# ll 123
-rw-rw-r-- 1 lisi root 193 Jan 28 10:24 123
修改其他用户的访问权限
[root@learn ~]# chmod o=rwx 123
[root@learn ~]# ll 123
-rw-rw-rwx 1 lisi root 193 Jan 28 10:24 123
[root@learn ~]# chmod o-x 123
[root@learn ~]# ll 123
-rw-rw-rw- 1 lisi root 193 Jan 28 10:24 123
同时修改属主、属组、其他账户权限
[root@learn ~]# chmod u=r,g=rw,o=x 123
[root@learn ~]# ll 123
-r--rw---x 1 lisi root 193 Jan 28 10:24 123
[root@learn ~]# chmod a=r 123
[root@learn ~]# ll 123
-r--r--r-- 1 lisi root 193 Jan 28 10:24 123
[root@learn ~]# chmod a=rwx 123
[root@learn ~]# ll 123
-rwxrwxrwx 1 lisi root 193 Jan 28 10:24 123
[root@learn ~]# chmod a-x 123
[root@learn ~]# ll 123
-rw-rw-rw- 1 lisi root 193 Jan 28 10:24 123
[root@learn ~]# chmod ug=rw,o=x 123
[root@learn ~]# ll 123
-rw-rw---x 1 lisi root 193 Jan 28 10:24 123
修改文件夹内部文件和文件夹的权限
[root@learn ~]# chmod go-x -R 123
[root@learn ~]# ll 123
-rw-rw---- 1 lisi root 193 Jan 28 10:24 123
使用八进制方式设置权限
[root@learn ~]# chmod 700 123
[root@learn ~]# ll 123
-rwx------ 1 lisi root 193 Jan 28 10:24 123
[root@learn ~]# chmod 711 123
[root@learn ~]# ll 123
-rwx--x--x 1 lisi root 193 Jan 28 10:24 123
参照现有文件或文件夹权限设置文件和文件夹权限
[root@learn ~]# chmod --reference=11/ 11/ppt
[root@learn ~]# ll 11/
total 0
-rwxr-xr-x 1 lisi lisi 0 Jul 12 19:39 ppt
umask
权限遮罩码 umask 控制用户创建文件和文件夹的默认安全设置
文件默认权限
666-umask
文件夹默认权限
777-umask
管理员root
umask=022
文件默认权限666-022=644 文件夹默认权限777-022=755
普通用户
umask=002
文件默认权限666-002=664 文件夹默认权限 777-002=775
更改umask
[root@learn ~]# umask 0007
[root@learn ~]# umask
0007
永久更改用户自身的uamsk
vim .bash_profile
在Linux中文件的默认权限不允许有执行权,如果和umask计算的结果有执行权限将其计算结果+1
例:
如果umask=023 用户文件的权限666-023=643
643转换 rw-r---wx 因不允许有执行权
所以+1等于 644 rw-r--r
在/etc/profile文件中设定系统全局umask,定义了默认文件权限
[root@learn ~]# cat /etc/profile
...
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
...
文件特殊权限
上级目录权限决定文件权限
权限下发suid 4
条件:
作用于二进制文件(可执行文件),对于目录和文件无效
特征:
chmod u+s filename
rw- +suid rwS
rwx +suid rws
功能:
不管谁来执行命令,都以拥有者的权限执行。
sgid 2
条件:
作用于二进制文件(可执行文件)、目录,对文件无效
特征:
chmod g+s filename
rw- +suid rwS
rwx +suid rws
功能:
不管谁来执行命令,都以拥有组的权限执行
当上级目录设定sgid后,此目录内所有内容都将继承该目录的所属组权限
sticky 1
条件:
只能作用于目录
特征:
chmod o+t filename
o+t
功能:
任何人创建文件,只能root和创建者有删除权限
以上三种模式,大小写s或t 取决于文件是否具有x权限
文件重定向
输入输出重定向
输入为0,输出为1,错误为2
根据以上特性试验:
将正确和错误输出重定向到文件(默认是1,可以不写直接跟重定向)
ls /etc/passwd /etc/passwd1 &>/home/all.log &表示1和2
等同
ls /etc/passwd /etc/passwd1 > /home/11.log 2>&1 2>&1表示将查询到的结果1和2都输出到11.log文件下
将正确和错误输出重定向到不同的文件
ls /etc/passwd /etc/passwd1 1>/home/1.log 2>/home/2.log
追加:>>
echo ‘aaa’ >>1.log 把aaa内容追加到1.log文件中
输入:< 和输入追加 << 很少使用
cat < /etc/passwd 不加<也能显示
cat << /etc/passwd、
系统黑洞 /dev/null
不需要的系统日志等重定向到系统黑洞(回收站(清空状态))/dev/null
ls /etc/passwd /etc/passwd1 > /dev/null 2>&1
查看文件大小
ls –lh /dev/null
du –sh /dev/null
零发射器 /etc/zero
dd if=/dev/zero of=1.txt bs=1 count=1M
if从零发射器输入到1.txt,bs份数 1份,count数据大小1M