用户、组和权限

生成随机数字:cat /dev/urandom  | tr -dc '[:alnum:]' | head -c12

        /dev/urandom  输出无限随机数据 

        -dc '[:alnum"]'  删除不是字母和数字的其他字符

        head -c12 只取结果的前12个字符

  • [:alpha:] → 仅字母
  • [:digit:] → 仅数字
  • [:lower:] → 仅小写字母
  • [:upper:] → 仅大写字母
  • [:punct:] → 标点符号
  • [:graph:] → 可见字符(字母 + 数字 + 符号)
  • [:alnum:]  →  所有字母 + 所有数字

删除用户:userdel 账号名

        用 id 账号名 查看账号的信息,删除的账号会显示no such user

        用ll /home 来显示家目录下面的账号,删除的账号还在,但是所有者和所属组变成了账号的id

        用 ll /var/spool/mail 查看账号的邮箱 删除的账号还在 但是所有者变成了账户的id

想要彻底删除用户以及数据:userdel -r 账号名 ,如果有进程在使用无法删除,强制删除:userdel -rf 账号名

添加用户: useradd [optionss] LOGINuser

       

useradd -r -u 48 -g apche -s /sbin/nologin -d /var/www -c "Apache"  apache

回到主账户:sudo -i   或者 su - root

chage wang  修改wang 用户的密码有效期,账号过期时间等安全信息

getent shadow wang 读取wang用户的密码信息 和cat /etc/shadow 同理

        返回值包含:用户名:密码哈希值:最后修改密码日期:最小修改间隔:多少天后过期:警告天数:宽限天数:账号过期日期:保留

chage -d 0 wang :强制 wang 用户 下次登录时必须修改密码!和passwd -e wang同理
echo wang:123pwd | chpasswd 修改账户密码
echo 123pwd |passwd --stdin wang 修改账户密码 stdin 只有centos才有,ubuntu不支持

su wang 切换账户,不完全切换,保留原本账号的环境数据
su - wang 切换账户,完全切换
su -  root  -c "cat /etc/shadow" 切回主账户的同时执行cat /etc/shadow 命令

id wang 查看wang用户的UID ,GID ,所属组
id 查看当前用户
id root 查看root 用户
        返回结果:uid 用户id ,gid 主组id,groups 用户属于哪些组
newgrp admins 可以临时切换账号的主组gid ,exit 可以退出

chgrp admins f1.txt  将f1.txt 的所属组改为admins
文件的所属组只有一个,账户可以有多个所属组
chown wang f1.txt 给f1.txt 的所有者改为wang
chown wang:admins f1.txt 给f1.txt 文件修改所有者wang 和所有组admins
chown :admins f1.txt 给f1.txt 文件修改所有组admins

chmod a-x /bin/cat  给所有者/所属组/其他 去掉执行cat权限
chmod a+x /bin/cat 添加执行权限
chmod a= /bin/cat   所有人(包括 root)都清空所有权限,但是root 理论上可以强行读写,但权限位上显示 root 也没有任何权限,没有执行权限,普通用户完全无权限

chmod o+w /bin/cat 给其他用户组添加写权限
chmod u+w /bin/cat 给当前登录的用户添加写权限
chmod g+w /bin/cat 给所属组添加写权限

文件能不能山,和文件本身权限无关,和文件夹权限有关

权限数是奇数,说明是一定有x执行权限,因为x=1 w=2 r=4

问题:执行 cp /etc/issue /data/dir 所需要的最小权限
答案:cp 需要x权限
           /etc 需要x权限
          /etc/issue 需要r权限
         /data 需要x权限
        /data/dir 需要x w 权限
x 进入权限,执行权限/X 

文件默认权限 666-umask(022)=644  目录默认权限 777-umask(022)=755
umask 666 修改umask为666

特殊权限
        SUID: 作用于二进制可执行文件上,用户将继承次程序所有者权限
        SGID:
                1)作用域二进制可执行文件上,用户将继承此程序所有组的权限
                2)作用于目录上,此目录中新建的文件的所属组将自动从此目录继承
        STICKY:作用于目录上,此次目录中 的文件只能由所有者自己来删除

chmod 4755 /user/bin/vim SUID权限设置
chmod 2755 /user/bin/vim SGID
chmod 1755 /user/bin/vim STICKY

chattr +i test.txt  限制root用户修改和删除test.txt 文件
chattr -i test.txt 解除限制
chattr +a test.txt 限制root 修改和删除文件,但是可以追加文件内容j

访问控制列表ACL: 

        出了文件的所有者,所属组和其他人,可以对更多的用户设置权限

acl生效顺序:
        所有者,自定义用户,所属组,自定义组,其他人

