第05天 [管道和用户]

文章目录

    • seq 增数
    • 管道 |
    • email: 通过电子邮件发送输入
    • tee
    • 用户和组
    • getfacl:

seq 增数

seq 首数 尾数
seq 首数 增数 尾数
-w 同宽
-s 字符串 seq -s+ 1 100 |bc 

管道 |

左边一定是标准输出
可以多次处理seq 1 10|tr '\n' ' '|tr '0-9' 'a-f'
hs 2>&1|tr 'a-z' 'A-Z'

echo 1234 | passwd -stdin wang

less 翻页
pageup向上翻动一页,pagedown 向下翻动一页
more 翻页
space 向下翻动一屏

email: 通过电子邮件发送输入

echo "test email" | mail -s "test" [email protected]
cat txt |mail -s help wang
d 删除邮件
d 
删除当前邮件,指针并下移。 
d 3 
删除编号为 3 的邮件。 
d 1-100 
删除编号第 1 到 100 封邮件。 
退出的时候需要注意,一定要用 q 命令来保存之前的操作。 
q  退出mail命令平台,保存之前的操作,比如删除已用d删除的邮件,已阅读邮件会转存到当前用户家目录下的mbox文件中。如果在mbox中删除文件才会彻底删除。 
x  退出mail命令平台,并不保存之前的操作,比如删除邮件 

tee

-a 追加
hostname |tee -a a.txt 	既能打印又能输出到a.txt里面
uname -r |tee -a a.txt
uname -r |tee -a a.txt |tr 'a-z' 'A-Z'

用户和组

getent passwd =cat /etc/passwd
主要配置文件:
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
passwd文件格式:wang❌1000:1000:wang:/home/wang:/bin/bash
login name:登录用名(wang)
passwd:密码 (x) 要是删除就可以空密码登陆
UID:用户身份编号 (1000)
GID:登录默认所在组编号 (1000)
GECOS:用户全名或注释
home directory:用户主目录 (/home/wang)
shell:用户默认使用shell (/bin/bash)
shadow文件格式:xiaom:!!:18033:0:99999:7:::
登录用名
用户密码:一般用sha512加密
从1970年1月1日起到密码最近一次被更改的时间
密码再过几天可以被变更(0表示随时可被变更)
密码再过几天必须被变更(99999表示永不过期)
密码过期前几天系统提醒用户(默认为一周)
密码过期几天后帐号会被锁定
从1970年1月1日算起,多少天后帐号失效
group 文件格式 :xiaom❌1003:
群组名称:就是群组名称
群组密码:通常不需要设定,密码是被记录在 /etc/gshadow
GID:就是群组的 ID
以当前组为附加组的用户列表(分隔符为逗号)
gshadow文件格式:xiaom:!::
群组名称:就是群的名称
群组密码:
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表:多个用户间用逗号分隔

view 相当于 vim /etc/passwd 但是当出现错误的时候会报错
vigr 相当于 vim /etc/gshadow 但是当出现错误的时候会报错

随机口令
openssl rand -base64 9
mkpasswd 生成随机口令
yum -y install expect

mkpasswd 的使用
常用的选项, -l 指定 长度
-d 指定 数字的个数
-c 指定 小写字符个数 -C 指定大写字符个数
-s 指定特殊字符个数
usage: mkpasswd [args] [user]
where arguments are:
-l # (length of password, default = 7)
指定密码的长度,默认是7位数
-d # (min # of digits, default = 2)
指定密码中数字最少位数,默认是2位
-c # (min # of lowercase chars, default = 2)
指定密码中小写字母最少位数,默认是2位
-C # (min # of uppercase chars, default = 2)
指定密码中大写字母最少位数,默认是2位
-s # (min # of special chars, default = 1)
指定密码中特殊字符最少位数,默认是1位
-v (verbose, show passwd interaction)
这个参数在实验的时候报错,具体不知道。

比如举个例子, 长度 15 位,数字至少 3位, 小写字母至少4 位, 大写字母至少4 位, 特殊字符 至少 2位
[root@localhost ~]# mkpasswd -l 15 -d 3 -c 4 -C 4 -s 2
M50=xniV_Y4gBht
CZ7@lBYa)1gept6
7RaQ7c"gwvXpe^42j

chage 顺序修改用户密码相关信息
chage wang
getent 详解https://www.cnblogs.com/kelamoyujuzhen/p/9815774.html
getent命令帮助用户administrative databases中查找相关信息。在数据库中查找。
getent group wang
getent passwd wang

pwck命令用来验证系统认证文件/etc/passwd和/etc/shadow的内容和格式的完整性。
grpck指令可以验证组文件“/etc/group”和“/etc/gshadow”的完整性

