debian: root dışındaki tüm kullanıcılar için izin verilmedi


1

Bugün bazı kullanıcı ayarlarımı ve / veya izinlerimi mahvedebilecek bir bash betiği yazdım. Şimdi canlı sistemimdeki senaryoyu test etmenin oldukça aptalca olduğunu biliyorum;).

Ne çalışmıyor Kökten başka bir kullanıcı olarak çalışan her işlem (postfix, ftp, dovecot, etc).

EDIT: Klasör yapı, sahipler ve izinler durumunda çeşitlidir. Kök dir seviyesinde bir şey değiştirmişim gibi görünmüyor. Ayrıca yeni eklenen bir kullanıcı olarak giriş yapamıyorum veya bir şey çalıştıramıyorum (aşağıdaki teste bakın). proftpd log bana gösterirUnable to open password file /etc/passwd for reading: Permission denied

su testi

Cannot execute /bin/bash: Permission denied

ls-l

    drwxrwxr-x 23 root root 4096 Aug 15 15:26 /
   drwxr-xr-x  90 root root  4096 Aug 15 16:38 etc
    -rw-rw-r-- 1 root root 1971 Aug 15 16:25 /etc/passwd
    -rw-r----- 1 root shadow 2151 Aug 15 16:25 /etc/shadow
    drwxrwxr-x   2 root root  4096 Aug 15 16:38 bin
    -rwxr-xr-x 1 root root 941252 Sep 25  2014 /bin/bash

Senaryo

    #!/bin/bash
path="/var/www"
if [ $(id -u) -eq 0 ]; then
       echo "Enter directory name"
       read dirname
       pathdir="$path/$dirname"
       echo $pathdir
           echo "File doesn't exist. Creating now"
               mkdir $pathdir
               mkdir $pathdir/conf
               mkdir $pathdir/docs
               mkdir $pathdir/logs
               mkdir $pathdir/tmp
               mkdir $pathdir/php-fcgi

           echo "Folder structure created"

       read -p "Enter username : " username
       read -s -p "Enter password : " password
       egrep "^$username" /etc/passwd >/dev/null
       if [ $? -eq 0 ]; then
               echo "$username exists!"
               exit 1
       else
               pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
               useradd -d $pathdir -p $pass $username
               [ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
       fi
adduser www-data $username
chown root:$user $pathdir
chmod 750 $pathdir
chown $username:$username $pathdir/*
chmod 750 $pathdir/*
confdir=$pathdir/conf
chmod 550 $confdir
cp ./php.ini $confdir
sed -i -e 's#;open_basedir =#open_basedir = '$pathdir'/docs/:'$pathdir'/tmp/#g' $confdir/php.ini
sed -i -e 's#;upload_tmp_dir =#upload_tmp_dir = '$pathdir'/tmp/#g' $confdir/php.ini
sed -i -e 's#;session.save_path =#session.save_path = '$pathdir'/tmp/#g' $confdir/php.ini
chown $username:$username $confdir/php.ini
chmod 440 $confdir/php.ini
generate php-fcgi-starter
cat > $pathdir/php-fcgi/php-fcgi-starter << EOF
#!/bin/sh
PHPRC="${confdir}/"
export PHPRC
export TMPDIR=${pathdir}/tmp
exec /usr/bin/php5-cgi
EOF
chmod 750 $pathdir/php-fcgi/php-fcgi-starter
chattr +i -V $pathdir/php-fcgi/php-fcgi-starter
generate apache vhost
echo "Domain:"
read domain
cat > /etc/apache2/sites-available/$domain << EOF
<VirtualHost *:80>
   ServerAdmin webmaster@mydomain.org
   ServerName ${domain}
   ServerAlias www.${domain}
   SuexecUserGroup ${username} ${username}
   AddHandler fcgid-script .php
   DocumentRoot "${pathdir}/docs"
   DirectoryIndex index.htm index.html index.php
<Directory />
   Options FollowSymLinks
   AllowOverride None
</Directory>
<Directory "${pathdir}/docs">
   Options Indexes MultiViews FollowSymLinks +ExecCGI
   FCGIWrapper ${pathdir}/php-fcgi/php-fcgi-starter .php
   Order allow,deny
   allow from all
</Directory>
LogLevel warn
CustomLog ${pathdir}/logs/access.log combined
ServerSignature On
</VirtualHost>
EOF
a2ensite $domain

echo "Ready"

else
        echo "run as root"
        exit 2
fi

Yedeklemeyi geri yükle.
Cyrus

evet, bu sadece basit bir
permisson

Yanıtlar:


0

İzinlerini değiştirdiğinizden şüpheleniyorum /.

Sonucu nedir ls -ld /

Gibi bir şey olmalı

drwxr-x-rx 22 root root 4096 Aug 15 10:29 /

Fakat belki de betiğinizle ilgili bazı izinleri (veya sahibi bile değiştirdiniz) kaldırdınız.

chown root:root /
chmod 755 /

onu normale döndürmek gerekir.


İyi Fikir, ama ne yazık ki nedeni ls -ld / drwxrwxr-x 23 root root 4096 Aug 15 15:26 /hangisi 775'tir (varsayılan değer?)
BavYeti

0

İlk adım olarak, her kullanıcının uygun izinlere sahip olduğundan emin olmak için chown komutunu kullanmayı deneyin, örneğin, chown -R [user] / home / [kullanici dizini].


Sahip ayarlarının çoğu doğru görünüyor. Tabii ki ev dizinleri. VE yeni eklenen kullanıcılar ile aynı hatayı alıyorum. Aslında benim ilk fikrim, senaryoyu dikkatlice çalıştırdım ve kök dizinde bir şeyleri değiştirdim. Ancak alt dizinlerdeki dosyaların sahipleri ve
izinleri çeşitlidir

0

Mea culpa, root dir seviyesinde izin değişikliklerini yaptım. / * Dizinlerinin çoğu, 750 veya-rwxr-x---

Benzer hatalar varsa kontrol edin

ls -ld /
ls -l /

hangi sonuç vermeli

drwxr-xr-x

için

/
/home
/lib
/opt
/var
/mnt
/boot

/ İçindeki izin bayraklarını geri yüklemek için

chmod 0755 /
chmod 0755 /*
chmod 0777 /tmp

Burada ilham aldım: kaynak

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.