Tüm gnome oturumu için "umask" nasıl ayarlanır?


10

Gnome Kullanımı 3.18. Dosyaları diğer aile üyeleri arasında paylaşıyorum, ancak dağıtımımdaki (umlinux) varsayılan umask 0022. Bu nedenle, oluşturulan her dosya / dizin ortak grubumuz için yazılamaz.

Ben koymak için çalıştı umask 0002içinde /etc/profileama gnome oturum hâlâ kullanıyor 0022. Yine de bir giriş bash kabuğu için çalışıyor.

Ben de bu satırı eklemek için çalıştı /etc/pam.d/system-auth: session required pam_umask.so umask=0002 O ile aynı etkiye sahiptir /etc/profile. denedim

Bir gnome terminali kabuğunda umask'i manuel olarak değiştirirsem, ondan bir uygulama başlatırım, gedit diyelim, o zaman onun tarafından oluşturulan dosyalar istenen izinlere sahip olur. Eğer gedit'i gnome menülerinden başlatırsam, öyle olmaz. Benim mesele gerçekten gnome oturumu için umask ayarlamak ve nerede yapacağımı bulamıyorum.

EDIT (Gilles'in yorumuna cevap vermek için): DM olarak gdm 3.18 kullanıyorum. Ayrıca içine pam_umask satır eklemeye çalıştı /etc/pam.d/gdm-launch-environment. Diğer tüm gdm-*dosyalar arasında içermektedir içeren sessiondan system-authdaha fazlasına ihtiyaçları olmamalıdır yüzden, dosyanın. Hiçbir şeyi değiştirmez.

/etc/login.defsiçeren UMASK 077ama aynı zamanda USERGROUPS_ENAB yesbelirlesin hangi umaskbirine 0077ya da 0007kimin birincil grup kullanıcı adı kullanıcıları için.

İçeren tek bir dosya 022içinde Umask için /etcolduğunu /etc/profileama bu benim ilk denemede oldu.

Gelince /etc/Xsession.d, bu dizine sahip değilim. Ayrıca, wayland artık varsayılan görüntüleme sunucusu olduğundan, hala kendim kullansam da umask X başlangıcının bir parçası olarak ayarlanmalıdır.


Hangi ekran yöneticisini kullanıyorsunuz? (Kullanıcı adınızı ve şifrenizi girdiğiniz program budur.) Gdm, lightdm, ince, xdm, kdm,…? Arch ve DM'nizin nasıl ayarlandığına bağlı olarak, içine bir dosya /etc/Xsession.dveya farklı bir dosya eklemeyi deneyin /etc/pam.d(Bu sistem genelinde ayarlamak istediğinizi varsayıyorum). Ya da belki /etc/login.defs.
Gilles 'SO- kötü olmayı bırak'

İki cevap geçerli ttyveya sshoturum açma için geçerlidir ve temel olarak aynıdır (gerçekten pam_umask). Gnome oturumumla çalışmıyorlar. Bu yüzden kimseye ödül veremem. Bunun archlinux'daki Xorg'daki gnome'a ​​özgü olup olmadığını bilmiyorum. Biraz zamanım olduğunda diğer dağılımlarla test edeceğim.
Christophe Drevet-Droguet

1
Archlinux forumunda sorunu tedavi eden benzer bir konu var: bbs.archlinux.org/viewtopic.php?id=207753 Gdm'de bir hata gibi görünüyor ...

İzinleri kontrol etmenin çok daha iyi bir yolu olan ACL'leri kullandım. Varsayılan daha güvenli izinler maskesini değiştirmenize gerek yoktur.
Christophe Drevet-Droguet

Yanıtlar:


6

Bazı Gnome uygulamaları tarafından başlatılır systemd --user, bu durumda umask, pd_umask0022 için yapılandırılan değere bakılmaksızın systemd tarafından ayarlanır . Herhangi bir geçici çözümün farkında değilim, ancak systemd github sorun izleyicide bir sorun açtım . Bu sorun Gnome bugzilla'da da rapor edilmektedir .

Umask set using pam_umask, başlatılmayan uygulamalar için beklendiği gibi çalışıyor systemd --user.

 Etkilenen tüm uygulamalara sistemd hizmeti geçersiz kılmaları yerleştirmek için Ubuntu bugzilla'da bir çözüm önerilmektedir .


Bunu kendiniz araştırmak için

Sisteminizde çalışan işlemleri aşağıdakileri kullanarak bir ağaç biçiminde (üst / alt işlemler) listeleyebilirsiniz:

pstree -Tapu

Şunlar için PID bulun : (1) oturumunuzun systemd --user örneği ; (2) bir uygulaması, başlattığı gibi çocuk işlemi olarak gösterir gedit gibi, systemd --user ; ve (3) oturumunuzda systemduser tarafından başlatılmayan bir işlem .

Procfs'de bildirilen umasks'i karşılaştırın :

grep Umask /proc/<pid>/status

systemd user kendisi (1) ve işlemler olup bu tarafından başlatılan (3) doğru olmalıdır izin maskesini ile ayarlandı pam_umask . Systemd --user (2) tarafından başlatılan işlemler umask olacaktır 0022.


3

Sorun Sebasth tarafından dile getiriliyor. Birçok şey denedim, ancak sonra dbus (kullanıcı başına) UMask üzerine yazma içeren bir geçici çözüm buldum:

$ systemctl --user edit dbus

Açılan dosyaya şunu yazın:

[Service]
UMask=002 # This is the umask I want to use

Dosya .config / systemd / user / dbus.service.d / override.conf dosyasına kaydedilir ve dbus tarafından başlatıldığı için sistemd - kullanıcısından devralındığını düşündüğüm dbus varsayılan umaskını geçersiz kılar. Sadece çıkış yapın ve tekrar giriş yapın ve gnome uygulamaları belirtilen umask'ı kullanmalıdır. Sadece bir çözüm, ama benim için çalışıyor.


2

Bunun yerine , bu kullanıcı ve grubun klasörleri paylaşmanın klasik unix yolu ile aynı izinlere sahip umaskolması usergroupsseçeneğini kullanabilirsiniz pam_umask.

# /etc/pam.d/login or
# /etc/pam.d/common-session or system-auth
session optional pam_umask.so usergroups

1
Kullanıcı kök değilse ve kullanıcı adı birincil grup adıyla aynıysa , umask grubu bitleri sahip bitleriyle aynı olacak şekilde ayarlanır (örnekler: 022 -> 002, 077 -> 007).
Christophe Drevet-Droguet

Birincil grubu paylaşım grubu olarak kullanıyorum. Kullanıcı gruplarında, dosyalar varsayılan olarak bu kullanıcı grubuyla oluşturulur ve diğer kullanıcılar tarafından düzenlenemez.
Christophe Drevet-Droguet

1
Yine de bir yol görüyorum: Kullanıcı grupları ve ortak bir ikincil grup kullanabilir ve sonra paylaşılan ağaçta, bu ortak grubu oluşturulan tüm dosya ve klasörler üzerinde zorlamak için bir "set grubu" bit ekleyin. Her neyse, daha sonra bilgisayarımda deneyeceğim. Gnome'un bununla ilgileneceğinden emin değilim, çünkü tty seansları için ne olursa olsun, her zaman 0022'yi bir umask olarak alır.
Christophe Drevet-Droguet

1

Sistem çapında varsayılan umask'ı ayarlamak için, ilk etapta etkinleştirmeniz gerekir;

http://manpages.debian.org/cgi-bin/man.cgi?query=pam_umask&sektion=8

Yukarıdaki bağlantı debian ve ubuntu içindir, ancak diğer tüm linux sistemleri için aynıdır.

Umask'ı etkinleştirmek için (zaten yerinde olabilir) aşağıdakilere bir satır eklemeniz gerekir /etc/pam.d/common-session:

session optional pam_umask.so

Etkinleştirildikten sonra şu şekilde ayarlayabilirsiniz:

/etc/login.defs

Bu dosyayı bulduğunuzu görüyorum, böylece tek yapmanız gereken ayarlamak:

# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK           077

Ve onu UMASK olarak 0002'ye ya da ne istersen ayarla.

Bu, sistem çapında varsayılan değeri ayarlayacaktır, yani .profile veya .bashrc öğelerinde başka şekilde ayarlanmadığı sürece tüm kullanıcıların umask'ı oradan alması gerekir.


Cevabınız için teşekkür ederim. Bunu denemek zorunda kalacağım. Ben bu iyimser değilim çünkü zaten bir satır içi parametre "umask = 0002" ile bu PAM modülünü denedim ve işe yaramadı (Gnome için olsa da, diğer giriş kabukları için işe yaradı). Önerinizi deneyeceğim.
Christophe Drevet-Droguet

pam modülünü sistem
yetkisi için

3
Bu sadece dosya adlarının dağıtımıyla ilgili bir mesele. Debian'ın common-*ortak ayarlar için kullanıldığını biliyorum . Arch, RedHat olarak bunun için bir system-authdosya kullanır . Her neyse, beklediğiniz gibi session optional pam_umask.sove UMASK 002içine öneri denedim ve /etc/login.defsbeklediğim gibi pam_umask.so umask=0002, bir tty loginoturumu (veya SSH aracılığıyla) için çalıştı ama Gnome 0022her zamanki gibi bir umask oluşturdu. Gnome dahili bir umask ayarı kullanmalı veya archlinux bir tane kullanıyor… Sorunun da ortaya çıkıp çıkmadığını görmek için başka bir dağıtım deneyeceğim.
Christophe Drevet-Droguet

1

Giriş oturumu için: eklemek umask 0002için sizin $HOME/.profile(veya /etc/profile).

Gnome oturum için: eklemek umask 0002için sizin$HOME/.gnomerc


1

DÜZENLEME: gnome oturumunun umask ayarlamak için systemd almak için aşağıdaki satırları ile /etc/systemd/system/display-manager.service.d/ altında bir umask.conf dosyası oluşturdum:


[Service]
UMask=0002

Makineyi yeniden başlattıktan sonra, bu işlem altındaki tüm işlemlerin user.sliceistediğiniz umask ile uyumlu olmasını sağlar. Oturumu kapatmak, değişikliklerin gerçekleşmesi için yeterli değildi, bu yüzden işlem umask'leri üzerinde test yapmadan önce makinenizi yeniden başlatmanızı tavsiye ederim.

Info Ek Bilgi:

  • İşletim Sistemi: CentOS7.4
  • DE: Gnome3

3
Çalışıyorsa, /etc/systemd/system/gdm.service.d/umask.confyalnızca içeren gibi bir dosya [Service]\nUMask=0002yeterli olmalıdır.
Christophe Drevet-Droguet

Ve gerçekten de öyle! Sadece orada test ettim. / etc / systemd / system / klasörüm gdm.service için bir symlink içeriyor, bu yüzden bir display-manager.service.d / umask.conf oluşturdum ve satırı ekledim, bu mükemmel çalıştı, dahil etmek için cevabı güncelleyecek. you @ ChristopheDrevet-Droguet
jamalm

0

Sadece pam_umaskmanajların umaskınızın nereden geldiğini anlamanıza yardımcı olacak oldukça iyi bilgiler sağladığını eklemek istedim . özellikle:

pam_umask, geçerli ortamın dosya modu oluşturma maskesini ayarlamak için bir PAM modülüdür. Umask, yeni oluşturulan dosyalara atanan varsayılan izinleri etkiler.

PAM modülü aşağıdaki yerlerden umask değerini aşağıdaki sırayla almaya çalışır:

·   umask= argument
·   umask= entry of the users GECOS field
·   pri= entry of the users GECOS field
·   ulimit= entry of the users GECOS field
·   UMASK= entry from /etc/default/login
·   UMASK entry from /etc/login.defs

Birinin belirttiği gibi, bunu common-sessiondizindeki dosyada ayarlamanız gerekir /etc/pam.d.

Pam kullanmayan girişlerin (umaskını kullanan gettyveya loginkullanacak olanlar gibi) unutmayın login.defs.


0

Gnome ile Fedora 29 yüklendiğinde, Gnome başlatıcısından başlatılan programların 0022 gibi diğer okunabilir dosyaları bıraktığını gördüm. Pam, yukarıda belirtildiği gibi /etc/login.defs dosyasını etkisiz hale getiriyor. Ancak, maskeyi orada düzenlemek, 0077, Gnome'un davranışını değiştirmedi. Ayrıca / etc / profile düzenlemek ve / etc / bashrc - her ikisi de geri 0022 için ayar vardı.

Fedora'nın bunun için bir yeri olsaydı iyi olurdu, ancak / etc / profile ve / etc / bashrc'deki girişler, 200'ün üzerinde veya altında kimliğe sahip kullanıcılar için maskeyi farklı ayarladı, bu yüzden bir maske herkese uymuyor gibi görünüyor.

Bu şimdilik bir çözüm olsa da, gnome kullanıcısı, gnome başlatıcısından çalışan uygulamalara uygulandığı için kendi umask'ını ayarlamanın hiçbir yolu olmadığından, sorun tamamen çözülmemiştir. Gnome'un bu umask için bir yapılandırma seçeneği olması gerekir. (Belki öyle, ama bulamadım.)


0

En azından Fedora 31'de geçici bir çözüm var:

sudo vi /etc/profile.d/umask.sh
umask <your_umask>

sudo vi /etc/login.defs
UMASK <your_umask>

sudo vi /usr/local/bin/systemd-user
/usr/lib/systemd/systemd --user

sudo chmod a+x /usr/local/bin/systemd-user

sudo vi /usr/lib/systemd/system/user@.service
ExecStart=-/usr/local/bin/systemd-user
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.