useradd [options] LOGIN
-u UID
-o 配合-u 选项,不检查UID的唯一性
-g GID 指明用户所属基本组,可为组名,也可以GID
-c "COMMENT“ 用户的注释信息
-d HOME_DIR 以指定的路径(不存在)为家目录
-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中 常用/sbin/nologin
-G GROUP1[,GROUP2,…] 为用户指明附加组,组须事先存在
useradd -G g2 alice
-N 不创建私用组做主组,使用users组做主组
-r 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户

原理:如果useradd不加任何参数,那么生成的用户会从/etc下的相关目录和文件中复制相关信息。
其中涉及到的文件夹用户 自定义文件/etc/login.defs,用户默认配置文件 /etc/default/passwd。
当添加用户成功后会在passwd,shadow,group,gshadow中生成相关信息。同时会根据 /etc/default/useradd中的配置信息skel 复制/etc/skel/. 到home 家目录下面。
常见参数 c d e f g G m M n r s u 可以用man方法查看 man useradd
-D 参数 与/etc/default/useradd 相关 执行-D指令本意是修改 上面路径文件夹里面的参数。
useradd -D 可以显示 /etc/default/useradd 这个文件夹里面的信息。切记一定是root账户才可以查看
useradd -D -g 100 修改组
用户默认值设定:/etc/default/useradd
[root@Centos7 bin]$cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel (创建用户拷贝的家目录模板)
CREATE_MAIL_SPOOL=yes

显示或更改默认设置
useradd -D
useradd –D -s SHELL
useradd –D –b BASE_DIR
useradd –D –g GROUP
/etc/login.defs   密码设置时间长度相关最大最小几位数等
例子:添加用户test并且注释信息为“ iam test”,uid指定为022 ,让他成为test成员,shell类型为/bin/sh 			,设置家目录为/home/test ,过期时间为2020-10-10(一定是这种格式)test 一定要存在,可以提前加。

[root@Centos7 data] u s e r a d d − c i a m t e s s t − u 1022 − G t e s t − s / b i n / s h − d / h o m e / t e s t − e " 2020 − 10 − 10 " t e s t u s e r a d d : g r o u p t e s t e x i s t s − i f y o u w a n t t o a d d t h i s u s e r t o t h a t g r o u p , u s e − g . [ r o o t @ C e n t o s 7 d a t a ] useradd -c iamtesst -u 1022 -G test -s /bin/sh -d /home/test -e "2020-10-10" test useradd: group test exists - if you want to add this user to that group, use -g. [root@Centos7 data] useraddciamtesstu1022Gtests/bin/shd/home/teste"20201010"testuseradd:grouptestexistsifyouwanttoaddthisusertothatgroup,useg.[root@Centos7data]useradd -c iamtesst -u 022 -G test -s /bin/sh -d /home/test -e “2020-10-10” test1
当我创建的目标用户为test时候,-G后面不可以和目标用户相同名字。否则会报错同上

newusers passwd格式文件 批量创建用户
chpasswd 批量修改用户口令
newusers users.txt
echo jack:centos |chpasswd
批量的话 cat p.txt |chpasswd

usermod [OPTION] login
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,…[,GROUPN]]]:新附加组,原来的附加组将会被
覆盖;若保留原有,则要同时使用-a选项
-s SHELL:新的默认SHELL useradd -s /sbin/nologin mysql 不可交互登陆系统
-c ‘COMMENT’:新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,
同时使用-m选项
-l login_name: 新的名字
-L: lock指定用户,在/etc/shadow 密码栏的增加 ! 如果用root解码则会出现解锁状态。
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期 usermod -e 2020-10-10 xiaoh
-f INACTIVE: 设定非活动期限
usermod -aG wheel wang 把wang加入到wheel组里面
id wang

su 讲解
完全切换加 su -wang
su -root -c “cat a.txt” 执行完命令退回
ubuntu root登陆设置
echo magedu |passwd --stdin mage &>/dev/null

passwd [OPTIONS] UserName: 修改指定用户的密码
常用选项:
-d:删除指定用户密码
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-f:强制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
–stdin:从标准输入接收用户密码
示例:echo “PASSWORD” | passwd --stdin USERNAME 标准输入

chage [OPTION]… LOGIN
-d LAST_DAY
-E --expiredate EXPIRE_DATE
-I --inactive INACTIVE
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
-l 显示密码策略
示例:
chage -d 0 tom 下一次登录强制重设密码
chage -m 0 –M 42 –W 14 –I 7 tom
chage -E 2016-09-10 tom

groupadd [OPTION]… group_name
-g GID 指明GID号;[GID_MIN, GID_MAX]
-r 创建系统组
CentOS 6: ID<500
CentOS 7: ID<1000

groupmod [OPTION]… group 组属性修改
-n group_name: 新名字
-g GID: 新的GID
组删除:groupdel

groupdel GROUP

userdel
userdel xiaoh
userdel -r 用户 删除全部信息,尽量不要加r因为有时候数据还有用
批量建账号 创建文件复制到此文件里格式要一样

