Fork me on GitHub

chattr&chown&cat&cut&useradd&passwd&chage&usermod

1.用chattr命令防止系统中某个关键文件被修改

chattr +i /etc/resolv.conf
chattr -i /etc/resolv.conf  要想修改此文件就要把i属性去掉
lsattr /etc/resolv.conf
# 让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件
chattr +a /var/log/messages

2.chown:改变文件的属主和属组

chown oldboy hehe.txt  只改变属主
chown :oldboy hehe.txt  只改变属组
chown oldboy.oldboy hehe.txt  两者都改
chown -R oldboy.oldboy oldboy/  -R递归所有文件

3.chmod:改变文件的权限

chmod u=rw,g=r,o=rwx hehe.txt
chmod o=--- hehe.txt
chmod o-rwx hehe.txt  这两种方法都可以去掉权限

4.cat

cat -n hehe.txt  查看文件并为所有行标记行号
cat -b hehe.txt  查看文件但之标记非空行的行号
cat -E a.txt  查看文件并在行尾显示$(每一行都有$)
cat -s a.txt  将多个空行合并成一个空行
-s:suppress repeat empty lines
cat -T a.txt  可以区分tab键和空格(制表符显示为^I)

所以查看所有行、空行和不看空行的命令如下:

grep "$" a.txt
grep -n "^$" a.txt
grep -nv "^$" a.txt

tac命令是从文件的末行开始显示,rev命令是将字母顺序先后颠倒.

5.cut-默认以tab键为分隔符

head -n -10 /etc/inittab  除了后十行其余都显示
tail -f access.log 
tailf access.log
# tail -f的简写并不是tailf,这两个没什么关系,是两个命令
cut -b 3 hehe.txt 显示第三个字节
cut -b 3-4 hehe.txt 显示n到m
cut -b -4 hehe.txt 显示n个字节之前的内容

用-b切割中文的话就会乱码,-c切割中文不会乱码,会自动分辨英文、中文.

# head -1 /etc/passwd | cut -d : -f4

-d指定分隔符--delimiter,-f指定字段--fields

cut分隔符只支持单个字符,awk默认分隔符是空格,且支持多个分隔符

指定空格为分隔符用:-d ' ' 引号中有一个空格

6./etc/skel目录

/etc/skel目录是用来存放新用户环境变量文件的目录,当添加新用户时,

这个目录下所有文件会被复制到新添加的用户家目录下.作用:

可以为新用户创建统一的、标准的初始化环境(例如编辑.bash_profile)

切换用户时出现这种情况---bash-4.1$
用户没有家目录或者家目录下缺少.bash_profile、.bashrc文件,解决办法:
以当前用户的身份将这些文件拷贝过来.
bash-4.1$ cp /etc/skel/.bash* .

7.useradd

使用useradd命令添加用户,所用参数在这个文件中/etc/default/useradd

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
# useradd -c "production" -u 806 -G root,mysql -s /bin/sh -md /oldboy1 oldboy1
-c:创建用户的说明;-G:指定多个用户组;-g:指定主组
-m:指定家目录,如果不存在则创建;-d:指定家目录(得存在)
-e:指定过期时间(格式年/月/日);-M:不创建家目录

8.passwd(更改的是/etc/shadow文件)

a.非交互式修改密码:

echo "123456" | passwd --stdin oldboy

b.批量创建10个用户stu01-stu10,并且设置随机8位密码,

要求不能用shell的循环(例如:for,while等),只能用linux命令及管道实现.

echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#useradd \1 ; pass=`echo $RANDOM|md5sum|cut -c 1-8`; echo $pass|passwd --stdin \1; echo -e "\1 \t $pass">>/tmp/oldboy.log#g'|bash
举一条命令stu01用户的过程拆解如下:
useradd stu01; 
pass=`echo $RANDOM|md5sum|cut -c 1-8`; 
echo $pass|passwd --stdin stu01; 
echo -e "stu01\t$pass">>/tmp/oldboy.log

c.passwd设置日期

passwd -n 7 -x 60 -w 10 -i 30 oldboy
-n:多少天以内不能修改密码
-x:多少天以后必须修改密码
-w:过期前多少天通知用户
-i:密码过期后多少天,用户被禁掉

d.chage(不常用)

chage -l oldboy  查看用户密码期限,看的是/etc/shadow

-E:将账户过期时间设为"过期日期",MM/DD/YY

e.删除用户

userdel -r oldboy  连家目录一起删,一般不这么用

删除经验:

1.vi /etc/passwd 注释掉用户;
2.把登录shell改成/sbin/nologin;
3.openLDAP账号统一管理,ldap库里删掉用户

f.usermod--修改用户属性

# usermod -c "oldboy6" -u 999 -G sa -s /bin/bash -md /home/oldboy6 oldboy6

参数老男孩QQ空间:https://user.qzone.qq.com/49000448/blog/1422183723

 

posted @ 2018-10-30 15:41  法外狂徒  阅读(263)  评论(0编辑  收藏  举报