命令:
        setfacl 可设置ACL权限
        getfacl 课查看设置的acl权限
        setfacl -b file.txt 清除所有acl权限
        getfacl file.txt |setfacl --set-file-- file2.txt  将file.tx 的alc权限给file2
        setfacl -m u:wang:rw- file.txt  给用户wang 加acl
        setfacl -m g:admins:rw- file.tx 给admins组加acl权限
        setfacl -x u:wang:rw- file1.txt  删除用户wang 的acl权限
        setfacl -R u:wang:rw- dir 递归给文件夹,给里面文件加wang的acl权限
        setfacl -m o:rw- file.txt 给文件其他人设置acl权限        
        setfacl -m m:rw- file.txt 给文件所有者/所有组 设置最大权限

hexdump -C test.txt

文本处理工具与正则表达式:

vim 
扩展命令:
        基本命令:
        :x 保存退出
        :wq 保存退出
        :w fi1.txt 另存为
        :q 退出
        :q! 不存磁盘退出,及更改信息不保存
        :r file1.txt 将file1 文件内容读取到当前文件中
        :!command  可以在不退出当前文件的情况下,执行命令
        :r!command 将命令的执行结果读入当前文件

        地址定界:
        :start_pos,end_pos cmd 
        . 表示当前行
        $最后一行
        .,$-1 当前行到倒数第二行
        % 全文
        cmd可以用:
        d 删除
        y 赋值
        w file 将范围内的行另存到指定文件中
        r file 在指定位置插入指定文件所有内容
        s/find/替换内容/修饰符    查找并替换
        s@find@替换内容@修饰符  查找并替换
        set nu  可以显示行数
        set paste 粘贴保留原文格式
        set ai 自动缩进
        set noai 禁止自动缩进
        set list 启用显示Tab ^| 和换行符 和$显示 set nolist 禁用
        set hlsearch 启用高亮搜索  set nohlsearch /nohl禁用
        set ff=dos/unix 设置文本格式
        set expandtab 设置空格代替tab 简写set et
        set ts=4 指定4个空格代替tab
        set cul 这只光标所在行的表示先
        set textw

命令模式:

cat -a a.txt 可以看到文件内的不可见字符,比如空格
cat 不能看二进制文本
cat -n ax.txt 可以显示行号 ,空行也会显示行号
nl abc.txt 也可以显示行号,跳过空行,只显示有数据的行号
seq 3 1 7 从3开始,步长为1,结束为7,默认开始值1,步长为1
tac a.txt 可以将内容倒过来
rev 可以将每一行的内容倒过来
more -d 分页显示,有退出提示
less 分页查看 支持/find 搜索 /往下搜,?往上搜 q退出
head 显示文件的头,默认前10行
head -n 3 test.txt 显示前3行 (n可以省略)
head -n -3 test.txt 倒数三行以前的
head -c 3 取前3个字节(一个汉字的字节是3)

问题:创建十个账号,密码随机,如何实现?
答案:cat /dev/urandom | tr -dc '[:alnum:]' | head -c12 取随机数,字母和数字,前12个字节

tail -n -3  或者  tail -3  或者 tail -n3  取尾部后3行
tail -n +3 取除前3行以外的剩下行
tail -f test.txt 实时跟踪文件内容的变化,并立刻把新增内容打印到屏幕上。


df 可以查看磁盘的占用情况
cut -d: -f1,2 /etc/passwd  按照:分割,取第1,2 列的数据
cut -c44-46 删除前43行的字节,留下44 45 46三个字节
tr -d ":" 删除所有冒号,tr 命令不接受文件名作为参数,只能用重定向< 或者管道
        cat /etc/passwd |tr -d ":"
        tr -d ":" </etc/passwd 

tr -s ' ' 重复压缩空格,把连续的多个空格,压缩成一个空格
        ll | tr -s " "

paste a.txt b.txt 将同一行的数据合并在一行
paste -d" " a.txt b.txt  用空格隔开同一行的数据
paste -s -d" "  a.txt b.txt 将多行数据转化成一行,用空格隔开

问题:计算1到10加法,命令可以如何写?
答案:seq 10 | paste -s -d+ |bc

wc  用于统计文本的总行数,单词总数,字节总数,字符总数
wc -l  只显示行数
wc -w 只显示单词总数
wc -c 字节总数
wc-m 字符总数
wc -L  显示文本中最长行的长度

yum provides 文件

uniq -c 可以合并连续重复的数据,显示出合并数据的总个数
uniq -u 只显示不重复的行
uniq -d 只显示重复的行

sort 默认按字符串、从小到大排序
sort -nr 按数字、从大到小倒序排序

问题:如何查看一个网址访问日志中,最频繁的前10个ip地址
答案:cut -d " " -f1 test.log |sort|uniq -c |sort -nr| head

问题:如何找到两个文件重复的行?以及两个文件不重复的行?
答案:cat f1.txt f2.txt | sort |uniq -d      cat f1.txt f2.txt | sort |uniq -u

diff t1.txt t2.txt 显示两个文件的差异
diff -u f1.txt f2.txt > diff.log 统一格式,更易懂
问题:如果有差异文件,和其中一个文件,如何反推出另一个文件内容?
答案:patch -b f1.txt diff.log  :给f1做个备份,反推出的文件内容将覆盖f1原本的文件
vimdiff 可以查看文件不同

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