gpasswd 组密码:
gpasswd [OPTION] GROUP
-a user 将user添加至指定组中
-d user 从指定组中移除用户user gpasswd -d user group01
-A user1,user2,… 设置有管理权限的用户列表
newgrp命令:临时切换主组
如果用户本不属于此组,则需要组密码
gpasswd -d wang wheel 把wang从wheel组里面删除
groupmems [options] [action] 更改和查看组成员
gorupmems -g wheel -a wang 把wang加入到wheel组里面
options:
-g, --group groupname 更改为指定组 (只有root)
actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
groups [OPTION].[USERNAME]… 查看用户所属组列表

chown 更改文件属主和属组
chown root:wang a.txt
chown -R root.wang *
chgrp g1 /data/a 在 /data/a里面创建的文件自动归属到g1组

文件权限
owner 属主, u
group 属组, g
other 其他, o
r 可使用文件查看类工具获取其内容
w 可修改其内容
x 可以把此文件提请内核启动为一个进程
目录:
r 可以使用ls查看此目录中文件列表
w 可在此目录中创建文件,也可删除此目录中的文件
x 可以使用ls -l查看此目录中文件元数据(须配合r),可以cd进入此目录
X 只给目录x权限,不给文件x权限

chmod
修改一类用户的所有权限
u= g= o= ug= a= u=,g=
修改一类用户某位或某些位权限
u+ u- g+ g- o+ o- a+ a- + -
数字 777 文件666目录是777减去umask

umask
umask 123 设定
全局设定在 /etc/bashrc 用户在 ~/.bashrc

误删除之后
cp -r /etc/skel /home/mage
chowm -R mage.mage mage
chmod 700 mage
cp -r /etc/skel/.[^.]* /home/mage 指的是隐藏文件
cp -r /etc/skel/. /home/mage

目录:
读:可以列出文件名
执行:可以进入目录,可以访问目录的文件内容
写:创建和删除文件

特殊权限
详解:https://www.cnblogs.com/dyh004/p/6378456.html
suid: 作用于可执行的二进制的程序,权限4,功能:用户执行此程序时,将继承此程序所有者的权限
例如我在 /usr/bin 下面把 chmod 4755 /uer/bin/cat 此时随便切换一个用户都可以执行cat
sgid:
作用于可执行的二进制的程序,权限2,功能:用户执行此程序时,将继承此程序所属组的权限
作用于目录,功能:新建的文件将自动继承此目录的所属组
sticky:作用于目录,权限1 ,功能:只有删除自已的文件 例如我在data下面创建了一个f1的目录 设置权限为chmod 1777 f1
进入到f1后,登陆wang用户创建了一个a.txt的文件,su xiaom 后 rm -f a.txt 此时提醒不行允许删除。当我再把权限设置成777时候
此时su xiaom 就可以删除a.txt文件了。
suid:s
sgid:s
sticky:t

问题
cp /etc/fstab /data/dir/ 普通用户需要什么最少权限?
cp 执行权限
/etc/fstab /etc/执行权限,fstab需要有读权限
/data/dir/ /data至少有执行权限,/data/dir/至少有wx权限

文件特殊属性
chattr +i 不能删除,改名,更改
chattr +a 只能追加内容
lsattr 显示特定属性

getfacl:

获取文件或目录的ACL设置信息
命令: getfacl [-bkndRLP] { -m|-M|-x|-X … } file …
参数:

-a , --access:显示文件或目录的访问控制列表
-d , --default:显示文件或目录的默认(缺省)的访问控制列表
-c , --omit-header:不显示默认的访问控制列表
-R , --recursive:操作递归到子目录

setfacl: 设置文件或目录的ACL设置信息
参考网址:http://www.cnblogs.com/ysocean/p/7801329.html
命令:setfacl [-bkndRLP] { -m|-M|-x|-X … } file …
参数:

-m, --modify=acl:修改文件或目录的扩展ACL设置信息
-x, --remove=acl:从文件或目录删除一个扩展的ACL设置信息
-b, --remove-all:删除所有的扩展的ACL设置信息
-k, --remove-default:删除缺省的acl设置信息
-n, --no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定
-d, --default:设置默认的ACL设置信息(只对目录有效)
-R, --recursive:操作递归到所有子目录和 文件
setfacl -m u:Sherry:rx Project/
添加
①、给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名
②、给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名
删除
①、删除指定用户的 ACL 权限 setfacl -x u:用户名 文件名
②、删除指定用户组的 ACL 权限 setfacl -x g:用户组名 文件名
③、删除文件的所有 ACL 权限 setfacl -b 文件名 
递归 
setfacl -m u:用户名:权限 -R 文件名
默认acl权限
setfacl -m d:u:用户名:权限 文件名

你可能感兴趣的:(Linux知识汇总)