sudo和chmod命令

piaoxue888 2023-3-1 703

一、sudo命令可以允许当前普通用户使用root管理员权限进行操作而无需root登录


二、chmod修改档案权限

Linux/Unix 的档案调用权限分为三级 : 档案拥有者u、群组g、其他o   【任何人a】

r=4(读取)、w=2(修改)、x=1(执行)

+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限

rwx=4+2+1=7、r-x=4+1=5、--x=1、---=0

1、chmod <abc> file

chmod a=rwx file 和 chmod 777 file 效果相同

chmod ug=rwx,o=x file 和 chmod 771 file 效果相同

chmod -R a+r *  将目前目录下的所有档案与子目录皆设为任何人可读取 

chmod ug+w,o-w file 档案拥有者和群组可写,其他不可写

2、chmod <sabc> file

suid=4(映射到user,占据属主的执行权限位)、sgid=2(映射到group, 占据group的执行权限位)、sticky=1(映射到other, 占据ohter的执行权限位)

suid4:当一个设置了SUID 位的可执行文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。如果所有者是 root 的话,那么执行人就有超级用户的特权了。(对文件进行操作,eg:修改密码的时候除了root用户可以修改密码,普通用户可以修改密码,原因就是因为采用了SUID,普通用户以root用户的权限来执行修改密码的操作)4755-rwsr-xr-x

sgid2:当一个设置了SGID 位的可执行文件运行时,该文件将具有所属组的特权, 任意存取整个组所能使用的系统资源。若一个目录设置了SGID,则所有被复制到这个目录下的文件, 其所属的组都会被重设为和这个目录一样,除非在复制文件时加上-p (preserve,保留文件属性)的参数,才能保留原来所属的群组设置。(对文件夹进行操作,将SUID的s放到文件所在的用户组X位置上的话,就是SGID)2755-rwxr-sr-x

sticky Bit(SBIT)1:这个就是针对other来设置的了,和上面两个一样,只是功能不同而已。eg:最具有代表的就是/tmp目录,任何人都可以在/tmp内增加、修改文件(因为权限全是rwx),但仅有该文件/目录建立者与 root能够删除自己的目录或文件。(当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。)1755-rwxr-xr-t

对一个文件设置了sticky-bit之后,尽管其他用户有写权限, 也必须由属主执行删除、移动等操作。

对一个目录设置了sticky-bit之后,存放在该目录的文件仅准许其属主执行删除、 移动等操作。


chmod 4755 file 可使此程序具有root的权限,其中附加权限值4设置suid权限

chmod 6xxx file 同时映射到user和group,占据属主和group的执行权限位

chmod 0xxx file 取消suid和sgid权限

注:setuid位的设立是有风险的!如果某个普通进程执行一个设置了setuid位,且所有者是“root”的文件,立刻具有了超级用户的权利,万一该程序有BUG,就留下了被人入侵系统的可能。因此,把文件按性质分类,修改组标识号,最后再设置setgid位来达到目的是一个不错的办法。


三、chown改变档案拥有者

指令名称 : chown

使用权限 : root

使用方式 : chown [-cfhvR] [--help] [--version] user[:group] file...


将档案 linuxeye.css 的拥有者设为 linuxeye,群体的使用者 www

chown linuxeye.www linuxeye.css (linuxeye和www直接可以是点号.或者冒号:


chown -R www:www /home/wwwroot/*

解释:-R递归处理所有文件和文件夹,第一个www代表文件的拥有者名称,第二个www代表所属群组名称

最新回复 (1)
  • piaoxue888 2023-3-1
    引用 2
    linux定期检查suid或者sgid权限的文件

     linux系统中具有suid权限的文件,让人又爱又恨.suid带来的好处是可以在某些时候可以让user执行某些只能root执行的文件(如:passwd,ping,mount等),坏处就是万一这个suid的管理上有漏洞,就容易被有心人士利用,并控制主机.其实利用suid来提权,来放后门控制linux主机,在黑客界已经不是秘密,网上随便搜就能够搜到几篇文章,今天这里不讲怎么利用suid来攻击,只讲下怎么检查系统中的suid文件.
    检查命令如下:
    1        find / -perm +4000 -user root -type f -print
    2        find / -perm +2000 -group root -type f -print
    当然你也可以用下面的命令:
    1        find / -uid 0 –perm -4000 –print
    2        find / -type f -perm +6000
    3        find / -path '/proc' -prune -or -perm -u+s -exec ls -l {} \;
    以上这些命令都可以帮你检查,如果想定时检查,那么我推授下面的2个shell脚本,但这个有个小问题就是必须要你在新装的系统上先执行这2个命令:
    1        find / -path '/proc' -prune -or -perm -u+s -exec ls -l {} \; > /tmp/suidlist-init
    2        find /  -type f -perm +6000 > /etc/sfilelist
    然后才能定时使用这2个脚本:
    cat /root/soft_shell/check-suid.sh
    1        #!/bin/bash
    2        OLD_LIST=/etc/sfilelist
    3        for i in `find / -type f -perm +6000`
    4        do
    5                grep -F "$i" $OLD_LIST >/dev/null
    6                [ $? -ne 0 ] && ls -lh $i
    7        done
    cat /root/soft_shell/checksuid.sh
    1        #!/bin/bash
    2        LOGFILE="/tmp/suidlist-`date +%Y-%m-%d`"
    3        RESULTFILE="/tmp/suid_check_result-`date +%Y-%m-%d`"
    4         
    5        find / -path '/proc' -prune -or -perm -u+s -exec ls -l {} \; > $LOGFILE
    6        diff /tmp/suidlist-init "$LOGFILE" > $RESULTFILE
    7         
    8        mutt -s "SUID CHECK RESULT" root < $RESULTFILE
    然后定时计划里加入:
    crontab -e
    0 3 * * * /root/soft_shell/checksuid.sh
    或者
    0 3 * * * /root/soft_shell/check-suid.sh

    这样就可以定时检查系统中suid文件了.
返回
发新帖