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

posted @ 2017-07-28 20:40  pathping  阅读(852)  评论(0编辑  收藏  举报